Booil Jung

마이크로서비스 아키텍처 해부

마이크로서비스 아키텍처(Microservices Architecture, MSA)가 분산 데이터베이스와 분산 서비스에 기반하는지를 묻는 것은 이 아키텍처 스타일의 핵심을 꿰뚫는 중요한 질문이다. 결론부터 말하자면, 분산된 서비스와 데이터베이스는 MSA의 명백하고 필수적인 특성이지만, 그 자체가 근본적인 원칙은 아니다. 이들은 MSA가 추구하는 더 깊은 철학, 즉 서비스 자율성(Service Autonomy)을 실현하기 위한 필연적인 결과물이다.1

MSA의 진정한 목표는 거대하고 복잡한 애플리케이션을 작고, 자율적인 팀이 독립적으로 개발, 배포, 확장할 수 있는 서비스들의 집합으로 구성하여 비즈니스 민첩성을 극대화하는 데 있다.3 각 팀이 다른 팀의 배포 일정이나 기술 스택에 구애받지 않고 자신들의 서비스를 책임지고 운영할 수 있는 환경을 만드는 것이 핵심이다. 이러한 완전한 자율성을 달성하기 위해서는 각 서비스가 자신만의 코드베이스와 실행 환경을 가져야 하며, 이는 자연스럽게 서비스의 물리적 분산으로 이어진다. 더 나아가, 한 서비스의 데이터베이스 스키마 변경이 다른 서비스에 예기치 않은 장애를 일으키는 것을 방지하려면, 데이터 저장소 역시 서비스별로 독립적으로 소유하고 관리해야만 한다. 이 논리적 귀결이 바로 ‘분산 데이터베이스’라는 특성으로 나타나는 것이다.

따라서 MSA를 단순히 기술적 구성 요소의 분산으로만 이해하는 것은 표면적인 접근에 불과하다. 이 아키텍처의 채택은 기술적 선택을 넘어, 조직의 구조와 문화까지 아우르는 전략적 결정이다. MSA는 팀의 자율성을 기술 아키텍처로 구현하려는 시도이며, 이는 콘웨이의 법칙(Conway’s Law)이 시사하는 바와 같이 조직의 구조가 시스템의 설계에 직접적인 영향을 미친다는 점을 명확히 보여준다.2 MSA를 도입한다는 것은 단순히 애플리케이션을 나누는 것이 아니라, 개발팀의 책임과 권한, 그리고 협업 방식을 근본적으로 재편하는 사회-기술적 패러다임의 전환을 의미한다.9

본 보고서는 이러한 관점에서 출발하여, 사용자의 질문에 대한 심층적인 답변을 제공하고자 한다. 먼저 서비스 자율성의 원칙이 어떻게 분산된 서비스라는 결과를 낳는지 탐구하고(섹션 1), 이것이 다시 데이터 주권이라는 원칙으로 이어져 서비스별 데이터베이스 패턴을 요구하게 되는 과정을 분석할 것이다(섹션 2). 이후, 이러한 분산 구조가 야기하는 필연적인 복잡성, 즉 서비스 간 통신(섹션 3)과 데이터 일관성 유지(섹션 4)라는 거대한 도전 과제들을 해결하기 위해 등장한 핵심 아키텍처 패턴들을 상세히 해부할 것이다. 마지막으로, 이 모든 것을 현실에서 가능하게 하는 현대적인 기술 기반(섹션 5)을 살펴봄으로써, MSA가 단순한 기술적 유행이 아닌, 비즈니스 요구에 대응하기 위한 정교하고 복합적인 아키텍처 전략임을 명확히 밝힐 것이다.

마이크로서비스는 하나의 큰 애플리케이션을 구성하는 작고, 독립적으로 배포 가능한 소프트웨어 단위들의 모음으로 정의된다.10 각 서비스는 특정 비즈니스 기능 또는 역량에 초점을 맞춰 구성되며 10, 자신만의 코드베이스, 데이터, 그리고 종속성을 가진 독립된 개체로 존재한다.10 여기서 가장 중요한 특징은 ‘독립적인 배포 가능성(Independent Deployability)’이다.4 이는 특정 서비스의 변경 사항을 반영하기 위해 전체 애플리케이션을 재배포할 필요 없이 해당 서비스만 독립적으로 빌드, 테스트, 배포할 수 있음을 의미한다.7 이러한 철학은 “한 가지 일을 하되, 제대로 하라(Do one thing and do it well)”는 유닉스 철학과 맥을 같이 한다.8 각 서비스는 다른 서비스의 기능에 영향을 주지 않으면서 개발, 배포, 운영, 확장이 가능해야 하며, 이를 위해 서비스 간 통신은 잘 정의된 API를 통해서만 이루어진다.3

MSA의 가치를 제대로 이해하기 위해서는 그 대척점에 있는 모놀리식(Monolithic) 아키텍처를 먼저 살펴봐야 한다. 모놀리식 아키텍처는 애플리케이션의 모든 구성 요소가 하나의 거대한 코드베이스와 실행 파일로 통합된 전통적인 구조를 의미한다.10

초기 단계의 프로젝트나 소규모 애플리케이션에서는 모놀리식 접근 방식이 매우 효율적이다. 모든 코드가 한곳에 있어 개발이 단순하고, 전체 시스템을 한 번에 테스트하기 용이하며, 단일 결과물을 배포하므로 과정이 직관적이다.16 이러한 이유로 프로토타입 개발이나 새로운 도메인을 탐색하는 초기 단계에서는 모놀리식이 여전히 유효하고 권장되는 방식이다.20

하지만 애플리케이션의 규모가 커지고 복잡성이 증가함에 따라 모놀리식 아키텍처는 여러 가지 심각한 문제에 직면하게 되는데, MSA는 바로 이 문제들을 해결하기 위해 등장했다.

MSA로의 전환에서 가장 중요하고 어려운 과제는 서비스를 어떻게 나눌 것인가, 즉 서비스의 경계(Boundary)를 올바르게 정의하는 것이다.23 경계 설정이 잘못되면 서비스 간의 통신이 과도하게 많아지는 ‘채티(chatty)’한 관계가 형성되거나, 여러 서비스가 하나의 기능을 위해 강하게 결합되어 분산된 모놀리스(Distributed Monolith)라는 최악의 결과를 낳을 수 있다.27

