MSA의 비지니스 도메인 간에 종속성을 없앨 수 있는 Observer Service Pattern
예를 들어 상품의 상태(재고, 판매상태 등)가 변하면 상품 뿐만 아니라, 검색, 전시, 물류 등 여러 비지니스 로직을 처리해야 하는 경우
-
특정 도메인의 상태 변경으로 인해 타 도메인의 서비스를 연속적으로 호출해야 하는 경우
-
비지니스 복잡도가 증가할수록 상태 변경을 처리하는 로직에서 해야할 일이 많아지고, 소스 코드는 복잡해 지며,
종속성 증가, 트랜잭션 시간 증가, 교착상태 발생(deadlock) 등 다양한 문제가 생긴다.
[도메인에서 상태 변경 처리]
- 도메인 자신의 상태 변경만 처리한 후 메시지 큐에 상태 변경을 등록한다.
- 즉, 자기 자신의 비지니스 로직 처리만 집중하며, 상태 변경에 따른 다른 도메인의 영향 범위 처리는 모두 Message Queue(MQ)에 일임한다.
[Observer 등록]
- 특정 도메인의 상태 변경에 영향을 받는 비지니스가 있으면, MQ에 Observer 등록을 한다.
[Receive Message]
- MQ는 Queue에 들어온 메시지를 각 Observer에게 전송(또는 Observer가 polling) 한다.
- 각 Observer에서 메시지 처리가 완료되면, 메시지 삭제를 위한 신호를 MQ에 보낸다.
위와 같이 Observer Service 패턴을 이용하는 경우 도메인의 종속성(Dependency)을 끊을 수 있으며,
Observer Service 에 메시지를 전송하는 부분을 AOP로 제공하면, 도메인은 비지니스 로직의 처리에 집중할 수 있다.
[주의사항]
- 본 패턴은 비동기 처리가 가능한 비지니스, 즉, 데이터 정합성이 높지 않은 비지니스에 적합할 것임
'프로그래밍 > MSA' 카테고리의 다른 글
MSA의 성공 기준 (0) | 2023.05.19 |
---|---|
SAGA 보상 트랜잭션 (0) | 2023.05.19 |
분산 트랜잭션 관리(Saga Pattern) (0) | 2023.05.19 |
MSA 기술 트렌드 2022 (0) | 2021.12.27 |