본문 바로가기

분류 전체보기278

[MSA] 테스트 유형 사분면 하단에는 기술 대면 테스트, 즉 처음부터 개발자가 시스템을 구축하는 데 도움을 주는 테스트가 있다. 성능 테스트와 작은 범위의 단위 테스트같은 속성 테스트가 이 범주에 속하며 일반적으로 모두 자동화된다. 사분면의 상위 절반은 비기술 이해관계자가 시스템의 작동 방식을 이해하는 것을 돕는 테스트가 포함되며, 이를 비즈니스 대면 테스트라고 한다. 이 테스트에는 왼쪽 상단의 인수 테스팅 사분면에 표시된 것처럼, 넓은 범위의 엔드투엔드 테스트나 탐색 테스팅 사분면에 표시된 수동 테스팅이 포함된다. 단위 테스팅 : 좁은 범위의 단위 테스트속성(성능) 테스팅 : nGrinder와 같은 성능 테스트인수 테스팅 : 넓은 범위의 end to end 테스트탐색 테스팅 : 고객에 의한 최종 테스트 2025. 5. 7.
[MSA] 시간적 결합 시간적 결합은 한 모듈의 올바른 실행이 다른 모듈에 의해 수행되는 작업의 타이밍이나 순서에 의존하는 런타임 상황을 의미한다. 특히 분산 환경(ex. MSA)에서 동기식 호출을 사용할 때 주로 발생하는 문제이다. 동기식 통신 방식에서는 호출하는 서비스가 호출된 서비스로부터 응답을 받을 때까지 대기해야 하므로, 두 서비스는 시간적으로 강하게 묶이게 된다. 만약 호출된 서비스가 느리거나 사용할 수 없는 상태라면, 호출한 서비스도 영향을 받아 성능이 저하되거나 장애가 발생할 수 있다. 그리고 만약 응답이 오지 않는다면 호출한 서비스도 대기 상태에 빠지거나 타임아웃이 될 수 있어 시스템 취약성이 증가한다. 서비스 간의 동기적 대기는 전체 시스템의 응답 시간을 늘리고 처리량을 감소시킬 수 있으며, 시간적으로 강하게.. 2025. 5. 7.
[MSA] 2페이즈 커밋(2PC) 쓰지 말자 이 글은 '샘 뉴먼 - 마이크로소프트 아키텍처 구축' 내용을 기반으로 합니다. 2페이즈 커밋은 여러 시스템에 걸쳐 있는 작업을 원자적으로 처리하려는 분산 트랜잭션을 관리하기 위한 알고리즘 중 하나이다. 작동 방식:투표 단계(Voting Phase): 트랜잭션 관리자(=중앙 코디네이터)가 모든 참여자(Cohort)에게 로컬 트랜잭션을 커밋할 준비가 되었는지 묻는다.커밋 단계(Commit Phase): 모든 참여자가 '예'라고 답하면, 관리자는 모든 참여자에게 커밋하라고 지시한다. 만약 한 명이라도 '아니오'라고 한다면, 관리자는 모든 참여자에게 롤백을 지시한다.문제점: 이 방식은 모든 참여자가 중앙 코디네이터의 지시를 기다려야 하므로 시스템을 취약하게 만든다. 코디네이터나 참여자 중 하나라도 응답하지 않으.. 2025. 5. 5.
[MSA] 서비스 메시(Service Mesh) 이 글은 '샘 뉴먼 - 마이크로소프트 아키텍처 구축' 내용을 기반으로 합니다.서비스 메시는 마이크로서비스 간 네트워크 통신, 검색, 로드 밸런싱, 회복성, 보안, 모니터링 등을 처리하는 전용 인프라 계층을 의미한다. 복잡한 마이크로서비스 환경에서 서비스 간의 통신은 매우 중요하고 어려운데, 서비스 메시는 이러한 통신과 관련된 여러 기능들을 애플리케이션 코드 변경 없이 일관되고 효과적으로 관리할 수 있도록 도와준다.Sidecar 프록시 패턴 (예전 방식)서비스 메시는 일반적으로 각 마이크로서비스 인스턴스 옆에 '사이드카(Sidecar)' 형태로 네트워크 프록시(예: Envoy)를 배포하는 방식으로 구현된다. 애플리케이션 컨테이너와 동일한 배포 단위(예: 쿠버네티스 Pod) 내에서 실행되는 이 사이드카 프록.. 2025. 5. 5.
[MSA] 도메인 주도 설계(Domain-Driven Design - DDD) 이 글은 '샘 뉴먼 - 마이크로소프트 아키텍처 구축' 내용을 기반으로 합니다. DDD(도메인 주도 설계)는 현실 세계의 도메인을 코드로 표현하는 것의 중요성을 강조하고, 이를 바탕으로 시스템을 더 효과적으로 모델링하는 방법이다. 마이크로서비스 아키텍처 설계 시 DDD 원칙을 적용하면, 각 서비스가 명확한 책임을 가지고 독립적으로 발전할 수 있는 기반을 마련할 수 있다. 특히, DDD에서 가장 중요한 것은 경계 컨텍스트(Bounded Context) 를 사용하여 서비스 경계를 정의하는 것이다.경계 컨텍스트 (Bounded Context): 특정 도메인은 여러 개의 경계 컨텍스트로 구성된다. 각 컨텍스트는 자신만의 모델과 언어(Ubiquitous Language)를 가지며, 다른 컨텍스트와는 명확히 구분된다.. 2025. 5. 5.