이러한 문제를 해결하기 위한 가장 효과적인 전략적 도구가 바로 도메인 주도 설계(Domain-Driven Design, DDD)이다. DDD는 복잡한 비즈니스 도메인을 이해하고 모델링하는 데 초점을 맞추며, 특히 ‘경계 컨텍스트(Bounded Context)’라는 핵심 개념을 통해 서비스 경계를 식별하는 강력한 가이드라인을 제공한다.28

  1. 경계 컨텍스트에서 시작: 경계 컨텍스트는 특정 도메인 모델이 유효성을 갖는 명시적인 경계를 의미한다. 이상적으로 하나의 마이크로서비스는 하나의 경계 컨텍스트를 넘어서는 안 된다. 이는 각 서비스가 일관된 비즈니스 언어와 모델을 유지하도록 강제하는 역할을 한다.28
  2. 애그리거트(Aggregate)를 통한 서비스 식별: 경계 컨텍스트 내에서 ‘애그리거트’는 함께 변경되고 일관성을 유지해야 하는 관련 객체들의 묶음이다. 애그리거트는 그 자체로 트랜잭션의 경계가 되며, 높은 기능적 응집력을 가지므로 마이크로서비스의 후보로 매우 적합하다.28 예를 들어, 전자상거래 시스템에서 ‘주문(Order)’ 애그리거트는 주문 항목, 배송 정보 등을 포함하며, 이는 ‘주문 서비스’로 구현될 수 있다.
  3. 비기능적 요구사항 고려: DDD를 통한 논리적 경계 설정 외에도, 확장성, 보안, 가용성 요구사항이나 팀의 구조와 같은 비기능적 요소들도 서비스 분리 및 통합에 영향을 미칠 수 있다.28

결론적으로, 성공적인 MSA는 기술적 분리가 아닌, 비즈니스 도메인에 대한 깊은 이해를 바탕으로 한 논리적 분리에서 시작된다. DDD는 이러한 논리적 분리를 위한 체계적인 접근법을 제공함으로써 MSA 설계의 핵심적인 역할을 수행한다.

아래 표는 모놀리식 아키텍처와 마이크로서비스 아키텍처의 핵심적인 차이점을 다각도로 비교하여, 각 아키텍처의 근본적인 트레이드오프를 명확히 보여준다. 이는 아키텍처 선택에 있어 중요한 의사결정의 근거를 제공한다.16

특성 모놀리식 아키텍처 마이크로서비스 아키텍처
아키텍처 구조 단일 통합 단위(Single Unified Unit) 독립적인 서비스들의 집합
데이터베이스 관리 공유 데이터베이스(Shared Database) 서비스별 데이터베이스(Database per Service)
배포 단위 전체 애플리케이션 개별 서비스
확장성 전체 애플리케이션 단위의 수직적 확장 개별 서비스 단위의 수평적 확장
장애 격리 낮음 (단일 장애점이 전체 시스템에 영향) 높음 (개별 서비스 장애가 격리됨)
기술 스택 단일 기술 스택 (Homogeneous) 다양한 기술 스택 혼용 가능 (Polyglot)
개발 속도 초기에는 빠르나, 규모 증가 시 급격히 저하 초기에는 복잡하나, 팀 단위로 확장 시 속도 유지
운영 복잡성 초기에는 낮으나, 규모 증가 시 관리 어려움 처음부터 높음 (분산 시스템 관리 필요)
팀 구조 크고, 상호 의존적인 팀 작고, 자율적인 교차 기능 팀 (Cross-functional)

서비스 자율성을 확보하기 위한 논리적 흐름은 필연적으로 데이터 관리 방식으로 이어진다. 진정한 자율성을 위해서는 각 서비스가 자신의 데이터에 대한 완전한 통제권, 즉 ‘데이터 주권(Data Sovereignty)’을 가져야 한다. 이를 구현하는 핵심적인 아키텍처 패턴이 바로 “서비스당 데이터베이스(Database per Service)” 패턴이다.14

이 패턴의 핵심 규칙은 명확하다: 각 마이크로서비스는 자신만의 영구 데이터 저장소를 소유하고 관리해야 한다.33 다른 서비스는 이 데이터베이스에 직접 접근할 수 없으며, 반드시 데이터를 소유한 서비스가 제공하는 공개 API(Public API)를 통해서만 통신해야 한다.33 이는 데이터베이스를 서비스 구현의 내부적인 세부사항으로 취급함으로써, 완벽한 캡슐화(Encapsulation)와 느슨한 결합(Loose Coupling)을 강제하는 강력한 메커니즘이다.

이 패턴이 반드시 서비스마다 별도의 물리적 데이터베이스 서버를 프로비저닝해야 함을 의미하는 것은 아니다. 비용과 관리 효율성을 고려하여 다음과 같은 여러 수준으로 구현될 수 있다 33:

여러 마이크로서비스가 단일 데이터베이스를 공유하는 것은 MSA 도입 시 흔히 저지르는 치명적인 실수이며, 이는 MSA가 해결하려던 바로 그 문제들을 다시 야기하는 안티패턴(Anti-pattern)이다.

데이터를 분산 관리하는 “서비스당 데이터베이스” 패턴은 중요한 이점을 제공하는데, 바로 폴리글랏 퍼시스턴스의 실현이다.3 이는 각 서비스의 고유한 요구사항과 데이터 특성에 가장 적합한 데이터 저장 기술을 자유롭게 선택할 수 있음을 의미한다.

예를 들어, 다음과 같은 구성이 가능하다 33:

이처럼 각 서비스가 최적의 도구를 선택함으로써 전체 시스템의 성능과 개발 효율성을 극대화할 수 있다. 이는 단일 데이터베이스 기술에 모든 것을 맞춰야 하는 모놀리식 아키텍처에서는 불가능한 유연성이다.

“서비스당 데이터베이스” 패턴은 서비스 간의 결합 문제를 효과적으로 해결하지만, 동시에 MSA에서 가장 어렵고 본질적인 도전 과제를 만들어낸다: 바로 여러 독립된 데이터베이스에 걸쳐 데이터의 일관성을 유지하는 문제이다.7

고객이 주문을 생성하는 비즈니스 트랜잭션을 생각해보자. 이 과정은 ‘주문 서비스’에서 주문을 생성하고, ‘고객 서비스’에서 고객의 신용도를 확인하며, ‘재고 서비스’에서 상품 재고를 차감하는 등 여러 서비스에 걸쳐 있다. 모놀리식 환경에서는 이 모든 과정을 단일 데이터베이스의 원자적(Atomic) ACID 트랜잭션으로 묶어 간단히 처리할 수 있었다. 하지만 MSA에서는 각 서비스가 별도의 데이터베이스를 가지므로, 전통적인 방식의 트랜잭션은 더 이상 작동하지 않는다.35

