전체 글 (1053) 썸네일형 리스트형 [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 디비에 .. [TIL] Redis Replica와 Cluster 사용 상황 정리 보통 HA(High Availability)를 위해 master - slave 인스턴스를 둔다. 이 때는 클러스터 모드가 아니여도 괜찮고, AWS에서는 최소 7GB 메모리 성능으로 사용할 수 있다.클러스터 모드로 한다면, 여러 노드가 샤딩이 된다. redis key값을 기반으로 slot 개념으로 hashing 된다. 예를 들어 0 - 8196, 8197 - 16382 로 slot이 나뉘어서 key에 따라 slot이 설정되고, slot 범위에 맞게 node로 데이터가 배치된다. • 샤딩 시에도 HA를 위해서 샤딩된 각 노드에 대해 master - slave 구조를 둔다. 만약 클러스터 모드로 처리하면, key-value insert를 할 때 여러 노드에 배치되는 데이터를 한 번에 넣을 수 없다. 따라서 .. Cloud Front, Lambda Edge, 배포 방식 배경 이미지, 영상 등을 처리하는 Lambda 함수를 사용하면서 Lambda@Edge도 함께 처리했다. Lambda@Edge(이하 엣지)는 Cloud Front(CF) 뒤에 있으면서 전 세계 글로벌 엣지 위치에 실제 물리적 리소스가 존재하여 네트워크 홉에 의한 지연 시간을 최소한으로 만들어주는 서비스이다. 또한 CF의 Origin 요청/응답 타이밍에 실행되어 S3 접근 직전/직후를 제어하여 동적인 컨텐츠를 생성하는데 유리하다. ApiGateway, SQS 등 여러 요소들을 사용했으나 이번에는 CF, Edge의 기본 구성과 배포 방식에 대해 정리해놓을려고 한다. ApiGateway게이트웨이로 로 요청이 들어오면 람다가 트리거 될 수 있다. 이를 통해 람다의 함수가 실행되어 s3 등에 저장된 파일에 접근,.. [TIL] Soft Delete hibernate, @SQLRestriction 배경JPA에서 Soft delete 방식을 적용하기 위해 전체 엔티티의 상위 엔티티에 deleted_at 컬럼을 적용하고 상속받는 구조로 만든다. 그러나 이렇게 처리했을 때, 모든 엔티티들을 처리하는 쿼리문에서 deleted_at을 신경써줘야한다는 문제점이 발생한다.@Getter@Setter@MappedSuperclass@SuperBuilder@NoArgsConstructor@AllArgsConstructor@Audited@EntityListeners(AuditingEntityListener.class)public abstract class BaseEntityAbstract implements Serializable { @NotAudited @Column(name = "deleted_at") .. [비공개] Weekly Report - 25/07/14~24/07/20, 1849일차 보호되어 있는 글입니다. Querydsl MultiDataSource 설정 시 유의사항 1. DataSource 설정 방법JPA로 여러 데이터베이스를 참조해야하는 경우, JPA에서 바라보는 데이터베이스를 설정해주는 값, 그에 맞는 트랜잭션 매니저, 엔티티 매니저 설정을 아래처럼 설정해줘야한다. 예를 들어 Abc, Def 도메인에 대해 설정하는 경우 아래처럼 설정한다. @Configuration@EnableTransactionManagement@EnableJpaRepositories( basePackages = "com.project.domain.abc", entityManagerFactoryRef = "abcEntityManagerFactory", transactionManagerRef = "abcTransactionManager")public class AbcDataSou.. [비공개] Weekly Report - 25/07/07~24/07/13, 1842일차 보호되어 있는 글입니다. keycloak service account 설정 방법(ver 26.2.1~) service account service account 방식은 client가 token을 갖고 resource server에 요청하는 방식이 아니라, resource server간 자원을 요청하기 위한 통신을 목적을 갖는다. 이때 keycloak 설정에 대해서 간략히 기록해둔다. keycloak public client 설정보통 아래 그림과 같은 구조로 클라이언트 - 서버 구조를 만들어두고 keycloak을 이용하여 인증한다. resource server를 keycloak client로 등록할 때, public client로 standard flow만 체크하여 OAuth 2.1의 authentication flow가 적용되도록 한다. Service Account 설정: Credential Clien.. 이전 1 2 3 4 ··· 132 다음