235
6
장
워크플로
이 책은
ACID
개념을 자세하고 심도 있게 다루지 않으므로 몇몇 설명은 간단히 정리했다. 이
개념을 좀 더 자세히 살펴보고 싶다면 마틴 클래프만
Martin
Kleppmann
이 저술한 『데이터 중심 애플
리케이션 설계』(위키북스,
2018
)를 읽어보길 바란다. 이어지는 내용에서는 주로 원자성에 집
중한다. 다른 속성들이 중요하지 않다는 말은 아니지만, 원자성은 트랜잭션 경계를 분리할 때
가장 먼저 겪게 될 문제일 가능성이 높다.
6.1.26.1.2
여전히 여전히
ACIDACID
이지만 원자성이 부족한가?이지만 원자성이 부족한가?
마이크로서비스를 분리할 때
ACID
방식의 트랜잭션은 여전히 사용 가능하다는 점을 분명히
밝혀둔다. 예를 들어 마이크로서비스는 자기 데이터베이스에 대한 연산에
ACID
트랜잭션을
자유롭게 사용한다. 그 트랜잭션의 상태 변경 범위는 한 마이크로서비스 내부의 로컬로 국한된
다. [그림
6
-
1
]을 살펴보자. 이 그림에서는 새로운 고객을 뮤직코프에 온보딩
onboarding
하는 것
과 관련된 프로세스를 추적하고 있다. 고객
2346
의 상태 (
Status
)를 보류 중 (
PENDING
)에서
확인 (
VERIFIED
)으로 변경하는 프로세스의 마지막 단계에 왔다. 이제 등록이 완료됐으므로
PendingEnrollments
테이블에서 일치하는 행도 제거하길 원한다. 하나의 데이터베이스를
사용하면 한
ACID
데이터베이스 트랜잭션 범위 내에서 이 작업이 수행된다. 이러한 상태 변경
은 두 상태 모두 변경되거나 ...