이처럼 MSA는 아키텍처 패턴의 연쇄 반응을 일으킨다. ‘서비스 자율성’을 위해 ‘서비스당 데이터베이스’ 패턴을 선택하는 순간, 우리는 ‘분산 트랜잭션 관리’라는 새로운 문제를 해결해야만 하는 상황에 직면한다. 이 문제를 해결하지 못하면 시스템의 데이터는 무결성을 잃고 신뢰할 수 없게 된다. 이 중대한 과제를 해결하기 위한 아키텍처 패턴들이 바로 다음 섹션들에서 다룰 사가(Saga) 패턴과 이벤트 소싱(Event Sourcing)이다. 아키텍트는 단순히 “데이터베이스를 분산하자”고 결정하는 것이 아니라, 그 결정이 필연적으로 가져오는 사가 패턴, 이벤트 버스, 최종적 일관성 관리 등의 후속적인 복잡성과 비용까지 모두 고려하고 계획해야 한다. 이는 MSA가 독립적인 선택들의 메뉴가 아니라, 긴밀하게 연결된 패턴들의 시스템임을 명확히 보여준다.

마이크로서비스 아키텍처는 본질적으로 분산 시스템이다. 모놀리식 아키텍처에서 컴포넌트들이 프로세스 내부의 함수 호출(in-process function call)을 통해 빠르고 안정적으로 통신하는 것과 달리, 마이크로서비스들은 네트워크를 통해 상호작용해야 한다.23 이로 인해 네트워크 지연 시간(latency)과 부분적 장애(partial failure)라는 새로운 변수가 시스템의 복잡성을 증대시킨다.4 이 섹션에서는 분산된 서비스들 간의 상호작용을 관리하기 위한 핵심적인 통신 패러다임과 아키텍처 패턴들을 분석한다.

서비스 간 통신 방식은 크게 동기식(Synchronous)과 비동기식(Asynchronous)으로 나뉜다. 각 방식은 뚜렷한 장단점을 가지며, 사용 사례에 따라 적절히 선택해야 한다.

동기식 통신은 클라이언트가 서비스에 요청을 보낸 후, 응답을 받을 때까지 대기(blocking)하는 방식이다.47

비동기식 통신은 클라이언트가 메시지나 이벤트를 발행한 후, 응답을 기다리지 않고 즉시 자신의 작업을 계속하는 방식이다. 통신은 보통 메시지 브로커(Message Broker)와 같은 미들웨어를 통해 중재된다.23

아래 표는 각 통신 스타일의 핵심적인 특성을 비교하여 아키텍트가 특정 사용 사례에 가장 적합한 방식을 선택하는 데 도움을 준다.47

특성 동기식 통신 (REST/gRPC) 비동기식 통신 (메시징)
서비스 결합도 높음 (시간적 결합) 낮음 (시간적, 공간적 분리)
성능/지연시간 단일 호출은 지연시간이 낮으나, 호출 체인에서 누적됨 종단 간 지연시간은 높을 수 있으나, 시스템 전체 처리량은 향상됨
장애 내성 낮음 (연쇄적 장애 발생 가능성 높음) 높음 (장애가 격리되고, 메시지 브로커가 버퍼 역할 수행)
구현 복잡성 초기 구현이 상대적으로 낮음 높음 (메시지 브로커, 멱등성, 보상 트랜잭션 등 고려)
주요 사용 사례 클라이언트-백엔드 간의 데이터 조회, 간단한 읽기 작업 서비스 내부 간의 명령 전달, 이벤트 알림, 비동기 작업 처리

마이크로서비스 환경에서 클라이언트 애플리케이션(예: 웹 프론트엔드, 모바일 앱)이 수많은 내부 마이크로서비스들과 직접 통신하는 것은 여러 문제를 야기한다. 클라이언트는 내부 서비스들의 복잡한 주소와 구조를 모두 알아야 하고, 하나의 화면을 구성하기 위해 여러 서비스에 수십 번의 네트워크 호출을 보내야 하며(Chatty I/O), 모든 서비스가 외부에 직접 노출되어 보안에 취약해진다.52

API 게이트웨이(API Gateway) 패턴은 이러한 문제들을 해결하기 위해 시스템의 단일 진입점(Single Entry Point) 역할을 하는 서버를 두는 것이다.55 객체 지향 디자인의 퍼사드(Facade) 패턴과 유사하게, API 게이트웨이는 다음과 같은 핵심적인 역할을 수행한다 55:

또한, 클라이언트의 종류에 따라 최적화된 API를 제공하기 위해 BFF(Backend for Frontend) 패턴을 적용하여 모바일 앱용 게이트웨이, 웹 프론트엔드용 게이트웨이를 별도로 둘 수도 있다.53 하지만 API 게이트웨이는 그 자체로 또 다른 관리 대상이며, 모든 요청이 집중되므로 단일 장애점이나 성능 병목이 되지 않도록 신중한 설계와 확장이 요구된다.52

클라우드와 컨테이너 기반 환경에서 서비스 인스턴스들은 오토스케일링(Auto-scaling) 등으로 인해 동적으로 생성되고 소멸하며, IP 주소나 포트 번호가 계속해서 바뀐다. 따라서 서비스 클라이언트는 호출하려는 서비스의 네트워크 위치를 정적으로 설정해 둘 수 없다.34

서비스 디스커버리(Service Discovery) 패턴은 이 문제를 해결하기 위한 메커니즘이다. 핵심 구성 요소는 서비스 레지스트리(Service Registry)로, 이는 현재 사용 가능한 모든 서비스 인스턴스들의 네트워크 위치(IP, 포트) 정보를 담고 있는 데이터베이스 역할을 한다.62 서비스 인스턴스는 시작될 때 자신의 정보를 레지스트리에 등록(Register)하고, 종료될 때 등록을 해제(Deregister)한다.

서비스 디스커버리를 구현하는 방식은 크게 두 가지로 나뉜다:

마이크로서비스 아키텍처에서 ‘서비스당 데이터베이스’ 패턴을 채택하는 순간, 우리는 분산 시스템이 가진 가장 근본적인 난제와 마주하게 된다. 바로 여러 서비스에 걸쳐 있는 비즈니스 프로세스에서 데이터의 일관성을 어떻게 보장할 것인가 하는 문제이다. 이 섹션에서는 전통적인 분산 트랜잭션의 한계를 살펴보고, 이를 극복하기 위해 MSA 환경에서 핵심적인 역할을 하는 사가(Saga) 패턴과 이벤트 소싱(Event Sourcing) 패턴을 심층적으로 분석한다.

