

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 트랜잭션별 분해
<a name="decompose-transactions"></a>

분산 시스템에서 애플리케이션은 일반적으로 하나의 비즈니스 트랜잭션을 완료하기 위해 여러 마이크로서비스를 호출해야 합니다. 지연 문제나 2단계 커밋 문제를 방지하려면 트랜잭션을 기반으로 마이크로서비스를 그룹화할 수 있습니다. 이 패턴은 사용자가 응답 시간을 중요하게 생각하고, 모듈을 패키징한 후 서로 다른 모듈이 모놀리스를 생성하지 않는 경우에 적합합니다. 다음 표는 이 패턴 사용의 장단점을 설명합니다.


****  

| 장점 | 단점 | 
| --- | --- | 
|  +  응답 시간이 더 빠릅니다. <br />+  데이터 일관성에 대해 걱정할 필요가 없습니다. <br />+  가용성 개선.  |  +  여러 모듈을 함께 패키징할 수 있으며, 하나의 모놀리스를 생성할 수 있습니다. <br />+  별도의 마이크로서비스가 아닌 단일 마이크로서비스에 여러 기능이 구현되므로 비용과 복잡성이 증가합니다. <br />+  트랜잭션 지향 마이크로서비스는 비즈니스 도메인의 수와 이들 간의 종속성이 높을 경우 성장할 수 있습니다. <br />+  동일한 비즈니스 도메인에 대해 일관되지 않은 버전이 동시에 배포될 수 있습니다.   | 

다음 그림에서 보험 모놀리스는 트랜잭션을 기반으로 여러 마이크로서비스로 분류됩니다.

![트랜잭션별 모놀리스 분해](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/modernization-decomposing-monoliths/images/decompose-by-transaction.png)


보험 시스템에서는 일반적으로 청구 요청이 제출된 후 고객에게 태그가 지정됩니다. 즉, *고객* 마이크로서비스 없이는 청구 서비스가 존재할 수 없습니다. *영업*과 *고객*은 하나의 마이크로서비스 패키지로 패키징되며, 비즈니스 트랜잭션에는 두 마이크로서비스 패키지와의 조정이 필요합니다.