더북(TheBook)

마이크로서비스 도입 과정에서 메리와 FTGO 팀원들에게 가장 큰 걸림돌은 ACID 트랜잭션으로 관리해 오던 단일 DB를 ACD 사가로 관리하는 다중 DB 아키텍처로 전환하는 일일 것입니다. 개발자들은 아무래도 단순 명료한 ACID 트랜잭션 모델이 익숙합니다. 그런데 사실 FTGO 같은 모놀리식 애플리케이션도 교과서대로 ACID 트랜잭션을 사용하지 않는 경우가 많습니다. 많은 애플리케이션이 성능을 높이기 위해 하위 트랜잭션 격리 수준을 사용합니다. 은행 계좌 간 송금처럼 중요한 비즈니스 프로세스에 최종 일관성(eventual consistency)을 적용한 경우도 많고, 스타벅스조차 2단계 커밋을 쓰지 않습니다.1

이 장은 마이크로서비스 아키텍처에서 트랜잭션 관리가 어려운 이유를 먼저 알아보고, 기존 분산 트랜잭션 관리 방식을 사용할 수 없는 이유를 설명합니다. 그리고 사가로 데이터 일관성을 유지하는 방법을 살펴본 후, 사가를 편성하는 두 가지 기법을 차례로 소개합니다. 코레오그래피(choreography)는 중앙 제어 장치 없이 참여자(participant)가 각자 서로 이벤트를 교환하는 방식이고, 오케스트레이션(orchestration)은 중앙 제어 장치가 참여자가 해야 할 일을 지시하는 방식입니다.2 사가 간 격리가 되지 않아 발생하는 동시 비정상의 영향을 줄이거나 방지할 수 있는 대책도 알아봅니다. 끝으로 사가 예제 코드를 설명합니다.

 

 


 

2 역주 : 우리말로 옮기면 코레오그래피(choreography)는 안무, 오케스트레이션(orchestration)은 지휘 정도에 해당합니다. 코레오그래피는 춤을 추는 댄서들이 알아서 서로의 동작을 맞추는 칼군무를, 오케스트레이션은 지휘자 한 사람이 전체 악기 연주자를 통솔하는 교향곡 연주 실황을 떠올리면 이 책의 내용을 이해하는 데 도움이 될 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.