모놀리식 환경에서 여러 테이블에 걸친 데이터 변경은 데이터베이스가 제공하는 ACID(원자성, 일관성, 고립성, 지속성) 트랜잭션으로 간단하게 묶을 수 있었다. 그러나 여러 서비스가 각자의 데이터베이스를 소유하는 MSA에서는 이러한 접근이 거의 불가능하다.

이 문제를 해결하기 위해 고안된 전통적인 방식이 2단계 커밋(Two-Phase Commit, 2PC) 프로토콜이다. 2PC는 트랜잭션 코디네이터(Transaction Coordinator)가 모든 참여 서비스(데이터베이스)에게 커밋 준비가 되었는지 묻고(1단계), 모두 ‘준비 완료’라고 응답하면 최종 커밋 명령을 내리는 방식이다.71 하지만 2PC는 MSA 환경에서 다음과 같은 치명적인 단점 때문에 거의 사용되지 않는다 71:

따라서 MSA는 가용성을 희생하는 강한 일관성(Strong Consistency) 대신, 느슨한 결합과 비동기 통신을 기반으로 하는 새로운 데이터 일관성 유지 메커니즘을 필요로 하며, 그 해답이 바로 사가 패턴이다.

사가 패턴은 분산 환경에서 데이터 일관성을 유지하기 위한 강력한 메커니즘이다. 사가는 하나의 거대한 글로벌 트랜잭션 대신, 여러 개의 로컬 트랜잭션(Local Transaction) 의 순차적인 집합으로 비즈니스 프로세스를 구성한다.76 각 로컬 트랜잭션은 단일 서비스 내에서 원자적으로 실행되어 자신의 데이터베이스를 업데이트하고, 성공적으로 완료되면 다음 서비스를 호출하기 위한 이벤트나 메시지를 발행한다.76

사가의 핵심은 실패 처리 방식에 있다. 만약 시퀀스 중간의 로컬 트랜잭션이 실패하면, 사가는 이미 성공적으로 완료된 이전 단계의 트랜잭션들을 취소하기 위한 보상 트랜잭션(Compensating Transaction) 을 역순으로 실행한다.77 예를 들어, ‘주문 생성’과 ‘결제 처리’는 성공했지만 ‘재고 차감’이 실패했다면, ‘결제 취소’와 ‘주문 취소’라는 보상 트랜잭션이 실행되어 시스템의 데이터 일관성을 최종적으로 맞추게 된다.

사가 패턴은 구현 방식에 따라 크게 두 가지 모델로 나뉜다.

코레오그래피(Choreography, 안무) 방식은 중앙의 지휘자(Orchestrator) 없이, 각 서비스가 자율적으로 이벤트를 발행하고 구독하며 전체 프로세스를 완성해 나가는 모델이다.75

오케스트레이션(Orchestration, 지휘) 방식은 사가 오케스트레이터(Saga Orchestrator) 라는 중앙 컨트롤러가 전체 비즈니스 트랜잭션의 흐름을 명시적으로 관리하고 지휘하는 모델이다.75

아래 표는 사가 패턴의 두 가지 구현 모델을 비교하여, 특정 시나리오에 어떤 방식이 더 적합한지 판단하는 데 도움을 준다.73

특성 코레오그래피 (Choreography) 오케스트레이션 (Orchestration)
제어 흐름 분산됨 (이벤트 기반) 중앙 집중됨 (명령 기반)
서비스 결합도 낮음 (서비스 간 직접 의존성 없음) 오케스트레이터에 결합됨
복잡성 로직은 분산되나, 전체 흐름은 복잡함 로직은 중앙 집중되어 단순하나, 오케스트레이터 자체는 복잡함
이해 용이성 낮음 (전체 흐름 추적 어려움) 높음 (명시적인 워크플로우)
확장성/장애점 단일 장애점 없음 오케스트레이터가 단일 장애점 가능성 있음
적합한 사용 사례 참여자가 적고(2~4개) 단순한 워크플로우 참여자가 많고 복잡한 워크플로우, 조건부 로직 필요 시

이벤트 소싱은 데이터 일관성 문제를 해결하는 또 다른 강력한 패턴으로, 종종 사가 패턴과 함께 사용된다. 이 패턴의 핵심 아이디어는 데이터의 현재 상태(current state)를 저장하는 대신, 해당 상태에 도달하기까지 발생한 모든 상태 변경 이벤트를 시간 순서대로 불변의 로그(immutable log)로 저장하는 것이다.17

사가와 이벤트 기반 통신을 채택한다는 것은, 분산 시스템의 모든 노드가 항상 동일한 데이터를 가지는 강한 일관성을 포기하고, 최종적 일관성 모델을 수용하는 것을 의미한다.28 최종적 일관성이란, 시스템에 더 이상 새로운 변경이 없을 때 일정 시간이 지나면 모든 복제본이 결국 동일한 값으로 수렴하게 되는 것을 보장하는 모델이다.

이는 기술적 선택일 뿐만 아니라 비즈니스적 결정이기도 하다. 즉, 아주 짧은 시간 동안 시스템의 다른 부분들이 약간 다른 데이터를 볼 수 있다는 가능성을 비즈니스가 수용해야 함을 의미한다.89 예를 들어, 고객이 주문을 취소한 직후 배송 서비스에서는 아직 해당 주문이 ‘처리 중’으로 보일 수 있다. 하지만 대부분의 비즈니스 시나리오에서 이러한 일시적인 불일치를 감수하는 대신 얻게 되는 시스템 전체의 높은 가용성과 성능, 확장성의 이점이 훨씬 크다.91 개발자는 이러한 일시적 불일치 상황을 사용자 인터페이스나 비즈니스 로직 수준에서 적절히 처리하도록 시스템을 설계해야 한다(예: “주문 취소 처리 중입니다. 잠시 후 확인해 주세요.”).92

마이크로서비스 아키텍처의 복잡한 개념들을 현실 세계에서 효과적으로 구현하고 운영하기 위해서는 강력한 기술적 기반이 필수적이다. 컨테이너화, 컨테이너 오케스트레이션, 그리고 서비스 메시는 오늘날 MSA를 지탱하는 3대 핵심 기술로, 각각의 기술은 MSA가 직면한 특정 문제들을 해결하며 계층적인 추상화를 제공한다.

