데이터 소유권, 경계, 일관성, 동기화, 모듈형 아키텍처 핵심 요소
모듈형 설계의 중요성을 강조하며, 데이터 소유권과 경계 설정을 통해 결합도를 낮추는 방법을 제시함.
데이터 일관성 유지를 위해 Outbox 패턴과 Saga 패턴을 활용하여, 모듈 간의 데이터 동기화를 관리하는 전략을 설명함.
모듈 간의 데이터 공유는 인터페이스를 통해 제한적으로 이루어져야 하며, 데이터 소유권을 명확히 해야 시스템의 유연성을 확보할 수 있다고 강조함.
데이터 소유권과 모듈 경계 설정
모듈 간의 데이터 공유는 전용 인터페이스를 통해 제한적으로 이루어져야 하며, 데이터 소유권을 명확히 해야 한다. 구체적으로, 각 모듈은 자신의 데이터를 소유하고, 다른 모듈은 전용 인터페이스를 통해서만 접근해야 한다. 따라서, 데이터베이스 스키마 변경 시 다른 모듈에 미치는 영향을 최소화하여 시스템의 유지보수성을 높일 수 있다.
Outbox 패턴과 Saga 패턴을 활용한 데이터 동기화
모듈 간의 데이터 일관성을 유지하기 위해 Outbox 패턴과 Saga 패턴을 활용한다. Outbox 패턴은 로컬 트랜잭션 내에서 데이터 변경과 이벤트 발행을 보장하여 원자성을 확보한다. 반면, Saga 패턴은 장기간에 걸쳐 여러 모듈에 걸쳐있는 트랜잭션을 관리하여 분산 트랜잭션 문제를 해결한다. 결과적으로, 시스템의 확장성과 신뢰성을 향상시킨다.
모듈 간 통신 방식 및 트레이드오프
모듈 간 통신 방식은 모노리스와 마이크로서비스 환경에 따라 다르며, 각 방식은 트레이드오프를 가진다. 모노리스에서는 인메모리 메서드 호출을 통해 통신하지만, 마이크로서비스에서는 REST API 또는 메시지 브로커를 사용한다. 따라서, 네트워크 오류, 서비스 중단 등의 문제를 고려하여 API 설계 및 오류 처리 전략을 수립해야 한다. 결과적으로, 시스템의 가용성과 성능을 최적화할 수 있다.