패스잇
시스템 설계 · 심화

마이크로서비스 아키텍처 환경에서 각 서비스가 독립적인 데이터베이스를 소유하도록 설계할 때 발생할 수 있는 데이터 일관성 및 분산 트랜잭션 문제를 해결하기 위한 데이터베이스 설계 패턴 및 전략(예: Saga 패턴, CQRS, Event Sourcing)을 설명하고, 각 패턴의 장단점과 적용 시나리오를 구체적으로 제시하시오.

힌트 · 마이크로서비스의 데이터 독립성을 유지하면서 비즈니스 트랜잭션의 일관성을 보장하는 것이 핵심입니다. Saga 패턴으로 보상 트랜잭션을 구현하거나, CQRS/Event Sourcing으로 데이터 흐름을 설계하여 해결할 수 있습니다.

Saga 패턴CQRSEvent Sourcing분산 트랜잭션최종적 일관성

모범답안

마이크로서비스 환경에서 데이터 일관성 문제는 중요한 과제입니다. 각 서비스가 독립적인 데이터베이스를 가지므로 분산 트랜잭션이 발생할 수 있기 때문입니다. 이를 해결하기 위한 몇 가지 패턴과 전략이 있습니다.

첫째, Saga 패턴은 긴 비즈니스 트랜잭션을 여러 개의 로컬 트랜잭션으로 나누고, 실패 시 보상 트랜잭션을 통해 롤백하는 방식입니다. 장점은 구현이 비교적 간단하고 각 서비스의 독립성을 유지할 수 있다는 점입니다. 단점은 보상 트랜잭션 구현이 복잡해질 수 있고, 최종적 일관성을 보장한다는 점입니다. 예를 들어, 온라인 쇼핑몰에서 주문 서비스, 결제 서비스, 배송 서비스 간의 트랜잭션을 Saga 패턴으로 관리할 수 있습니다.

둘째, CQRS(Command Query Responsibility Segregation)는 명령(쓰기)과 조회(읽기)를 분리하는 패턴입니다. Event Sourcing과 함께 사용하면 더욱 강력합니다. Event Sourcing은 모든 상태 변경을 이벤트로 기록하고, 이를 통해 현재 상태를 재구성합니다. 장점은 데이터 변경 이력을 추적할 수 있고, 읽기 성능을 향상시킬 수 있다는 점입니다. 단점은 복잡도가 높고, 이벤트 저장소 구축 및 관리가 필요하다는 점입니다. 예를 들어, 은행 계좌 시스템에서 계좌 잔액 변경 이력을 이벤트로 저장하고, 필요에 따라 잔액을 재구성할 수 있습니다.

어떤 패턴을 선택할지는 시스템의 복잡도, 성능 요구사항, 그리고 개발팀의 숙련도에 따라 달라집니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 데이터베이스 설계 면접 질문

← 데이터베이스 설계 면접 질문 전체 보기