이 세 가지 기술은 서로 경쟁하는 관계가 아니라, 현대적인 MSA를 구축하기 위한 계층적이고 상호 보완적인 기술 스택을 형성한다. 개발자는 비즈니스 로직을 담은 마이크로서비스를 작성하고, 도커는 이를 이식 가능한 컨테이너로 포장한다. 쿠버네티스는 이 컨테이너들의 생명주기를 클러스터 전체에서 관리하며, 이스티오는 그 위에서 컨테이너 간의 복잡한 네트워크 상호작용을 관리한다. 이러한 강력한 플랫폼의 등장은 개발팀이 분산 시스템의 고질적인 문제들을 직접 해결하는 부담에서 벗어나 비즈니스 가치 창출에 집중할 수 있게 함으로써, MSA의 대중화를 이끈 핵심 동력이 되었다.

본 보고서는 “마이크로서비스 아키텍처는 분산 데이터베이스와 분산 서비스가 핵심인가?”라는 질문에서 출발하여, 이들이 MSA의 본질 그 자체가 아니라 더 근본적인 원칙인 서비스 자율성을 달성하기 위한 필연적인 결과임을 밝혔다. MSA는 기술적 특성들의 단순한 집합이 아니라, 비즈니스 민첩성을 극대화하기 위해 조직과 기술을 정렬하는 정교한 아키텍처 전략이다.

MSA 도입의 결정은 근본적인 트레이드오프(Trade-off)를 수반한다. 이는 거대하고 단단하게 결합된 모놀리식의 내부적, 개발적 복잡성을, 수많은 독립적인 서비스들로 구성된 분산 시스템의 외부적, 운영적 복잡성과 교환하는 행위이다.7 모놀리식에서는 단일 코드베이스 내에서의 의존성 관리가 주된 고민이라면, MSA에서는 서비스 간 통신, 데이터 일관성, 장애 추적, 배포 자동화 등 분산 컴퓨팅의 모든 난제를 정면으로 마주해야 한다.

따라서 MSA로의 전환이 항상 성공을 보장하는 것은 아니다. 성공적인 도입을 위해서는 상당한 수준의 조직적, 기술적 성숙도가 전제되어야 한다.

결론적으로, MSA는 모든 프로젝트의 기본 선택지가 되어서는 안 된다. 이는 개발 속도, 팀 자율성, 그리고 독립적인 확장성이 비즈니스의 핵심 경쟁력이 되는 대규모의 복잡한 애플리케이션을 위한 강력한 패턴이다.7 반면, 규모가 작고 요구사항이 단순한 애플리케이션이나, 아직 분산 시스템 운영 경험이 부족한 팀에게는 잘 구조화된 모놀리식 아키텍처가 여전히 더 실용적이고 효과적인 선택일 수 있다.23

