끄적/개발끄적

    2PC[Two-Phase-Commit]과 SAGA 패턴

    데이터중심 애플리케이션 설계 9장을 읽은 후, 스터디 자료용 및 공부자료로 찾아보게 되어 기록 현재 배경: MSA에서는 각 서비스별로 DB 인스턴스와 애플리케이션이 분리 관계형으로 맺어진 Entity들은 서로가 다른 인스턴스로 운영되고, 그들의 리소스를 받기 때문에 데이터 일관성 깨짐 이를 위해 개발자들은 MSA에서 분산 트랜잭션 기술을 이용 → 일관성(Concurrency)을 지킬 수 있도록 2PC [Two-Phase Commit] 2단계에 거쳐서 영속하는 작업 (JPA에 있는 영속성 컨텍스트와는 다름) 분산 DB 환경 : 주 DB / 보조 DB 로 분산되어있는 경우가 많음 실제 모놀리틱에서 연결된 메인 DB = Primary DB 이중화된 DB 형태를 가지려면 DB들은 동기화 형태로 되어야 함 Coo..

    면접 준비를 위한 CS + 프로젝트 질문 정리

    프로젝트에 적용된 ES 기반 질문들 프로젝트에서 검색 성능 향상에 무엇을 했나요? A. 검색엔진 프로젝트에서 Elasticsearch를 사용하며 기존 RDB 의 Join 개념을 통해서는 분산환경인 엘라스틱에서 비효율적이었습니다. 따라서 다른 방법을 찾고자 하였고, Elasticsearch 에서의 enrich policy 도입을 통해 역정규화를 진행하여 mapping 하고자 하였습니다. enrich 필드를 사용하여 기존 src 도큐먼트의 필드들을 match_filed로 매핑 후, enrich_field들로 새롭게 필드를 추가하여 원하는 매핑과 빠른 검색 조회속도를 증가시킬 수 있었습니다. 또한 검색의 관련성의 범위가 상황에 따라 달라져야 했습니다. 따라서 search template을 먼저 작성하여 각 상..