본문 바로가기

MSA

(2)
[MSA] MSA 구조에서의 SAGA 패턴과 분산 트랜잭션 서론지난 글에서는 모놀리식 서비스를 msa 구조로 바꿔 독립적인 서비스들로 바꾸고, 서비스간 통신을 kafka를 통한 비동기 이벤트 통신으로 하였다. 하지만, MSA 환경에서 서비스 간의 데이터 일관성을 보장하는 것은 어려운 문제다.특히 여러 서비스에 각각 다른 데이터베이스가 존재하며 트랜잭션을 유지해야하는 상황에서 ACID 원칙을 지키는 것은 쉽지 않다. 이러한 기술적 문제를 해결하기 위해 SAGA 패턴을 적용하여 Kafka 기반의 분산 트랜잭션을 구현하는 것을 목표로 하여, 트랜잭션 실패시 롤백을 구현해보려고 한다. SAGA 패턴Saga Pattern은 마이크로 서비스에서 데이터 일관성을 관리하는 방법이다.각 서비스는 로컬 트랜잭션을 가지고 있으며, 해당 서비스 데이터를 업데이트하며 메시지 또는 이벤..
[MSA] CGV 예매 서비스 MSA로의 변경 - 1 서론최근에 만든 CGV 대규모 트래픽 대응 예매 서비스에서 Kafka가 쓰였지만, 서비스를 분리하지 않고 한 어플리케이션에 모두 구현 했다. 사실상 kafka 이벤트 기반 아키텍쳐와 부하 분산의 이점을 제대로 활용하지 못한 것이다.(프로젝트 기한이 정해져있고, 개발 영역을 보지않고 인프라 영역만 평가 요소가 들어가기 때문에 급하게 만들긴 했다) 대개 Kafka는 MSA 구조에서 각 서비스들을 연결하기 위한 이벤트 메시지 큐로써 활용되기에, 모놀로그 식으로 구현된 서비스를 MSA로 바꿔보고 싶었다. 우선 이번 글에서는 비지니스를 분리해 서비스들의 연결을 카프카의 메시지로 처리하고, 스프링에서 제공하는 MSA 라이브러리를 통해 아키텍처를 구성하는 것을 목적으로 한다. 서비스 분리 현재 ERD는 다음과 같다..