MSA 주요 패턴 중 saga 패턴에 대해 기재해 보려한다.
참조할 수 있는 대표 사이트로 는 https://microservices.io/patterns/data/saga.html 가 있는데,
주요 내용은 아래와 같다.
모놀리식 아키텍처에서 주요 사용했던 방식이 위의 다른 service layer 사이에서 발생되는 transaction 처리 부분을
동일 DB 사용하여 논리적 일관성을 유지하였는데, MSA 방식에서 service domain 영역뿐만아니라 DB 영역까지 분리되면서 타 service 간 Transaction 처리가 필요하게 되었다.
이를 RDBMS 와 Nosql 모든 영역에서 일관성있게 유지는 힘들어 졌기때문에 Data 저장결과적으로 동일한 효과를 볼수 있도록 하는 개발패턴이 필요한 상황인 것이다.
해당 사이트에 소개된 바와 같이 Saga 패턴을 Choreography 기반과 Orchestration 기반으로 나눌수 있는데
Flow는 아래와 같다.
1.Choreography 기반
2. Orchestration 기반
각 service 가 저장된 domain 사이에 message queue 를 활용하여 해당 domain에서는 처리할 수 있는영역만 저장을 하고 그외적인 부분을 Message Broker 를 통해 타 domain에서 처리해야할 부분을 전달한다.
(Order service → Message Broker → Customer Service)
타 domain 내 consumer 내 service(Customer Service) 단에서 처리내역을 작업 후 결과를 다시 queue 를 통해 전달하면
호출 했던 order service 에서 그 결과값을 가지고 처리 완료인지 처리 실패인지를 파악해서 update 한다.
이를 통해 순차적으로 즉시 실행되었던 모놀로식 내 multi tier architecture에서 처리했던 방식보다 대규모 트래픽 처리에 용이 한 장점이 있다.
'Architecture' 카테고리의 다른 글
아키텍처 및 시스템 설계 by CTO (0) | 2024.11.01 |
---|