마이크로서비스 아키텍처7 [MSA] 모니터링에서 관찰가능성으로 시스템의 관찰가능성은 외부 출력으로부터 시스템의 내부 상태를 이해할 수 있는 수준을 의미한다. 일반적으로 소프트웨어에 전체적인 이해가 필요하며, 소프트웨어를 서로 다른 개체의 집합이 아닌 시스템으로 보는 것이 중요하다. 반면에 모니터링은 우리가 하는 일이다. 우리가 시스템을 모니터링한다. 즉, 우리는 그것을 바라보고, 모니터링 활동으로 무엇을 기대할 것인지 생각하지 않고 모니터링 활동에만 집중하면 상황이 잘못되기 시작한다. 관찰가능성은 외부로 출력된 것을 기반으로 기스템이 수행하는 작업을 이해할 수 있는 수준을 나타낸다. 로그, 이벤트, 메트릭은 대상을 관찰 가능하게 만들도록 도와주지만, 많은 도구를 사용하기보다는 시스템을 이해할 수 있도록 만드는 데 집중해야 한다. 시스템을 관찰 가능하게 만들려고 할 .. 2025. 5. 21. [MSA] 소비자 주도 계약 테스트(Consumer-Driven Contract Test, CDC) 엔드투엔드 테스트는 시스템 전체의 통합적인 동작을 검증할 수 있다. 하지만 실행 시간이 오래 걸리며, 실패 시 원인 분석이 복잡하다. 테스트 환경 구축도 매우 어렵다. 따라서 엔드투엔드 테스트는 최소화하는 것이 좋다. 엔드투엔드 테스트는 깨지기 쉽고, 유지보수 및 실행 비용이 높다. 이러한 엔드투엔드 테스트의 단점을 극복할 수 있는 방법으로 소비자 주도 계약 테스트가 효과적이다. 소비자 주도 계약 테스트란, 소비자가 자신이 실제로 서비스의 API를 어떻게 사용할 것인지에 대한 명세를 작성하고, 이 내용을 기반으로 실제 사용 사례에 맞춰 엔드투엔드 테스트를 설계하고 검증하는 방식이다. 즉, 불필요한 테스트 작성을 줄이고 꼭 필요한 시나리오 위주로 테스트를 작성하여 전체적인 테스트 비용을 줄일 수 있는 것.. 2025. 5. 7. [MSA] 2페이즈 커밋(2PC) 쓰지 말자 이 글은 '샘 뉴먼 - 마이크로소프트 아키텍처 구축' 내용을 기반으로 합니다. 2페이즈 커밋은 여러 시스템에 걸쳐 있는 작업을 원자적으로 처리하려는 분산 트랜잭션을 관리하기 위한 알고리즘 중 하나이다. 작동 방식:투표 단계(Voting Phase): 트랜잭션 관리자(=중앙 코디네이터)가 모든 참여자(Cohort)에게 로컬 트랜잭션을 커밋할 준비가 되었는지 묻는다.커밋 단계(Commit Phase): 모든 참여자가 '예'라고 답하면, 관리자는 모든 참여자에게 커밋하라고 지시한다. 만약 한 명이라도 '아니오'라고 한다면, 관리자는 모든 참여자에게 롤백을 지시한다.문제점: 이 방식은 모든 참여자가 중앙 코디네이터의 지시를 기다려야 하므로 시스템을 취약하게 만든다. 코디네이터나 참여자 중 하나라도 응답하지 않으.. 2025. 5. 5. [MSA] 도메인 주도 설계(Domain-Driven Design - DDD) 이 글은 '샘 뉴먼 - 마이크로소프트 아키텍처 구축' 내용을 기반으로 합니다. DDD(도메인 주도 설계)는 현실 세계의 도메인을 코드로 표현하는 것의 중요성을 강조하고, 이를 바탕으로 시스템을 더 효과적으로 모델링하는 방법이다. 마이크로서비스 아키텍처 설계 시 DDD 원칙을 적용하면, 각 서비스가 명확한 책임을 가지고 독립적으로 발전할 수 있는 기반을 마련할 수 있다. 특히, DDD에서 가장 중요한 것은 경계 컨텍스트(Bounded Context) 를 사용하여 서비스 경계를 정의하는 것이다.경계 컨텍스트 (Bounded Context): 특정 도메인은 여러 개의 경계 컨텍스트로 구성된다. 각 컨텍스트는 자신만의 모델과 언어(Ubiquitous Language)를 가지며, 다른 컨텍스트와는 명확히 구분된다.. 2025. 5. 5. [MSA] 사가 구현: 오케스트레이션 vs 코레오그래피 오케스트레이션형 사가오케스트레이션형 사가는 중앙 조정자(오케스트레이터)를 사용해 실행 순서를 정의하고 필요한 보상 조치를 트리거한다. 오케스트레이션 기반 사가는 명령과 제어 방식이라고 생각할 수 있다. 오케스트레이터는 어떤 일이 언제 일어나는지를 제어하며, 이를 통해 사가에서 어떤 일이 일어나는지를 충분히 파악할 수 있다. 장점: 워크플로 로직이 중앙 집중화되어 이해하고 관리하기 비교적 쉽고, 전체 프로세스의 상태를 추적하기 용이하다.단점: 오케스트레이터가 단일 실패 지점(Single Point of Failure) 또는 병목 지점이 될 수 있다. 참여 서비스들은 오케스트레이터에 종속될 수 있다. 코레오그래피형 사가코레오그래피형 사가는 여러 협력 서비스 사이에서 사가 운영에 대한 책임을 분산시키는 것을.. 2025. 5. 1. 이전 1 2 다음