
240
2
부
구현
6.36.3
분산 트랜잭션 - 그냥 안 된다고 하라 분산 트랜잭션 - 그냥 안 된다고 하라
지금까지 설명한 모든 이유를 고려하면, 필자는 마이크로서비스 전반에 걸친 상태 변화를 조정
하는
2
단계 커밋 같은 분산 트랜잭션은 피해야 한다고 강력히 제안한다. 그렇다면 대안은 무엇
일까?
첫 번째 선택지는 처음부터 데이터를 분리하지 않는 방법이다. 정말 원자적이고 일관된 방식으
로 관리하려는 상태 조각이 있고
ACID
스타일의 트랜잭션 없이 이런 특성
characteristics
을 현명하
게 얻는 방법을 찾지 못할 경우, 해당 상태를 단일 데이터베이스에 남겨두고 단일 서비스 (또는
모놀리스)에서 해당 상태를 관리하는 기능도 그대로 남겨두자. 모놀리스를 어디서 분할해야
하고 어떤 분해 작업이 쉬울지(또는 어려울지 )를 고민하는 중이라면, 현재 트랜잭션에서 관리
되는 데이터를 분할하는 것이 지금 당장 처리하기에 어렵다고 판단할 수 있다. 따라서 시스템
의 다른 영역부터 작업한 다음, 나중에 다시 이 문제로 돌아오자.
그러나 정말로 이 데이터를 분해해야 하지만, 분산 트랜잭션 관리에 따르는 모든 고통을 원치
않는다면 어떻게 해야 할까? 여러 서비스에서 작업을 수행하면서도 잠금을 피할 수 있는 방법
은 무엇일까? 작업에 몇 분, 며칠, 심지어 몇 달이 걸린다면 ...