모듈러 모놀리식: 모듈 간의 의존성과 통신
모듈 설계는 명확한 기능 단위로 독립성을 최대화하는 것이 핵심이며, 모듈 간 통신 빈도와 방식은 설계에 크게 좌우됩니다.
Clients/APIs 방식은 공유 모듈에 인터페이스를 정의하고, 각 모듈이 이를 구현하여 느슨한 결합을 유지하며 단순한 동기 메서드 호출로 통신합니다. 다만, 트랜잭션 관리와 물리적 분리 시 네트워크 호출로 인한 지연과 신뢰성 문제에 주의해야 합니다.
Application Events는 모듈 간 인메모리 이벤트 발행으로 통신하지만, 단일 데이터베이스 공유를 전제로 하여 모듈 간 의존성이 생길 수 있습니다. 이를 개선한 Outbox Pattern은 이벤트를 데이터베이스에 저장 후 별도 프로세스가 비동기적으로 이벤트를 전파해 데이터베이스 의존성을 제거하고, 중복 수신에 대비한 소비자 설계가 필요합니다.
Background Data Synchronization는 외부 요청 처리 중 모듈 간 호출을 금지하여 각 모듈이 필요한 데이터를 자체적으로 보유하도록 하며, 이벤트 또는 주기적 API 호출로 데이터를 동기화해 모듈의 독립성과 복원력을 높입니다.
결론적으로, 우수한 모듈 설계가 가장 중요하며, 적절한 통신 패턴을 적용하면 모듈형 모놀리식 아키텍처의 유연성과 확장성을 극대화할 수 있습니다. 필요 시 모듈을 독립 서비스로 분리하는 작업도 최소한의 변경으로 가능해집니다.