MSA로의 여정은 ‘빅뱅’ 방식의 전면적인 재작성보다는, 기존 모놀리식 시스템에서 새로운 기능을 마이크로서비스로 분리해 내거나, 가장 변화가 잦은 부분을 점진적으로 전환하는 방식이 현명하다.34 궁극적으로 MSA는 기술적 유행을 좇는 것이 아니라, 조직의 비즈니스 목표와 기술적 역량을 신중하게 평가하여 내리는 전략적 아키텍처 결정이어야 한다.

  1. 마이크로 서비스 4가지 원칙 - velog, accessed July 13, 2025, https://velog.io/@idnnbi/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C-%EC%84%9C%EB%B9%84%EC%8A%A4-4%EA%B0%80%EC%A7%80-%EC%9B%90%EC%B9%99
  2. 마이크로 서비스란 무엇인가? - 한윤석 개발 블로그, accessed July 13, 2025, https://hannut91.github.io/blogs/micro-service/overview
  3. 마이크로서비스란 무엇입니까? AWS, accessed July 13, 2025, https://aws.amazon.com/ko/microservices/
  4. [MSA] 마이크로서비스 심화(1) - 길은 가면, 뒤에 있다. - 티스토리, accessed July 13, 2025, https://12bme.tistory.com/517
  5. 마이크로서비스(Microservice) 정의, 구축, 장단점, 사례 - Red Hat, accessed July 13, 2025, https://www.redhat.com/ko/topics/microservices/what-are-microservices
  6. 마이크로서비스란 무엇이고 어떻게 작동합니까? Okta Identity Korea, accessed July 13, 2025, https://www.okta.com/kr/blog/2021/02/microservices/
  7. 마이크로서비스의 장점 및 알아야 할 단점 - Atlassian, accessed July 13, 2025, https://www.atlassian.com/ko/microservices/cloud-computing/advantages-of-microservices
  8. 마이크로서비스 - 위키백과, 우리 모두의 백과사전, accessed July 13, 2025, https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4
  9. 1.2. 마이크로서비스 아키텍처(MSA)란 무엇인가? - MSAP.ai, accessed July 13, 2025, https://www.msap.ai/docs/msa-expert-from-concepts-to-practice/part-1-msa-fundamentals/chapter-1-introduction-to-msa/section-1-2-what-is-microservices-architecture/
  10. 마이크로서비스 아키텍처란? Google Cloud, accessed July 13, 2025, https://cloud.google.com/learn/what-is-microservices-architecture?hl=ko
  11. www.redhat.com, accessed July 13, 2025, https://www.redhat.com/ko/topics/microservices/what-are-microservices#:~:text=%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%8A%94%20%ED%95%98%EB%82%98,%EC%84%9C%20%ED%98%91%EB%A0%A5%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.
  12. cloud.google.com, accessed July 13, 2025, [https://cloud.google.com/learn/what-is-microservices-architecture?hl=ko#:~:text=%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98(%EC%A3%BC%EB%A1%9C%20%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C,%EC%9A%94%EC%86%8C%EB%A1%9C%20%EA%B5%AC%EB%B6%84%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.](https://cloud.google.com/learn/what-is-microservices-architecture?hl=ko#:~:text=마이크로서비스 아키텍처(주로 마이크로,요소로 구분할 수 있습니다.)
  13. 마이크로서비스 란? (구조 및 특징, 아키텍처 구현, 서버리스) - chanstory - 티스토리, accessed July 13, 2025, https://chance-story.tistory.com/34
  14. 마이크로서비스란? - ServiceNow, accessed July 13, 2025, https://www.servicenow.com/kr/products/itsm/what-are-microservices.html
  15. aws.amazon.com, accessed July 13, 2025, https://aws.amazon.com/ko/microservices/#:~:text=%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4%EC%9D%98%20%ED%8A%B9%EC%A7%95&text=%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EC%9D%98%20%EA%B0%81,%EA%B3%B5%EC%9C%A0%ED%95%A0%20%ED%95%84%EC%9A%94%EB%8A%94%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.
  16. [MSA] 마이크로서비스 아키텍처(MSA)란 뭘까? - 우당탕탕 - 티스토리, accessed July 13, 2025, https://mozzi-devlog.tistory.com/34
  17. 마이크로서비스(Microservice?) 란? - FreeEnd - 티스토리, accessed July 13, 2025, https://freeend.tistory.com/115
  18. 모놀리식 아키텍처 vs 마이크로서비스 아키텍처 장단점 비교 - 김징어의 Devlog - 티스토리, accessed July 13, 2025, https://kimjingo.tistory.com/181
  19. Monolithic vs Microservices - Difference Between Software Development Architectures, accessed July 13, 2025, https://aws.amazon.com/compare/the-difference-between-monolithic-and-microservices-architecture/
  20. 모놀리식 vs 마이크로서비스, 어떤 아키텍처를 선택할까? - 요즘IT, accessed July 13, 2025, https://yozm.wishket.com/magazine/detail/1813/
  21. Microservices vs. monolithic architecture - Atlassian, accessed July 13, 2025, https://www.atlassian.com/microservices/microservices-architecture/microservices-vs-monolith
  22. Monolithic Application vs Microservices Architecture Guide - OpenLegacy, accessed July 13, 2025, https://www.openlegacy.com/blog/monolithic-application
  23. [간단정리] MSA란?(등장배경, 특징, 장단점) - 넌 잘하고 있어 - 티스토리, accessed July 13, 2025, https://hahahoho5915.tistory.com/71
  24. 모놀리식 vs 마이크로서비스, 어떤 아키텍처를 선택할까? - Giljae Joo (주길재), accessed July 13, 2025, https://giljae.medium.com/%EB%AA%A8%EB%86%80%EB%A6%AC%EC%8B%9D-vs-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%96%B4%EB%96%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%A5%BC-%EC%84%A0%ED%83%9D%ED%95%A0%EA%B9%8C-e73b25d93bc2?source=rss——architecture-5
  25. MSA가 좋지만은 않은 이유 - Sungho’s Blog, accessed July 13, 2025, https://sgc109.github.io/2021/10/22/about-msa/
  26. 마이크로서비스 아키텍처란? 주요 개념 및 예제 - PayPro Global, accessed July 13, 2025, https://payproglobal.com/ko/%EB%8B%B5%EB%B3%80/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%9E%80/
  27. Micro Service Architecture(MSA)의 장단점 - 내가 보기 위한 기록 - 티스토리, accessed July 13, 2025, https://sunrise-min.tistory.com/entry/Micro-Service-ArchitectureMSA%EC%9D%98-%EC%9E%A5%EB%8B%A8%EC%A0%90
  28. 마이크로서비스 경계 식별 - Azure Architecture Center Microsoft Learn, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/azure/architecture/microservices/model/microservice-boundaries
  29. [아키텍처] 모놀리식 아키텍처 VS 마이크로 서비스 아키텍처(MSA) - 개발 메모용 블로그, accessed July 13, 2025, https://memodayoungee.tistory.com/155
  30. 모놀리식 아키텍처 vs 마이크로서비스 아키텍처(MSA) - 두두네 데브옵스 - 티스토리, accessed July 13, 2025, https://dodo-devops.tistory.com/19
  31. Monolithic vs. Microservices Architecture - IBM, accessed July 13, 2025, https://www.ibm.com/think/topics/monolithic-vs-microservices
  32. 모놀리식과 마이크로서비스 비교 - 소프트웨어 개발 아키텍처의 차이 - AWS, accessed July 13, 2025, https://aws.amazon.com/ko/compare/the-difference-between-monolithic-and-microservices-architecture/
  33. [번역글] MSA 서비스별 데이터베이스 패턴(Database per service pattern) - 코딩하는 흑구, accessed July 13, 2025, https://sas-study.tistory.com/464
  34. 마이크로서비스 아키텍처(MSA) 패턴의 이해 - NGINX STORE, accessed July 13, 2025, https://nginxstore.com/blog/microservices/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98msa-%ED%8C%A8%ED%84%B4%EC%9D%98-%EC%9D%B4%ED%95%B4/
  35. 마이크로 서비스당 데이터 주권 - .NET - Learn Microsoft, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/dotnet/architecture/microservices/architect-microservice-container-applications/data-sovereignty-per-microservice
  36. Pattern: Database per service - Microservices.io, accessed July 13, 2025, https://microservices.io/patterns/data/database-per-service.html
  37. [마이크로서비스] MSA의 특징 - velog, accessed July 13, 2025, https://velog.io/@gun_123/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-MSA%EC%9D%98-%ED%8A%B9%EC%A7%95
  38. Database per service, shared instance or shared database? by Francesca Motisi - Medium, accessed July 13, 2025, https://medium.com/@mts88/database-per-service-or-shared-database-e73cfb756aa1
  39. 클라우드 네이티브 데이터 패턴 - .NET - Learn Microsoft, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/dotnet/architecture/cloud-native/distributed-data
  40. Database-per-service pattern - AWS Prescriptive Guidance, accessed July 13, 2025, https://docs.aws.amazon.com/prescriptive-guidance/latest/modernization-data-persistence/database-per-service.html
  41. MSA란? (2) 장점과 단점 - 메타넷글로벌, accessed July 13, 2025, https://metanetglobal.com/bbs/board.php?bo_table=tech&wr_id=136
  42. 마이크로서비스 Microservices (5) 이벤트 주도 데이터 관리 Eric Han’s IT Blog, accessed July 13, 2025, https://futurecreator.github.io/2018/10/19/microservices-and-event-driven-data-management/
  43. 마이크로서비스 사가 패턴 - Medium, accessed July 13, 2025, https://medium.com/@greg.shiny82/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%82%AC%EA%B0%80-%ED%8C%A8%ED%84%B4-544fc1adf5f3
  44. 마이크로 서비스에서 분산 트랜잭션 - Giljae Joo (주길재), accessed July 13, 2025, https://giljae.medium.com/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90%EC%84%9C-%EB%B6%84%EC%82%B0-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-347af5136c87
  45. 마이크로서비스 Microservices (3) 프로세스 간 통신 Eric Han’s IT Blog, accessed July 13, 2025, https://futurecreator.github.io/2018/10/04/inter-process-communication-in-microservices/
  46. [Spring Cloud] 마이크로서비스간 통신 (RestTemplate vs FeignClient), accessed July 13, 2025, https://minnseong.tistory.com/23
  47. 마이크로서비스 간 통신 과정에서 주의해야할 점 - velog, accessed July 13, 2025, https://velog.io/@suhongkim98/MSA%EC%99%80-DDD-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B0%84-%ED%86%B5%EC%8B%A0-%EB%B0%A9%EB%B2%95-4-%EC%9E%91%EC%84%B1-%EC%A4%91
  48. 마이크로 서비스 아키텍처의 통신 - .NET Microsoft Learn, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/dotnet/architecture/microservices/architect-microservice-container-applications/communication-in-microservice-architecture
  49. 마이크로 서비스의 서비스 간 통신 - Azure Architecture Center Microsoft Learn, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/azure/architecture/microservices/design/interservice-communication
  50. 마이크로서비스에서 안정적인 운영을 위한 통신 구현 방안 - Medium, accessed July 13, 2025, https://medium.com/@greg.shiny82/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90%EC%84%9C-%EC%95%88%EC%A0%95%EC%A0%81%EC%9D%B8-%EC%9A%B4%EC%98%81%EC%9D%84-%EC%9C%84%ED%95%9C-%ED%86%B5%EC%8B%A0-%EA%B5%AC%ED%98%84-%EB%B0%A9%EC%95%88-2e60bbff49f0
  51. 마이크로서비스 관계 패턴 - 통신 패턴과 Event driven architecture, accessed July 13, 2025, https://engineering-skcc.github.io/microservice%20outer%20achitecture/inner-architecture-conn/
  52. API 게이트웨이 패턴과 직접 클라이언트-마이크로 서비스 통신 비교 - .NET Microsoft Learn, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/dotnet/architecture/microservices/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-pattern
  53. API Gateway - msaschool, accessed July 13, 2025, https://www.msaschool.io/operation/architecture/architecture-one/
  54. API 게이트웨이 - Azure Architecture Center - Learn Microsoft, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/azure/architecture/microservices/design/gateway
  55. 마이크로서비스 구축을 위한 API Gateway 패턴 사용하기 - NGINX STORE, accessed July 13, 2025, https://nginxstore.com/blog/api-gateway/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B5%AC%EC%B6%95%EC%9D%84-%EC%9C%84%ED%95%9C-api-gateway-%ED%8C%A8%ED%84%B4-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/
  56. API Gateway Pattern. In this article, we are going to talk… by Mehmet Ozkaya Design Microservices Architecture with Patterns & Principles Medium, accessed July 13, 2025, https://medium.com/design-microservices-architecture-with-patterns/api-gateway-pattern-8ed0ddfce9df
  57. API Gateway Patterns in Microservices - GeeksforGeeks, accessed July 13, 2025, https://www.geeksforgeeks.org/system-design/api-gateway-patterns-in-microservices/
  58. API Gateway Pattern: 5 Design Options and How to Choose - Solo.io, accessed July 13, 2025, https://www.solo.io/topics/api-gateway/api-gateway-pattern
  59. Introduction to API Gateway in Microservices Architecture - IMESH, accessed July 13, 2025, https://imesh.ai/blog/introduction-to-api-gateway-in-microservices-architecture/
  60. API Gateway Patterns for Microservices - Oso, accessed July 13, 2025, https://www.osohq.com/learn/api-gateway-patterns-for-microservices
  61. The API gateway pattern versus the direct client-to-microservice communication - .NET, accessed July 13, 2025, https://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-pattern
  62. 서비스 디스커버리 패턴 - msaschool, accessed July 13, 2025, https://www.msaschool.io/operation/design/design-six/
  63. MSA에서 Service discovery 패턴 - 조대협의 블로그 - 티스토리, accessed July 13, 2025, https://bcho.tistory.com/1252
  64. Microservices: Service Discovery Patterns and 3 Ways to Implement Solo.io, accessed July 13, 2025, https://www.solo.io/topics/microservices/microservices-service-discovery
  65. www.solo.io, accessed July 13, 2025, https://www.solo.io/topics/microservices/microservices-service-discovery#:~:text=A%20service%20discovery%20pattern%20enables,service%20registry%20at%20set%20intervals.
  66. Microservices Patterns: Service Discovery Patterns Cloud Native Daily - Medium, accessed July 13, 2025, https://medium.com/cloud-native-daily/microservices-patterns-part-03-service-discovery-patterns-97d603b9a510
  67. 마이크로서비스 패턴 - 서비스 디스커버리 - velog, accessed July 13, 2025, https://velog.io/@hoonki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%8C%A8%ED%84%B4-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%94%94%EC%8A%A4%EC%BB%A4%EB%B2%84%EB%A6%AC
  68. 서비스 디스커버리 (Service Discover)란? - 매일 조금씩 - 티스토리, accessed July 13, 2025, https://gimmesome.tistory.com/227
  69. Pattern: Server-side service discovery - Microservices.io, accessed July 13, 2025, https://microservices.io/patterns/server-side-discovery.html
  70. Understanding Service Discovery for Microservices Architecture Kong Inc., accessed July 13, 2025, https://konghq.com/blog/learning-center/service-discovery-in-a-microservices-architecture
  71. SAGA 패턴을 통해 MSA에서의 데이터 일관성 보장하기 - hudi.blog, accessed July 13, 2025, https://hudi.blog/saga-pattern/
  72. 마이크로서비스 패턴: 4.1.2 분산 트랜잭션의 문제점 - 1 - 더북(TheBook), accessed July 13, 2025, https://thebook.io/007035/0211/
  73. [MSA] 개인 프로젝트 Monolithic to MSA 전환기 - (8) 분산 트랜잭션 환경에서 트랜잭션 처리하기(feat. 2PC, Saga 패턴, Choreographed Saga), accessed July 13, 2025, https://ksh-coding.tistory.com/143
  74. [마이크로서비스 패턴] 4. 트랜잭션 관리: 사가 - velog, accessed July 13, 2025, https://velog.io/@daehoon12/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%8C%A8%ED%84%B4-4.-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EA%B4%80%EB%A6%AC-%EC%82%AC%EA%B0%80
  75. [마이크로서비스] Saga Pattern 자세히 알아보기 (feat. orchestration, choreography), accessed July 13, 2025, https://devyonghee.github.io/theory/2022/09/24/orchestration-vs-choreography/
  76. [MSA] 마이크로서비스 - 분산 트랜잭션 처리를 위한 Saga 패턴 - 피터의 개발이야기, accessed July 13, 2025, https://peterica.tistory.com/581
  77. Saga 분산 트랜잭션 패턴, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/azure/architecture/patterns/saga
  78. 사가 패턴(saga pattern)과 분산 트랜잭션(distributed transaction) - Junhyunny’s Devlogs, accessed July 13, 2025, https://junhyunny.github.io/msa/design-pattern/distributed-transaction/
  79. # 마이크로 서비스 데이터 설계 - source - 티스토리, accessed July 13, 2025, https://skysoo1111.tistory.com/133
  80. [Saga 패턴] 마이크로서비스에서 Saga 패턴이란? - 해피주 블로그, accessed July 13, 2025, https://joobly.tistory.com/69
  81. 마이크로서비스 패턴: 코레오그래피 사가의 장단점, accessed July 13, 2025, https://thebook.io/007035/0225/
  82. (KR) Saga 의 두 가지 패턴 설명 엔지니어링 로그, accessed July 13, 2025, https://ghkdqhrbals.github.io/portfolios/docs/msa/2022-09-04-micro-service-architecture1/
  83. 마이크로서비스 패턴: 핵심패턴만 빠르게 이해하기, accessed July 13, 2025, https://happycloud-lee.tistory.com/154
  84. [마이크로서비스 패턴] 6. 비즈니스 로직 개발: 이벤트 소싱 - velog, accessed July 13, 2025, https://velog.io/@daehoon12/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%8C%A8%ED%84%B4-6.-%EB%B9%84%EC%A6%88%EB%8B%88%EC%8A%A4-%EB%A1%9C%EC%A7%81-%EA%B0%9C%EB%B0%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%86%8C%EC%8B%B1
  85. 이벤트 소싱 패턴 - Azure Architecture Center - Learn Microsoft, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/azure/architecture/patterns/event-sourcing
  86. 이벤트 소싱 패턴 - AWS 권장 가이드, accessed July 13, 2025, https://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/cloud-design-patterns/event-sourcing.html
  87. 이벤트 소싱과 마이크로서비스 아키텍처 - 에이콘출판사, accessed July 13, 2025, http://www.acornpub.co.kr/book/microservices-eventsourcing
  88. 마이크로 서비스에 대한 데이터 고려 사항 - Azure Architecture Center Microsoft Learn, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/azure/architecture/microservices/design/data-considerations
  89. 마이크로서비스 간의 데이터 일관성 데릭 코마틴 - 읽을 거리 - 닷넷데브, accessed July 13, 2025, https://forum.dotnetdev.kr/t/topic/1924
  90. 마이크로서비스 데이터 공유 전략: 동기 호출을 넘어, 점진적 일관성으로 - velog, accessed July 13, 2025, https://velog.io/@sangjinsu/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B3%B5%EC%9C%A0-%EC%A0%84%EB%9E%B5-%EB%8F%99%EA%B8%B0-%ED%98%B8%EC%B6%9C%EC%9D%84-%EB%84%98%EC%96%B4-%EC%A0%90%EC%A7%84%EC%A0%81-%EC%9D%BC%EA%B4%80%EC%84%B1%EC%9C%BC%EB%A1%9C
  91. 일관성: 분산 애플리케이션에서 데이터 일관성 유지 - FasterCapital, accessed July 13, 2025, https://fastercapital.com/ko/content/%EC%9D%BC%EA%B4%80%EC%84%B1–%EB%B6%84%EC%82%B0-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9D%BC%EA%B4%80%EC%84%B1-%EC%9C%A0%EC%A7%80.html
  92. [마이크로서비스 패턴] 7. 마이크로서비스 쿼리 구현 - velog, accessed July 13, 2025, https://velog.io/@daehoon12/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%8C%A8%ED%84%B4-7.-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%BF%BC%EB%A6%AC-%EA%B5%AC%ED%98%84
  93. Docker & Kubernetes - velog, accessed July 13, 2025, https://velog.io/@zxzz45/Docker-Kubernetes
  94. 컨테이너화, 도커의 장점, accessed July 13, 2025, https://brunch.co.kr/@@aWDV/5
  95. 마이크로서비스란 무엇인가요? IBM, accessed July 13, 2025, https://www.ibm.com/kr-ko/topics/microservices
  96. Kubernetes와 Docker 비교 - 컨테이너 기술 간의 차이점 - AWS, accessed July 13, 2025, https://aws.amazon.com/ko/compare/the-difference-between-kubernetes-and-docker/
  97. Kubernetes와 Docker 비교 - Atlassian, accessed July 13, 2025, https://www.atlassian.com/ko/microservices/microservices-architecture/kubernetes-vs-docker
  98. Kubernetes 예시, 애플리케이션 및 사용 사례 - IBM, accessed July 13, 2025, https://www.ibm.com/kr-ko/think/topics/kubernetes-use-cases
  99. 서비스 메시란 무엇인가요? - AWS, accessed July 13, 2025, https://aws.amazon.com/ko/what-is/service-mesh/
  100. Azure Kubernetes Service에 대한 Istio 기반 서비스 메시 추가 기능 - Learn Microsoft, accessed July 13, 2025, https://learn.microsoft.com/ko-kr/azure/aks/istio-about
  101. [마이크로서비스 아키텍처 : 패턴과 핵심 기술] MSA를 위한 기술 - Service Mesh와 Istio, accessed July 13, 2025, https://yummy0102.tistory.com/372
  102. Istio service mesh 소개 & 설치방법. 서비스메쉬(Service Mesh) : sidecar pattern사용, accessed July 13, 2025, https://medium.com/csk6124-walter/istio-service-mesh-%EC%86%8C%EA%B0%9C-%EC%84%A4%EC%B9%98%EB%B0%A9%EB%B2%95-1a541593c789
  103. [Architecture] MSA : Istio 개념 잡기 - Azderica, accessed July 13, 2025, https://azderica.github.io/00-architecture-istio/
  104. Istio란 무엇인가요? - Google Cloud, accessed July 13, 2025, https://cloud.google.com/learn/what-is-istio?hl=ko
  105. 모놀리식 vs 마이크로서비스 아키텍처: 차이점 - AppMaster, accessed July 13, 2025, https://appmaster.io/ko/blog/monolrisig-dae-maikeuroseobiseu-akitegceo
  106. [INFCON Tech Series #5] 모놀리식 vs 마이크로서비스 아키텍처, 우리 팀에 맞는 선택은?, accessed July 13, 2025, https://www.inflearn.com/pages/infcon-2023-tech-msa
  107. [MSA 알아보기] 1. MSA란 무엇인가 - velog, accessed July 13, 2025, https://velog.io/@mrcocoball2/MSA-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-1.-MSA%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80