본문 바로가기
관리자

전체 글

(1060)
Client Scope, Mapper 설정 정리 보호되어 있는 글입니다.
keycloak B2C 적용 속성값, Organization 정리 보호되어 있는 글입니다.
Keycloak Realm간 권한 매핑 보호되어 있는 글입니다.
아스키 아트(ASCII Art) 특정 테스트 케이스의 경우(특히 시간 관련) 테스트 메서드 내용만 봐서는 이해하기가 힘들다.(아무리 주석을 열심히 달아도…)그래서 이런 경우 아스키 아트를 활용하면 리뷰어나 테스트 코드를 작성하는 작성자에게도 가독성을 크게 향상 시킬 수가 있다. /* * ┌────────────────────────────────────────────────────────────┐ * │ Timeline │ * │ │ * │ 1/20 (today) ..
EKS pod가 AWS에 로그인하는 방법: IRSA, Pod Identity EKS 환경에서 각 pod는 어떻게 AWS 로그인을 하는걸까?pod의 인스턴스 서버상, AWS SDK를 import할 뿐 ACCESS_KEY, SECRET_ACCESS_KEY 등의 값은 환경 변수로 지정하지 않은 상태에서 AWS 호출이 가능함 1. 배경 지식k8s는 기본적으로 Pod에게 권한 정체성(identity)를 부여하기 위해서 ServiceAccount(SA) 라는 것을 만든다. k8s의 deployment를 만들 때 별도로 지정하지 않으면 자동으로 default ServiceAccount를 Pod에 붙여준다. 이 SA는 k8s 내부적으로 서로 인증하기 위해서 사용하는 용도이다. 2. IRSA(IAM Role for ServiceAccount)다만, 여기에 IRSA라는 방식을 적용하면 k8s ..
커넥션 풀, keep alive 및 idle connection timeout enableKeepAlive 처리하여 tcp 레이어에서 서버가 DB 연결을 끊지 않도록 설정함idleTimeout을 5분으로 늘려서 처리하여, 람다가 뜨고 커넥션 풀이 잡힌 뒤 영상 처리가 끝나기 전에 idle connection을 끊어버리지 않도록 처리함만약 너무 많은 커넥션이 걸려서 디비에 한계가 오기 시작하면, RDS Proxy등으로 DB 커넥션 요청 풀이 AWS에서 계산하는 특정 수치를 넘어설 경우, RDS Proxy에서 대기하고 관리할 수 있도록 처리하기도 함 람다는 단일 요청 처리이므로 connectionLimit, maxIdle을 1로 지정하고, 커넥션 풀을 사용하지 않음. 꼭 필요할 때만 커넥션이 잡히도록 static이 아니라 repository layer 접근 직전에 커넥션을 잡는 것도 ..
[TIL] Spring Batch, Scheduling, k8s cronJob spring batch와 k8s cronJob 인프라를 통해 주기적으로 API 요청을 하고 DB 데이터들을 분석하는 기능을 만들었다. 이에 대해 간략하게 나마 정리해둔다. Spring Batch 구조크게 Job -> Step -> Tasklet/Chunk 구조로 작동한다. Job은 최상위 단위이며 하나 이상의 Step으로 구성된다. Spring Batch 라이브러리를 build에 넣고 실행하면 DB상에 Batch 관련 테이블들이 생기는데, 여기서 JOB_EXECUTION 관련된 테이블에 Job 실행 내역들이 기록된다. 실행 시마다 JobInstance가 생성된다. Step은 Job 하위에 있는 단계이다. Tasklet 기반은 파일 삭제, API 호출 등의 단일 작업 단위이며, Chunk는 DB에서 읽고 ..
[TIL] Read and Write, Read Only Database 분리 | Read After Write Consistency Read After Write Consistency(쓰기 직후 읽기 일관성)1개의 DB에 부하가 몰리는 것을 방지하기 위해서 RW(Read and Write), RO(Read Only) DB를 나눠놓는다.조회만 하는 API는 RO에서 처리하도록, create, update, delete가 일어나는 API는 RW에서 처리하도록 한다.그리고 RW -> RO로 자동적으로 Sync가 되도록 한다. 이 때, sync에는 시간이 걸리기 때문에 클라이언트 측에서 write 직후 read를 하면 ro DB에서 생성된 데이터를 찾을 수 없어서 에러가 난다. • ⁃ 이를 방지하기 위해서 Read/Write Pinning | Session Pinning | Master Stickness 등의 용어로 부르는, RW 디비에 ..