microservice architecture5 [MSA] 사가 구현: 오케스트레이션 vs 코레오그래피 오케스트레이션형 사가오케스트레이션형 사가는 중앙 조정자(오케스트레이터)를 사용해 실행 순서를 정의하고 필요한 보상 조치를 트리거한다. 오케스트레이션 기반 사가는 명령과 제어 방식이라고 생각할 수 있다. 오케스트레이터는 어떤 일이 언제 일어나는지를 제어하며, 이를 통해 사가에서 어떤 일이 일어나는지를 충분히 파악할 수 있다. 장점: 워크플로 로직이 중앙 집중화되어 이해하고 관리하기 비교적 쉽고, 전체 프로세스의 상태를 추적하기 용이하다.단점: 오케스트레이터가 단일 실패 지점(Single Point of Failure) 또는 병목 지점이 될 수 있다. 참여 서비스들은 오케스트레이터에 종속될 수 있다. 코레오그래피형 사가코레오그래피형 사가는 여러 협력 서비스 사이에서 사가 운영에 대한 책임을 분산시키는 것을.. 2025. 5. 1. [MSA] 분산 트랜잭션의 문제 해결 - 사가(Saga) 사가는 여러 단계의 로컬 트랜잭션으로 구성된 비즈니스 프로세스다. 각 로컬 트랜잭션은 특정 서비스내에서 원자적으로 수행된다.이 흐름의 각 단계는 서로 다른 서비스에서 수행할 수 있는 작업을 나타낸다. 각 서비스 내부의 모든 상태 변경은 로컬 ACID 트랜잭션 내에서 처리될 수 있다. 사가를 통해 기술적인 실패가 아닌 비즈니스 실패로부터 복구할 수 있다는 점을 기억하자. 예를 들어, 고객이 결제를 시도했지만 고객의 자금이 부족하다면, 사가가 처리해야 하는 비즈니스 실패다. 반면에 결제 게이트웨이가 타임아웃이 되거나 500 에러를 발생시키면, 별도로 처리해야 하는 기술적 실패다. 사가는 기반 구성 요소가 제대로 동작하고 있다고 가정한다. 이 모든 단계가 단일 데이터베이스 트랜잭션에서 수행된 경우라면, 간단한.. 2025. 5. 1. [MSA] 마이크로서비스 아키텍처를 위한 DDD 간단 정리 보편 언어: 모든 팀 구성원(개발자, 기획자, 현업 전문가 등)이 혼동 없이 동일한 의미로 사용하는, 의도적으로 만들어진 공유된 어휘 체계애그리거트: 일관된 데이터 변경(원자성)을 위해, 하나의 단위로 묶어 관리하는 관련 객체 그룹경계 콘텍스트: 특정 모델과 그 보편 언어가 일관되게 유효한, 명시적인 경계 2025. 4. 17. [MSA] 내용 결합, 공통 결합이란? 그리고 차이점 내용 결합과 공통 결합은 MSA에서 피해야할 높은 수준의 결합도를 나타낸다. 두 가지 모두 서비스 간의 독립성을 해치게 된다. 1. 내용 결합(Content Coupling)정의한 서비스가 다른 서비스의 내부 구현 세부 정보에 직접 접근하거나 수정하는 경우. 매우 높은 수준의 결합이며, 가장 피해야할 유형. 마이크로서비스에서의 예시A서비스가 B서비스의 내부 DB에 직접 쿼리를 실행A서비스가 B서비스의 내부 코드나 private 함수를 직접 호출A서비스가 B서비스의 내부 파일 시스템에 직접 접근문제점캡슐화 위반독립적 배포 불가변경의 어려움마이크로서비스의 핵심 원칙힌 서비스 자율성(Autonomy)와 경계 컨텍스트(Bounded Context)를 정면으로 위반하므로 절대적으로 피해야한다. 2. 공통 결합(C.. 2025. 4. 17. [MSA] 시간적 결합 코드 중심적 관점에서 시간적 결합은 순전히 동시에 발생하기 때문에 함께 엮이는 상황이다.시간적 결합은 분산 시스템의 맥락에서는 미묘하게 다른 의미를 갖는데, 하나의 마이크로서비스가 작업을 완료하기 위해 동시간에 어떤 작업을 수행하는 다른 마이크로서비스가 필요한 상황을 나타낸다. 작업을 완료하려면 두 마이크로서비스가 동시에 작동하고 서로 통신할 수 있어야한다. 따라서 A서비스가 B서비스에 대한 동기식 HTTP 호출을 수행하는 시점에 B서비스는 가동돼 수행 가능한 상태여야한다.어떤 이유로 A서비스가 B서비스가 연결할 수 없게 된다면 작업은 실패하게 된다. 또한 A서비스는 차단되어 B서비스의 응답을 기다려야하므로 잠재적으로 리소스 경합과 관련된 문제를 유발할 수 있다. 시간적 결합이 항상 나쁜 것은 아니지만,.. 2025. 4. 17. 이전 1 다음