-
마이크로 서비스 설계 패턴 - 3계층 패턴, 2아키텍처CheckFact/가까이서 본 기술 2025. 4. 2. 22:17728x90
3계층 패턴(①인프라 패턴, ②애플리케이션 인프라 패턴, ③애플리케이션 패턴)과 2 아키텍처(Inner, Outer)의 매핑
3 Layer Microservices Pattern FACT 주장/현상/관념
마이크로 서비스 설계에 대한 출판물, 선진 사례 등에서 설명하는 범위에 따라 여러 패턴들의 개념적인 경계가 모호하거나 혼동되어, 대표적인(?) 3계층 패턴(①인프라 패턴 → ②애플리케이션 인프라 패턴 → ③애플리케이션 패턴)과 2 아키텍처(Inner, Outer)로 분류하여 매핑해 보겠습니다.
CHECK 검증/실상/검토
🔹 3계층 패턴의 분류
마이크로서비스 아키텍처에서 3계층 패턴(Three-Layered Pattern)을 다음과 같이 분류할 수 있습니다.
📖마이크로서비스 3계층 패턴은 단순히 API, 비즈니스 로직, 데이터 계층으로 나뉘는 것이 아니라, ① 인프라 패턴 → ② 애플리케이션 인프라 패턴 → ③ 애플리케이션 패턴
이렇게 운영 환경, 미들웨어, 내부 비즈니스 로직을 포함한 3가지 계층으로 확장해서 볼 수 있습니다.아래에서는 먼저 이 개념을 기반으로 3계층 패턴, 즉 인프라 패턴, 애플리케이션 인프라 패턴, 애플리케이션 패턴으로 분류하는 방식을 설명합니다.
1️⃣ 인프라 패턴 (Infrastructure Pattern)
- 네트워크, 데이터베이스, 메시지 브로커, 컨테이너 등 서비스 운영을 위한 기반 시스템
- 일반적으로 클라우드 인프라, 컨테이너 오케스트레이션(Kubernetes), 로깅 및 모니터링 도구 포함
✅ 예제:
- 데이터 스토리지: MySQL, PostgreSQL, MongoDB, DynamoDB
- 메시지 브로커: Kafka, RabbitMQ, AWS SQS
- 컨테이너 및 오케스트레이션: Docker, Kubernetes, AWS ECS
- 로그 및 모니터링: Prometheus, ELK Stack, Grafana
📌 역할:
- 마이크로서비스의 실행 환경을 제공
- 데이터 저장 및 서비스 간 통신을 지원
- 서비스의 상태를 모니터링하고 장애를 감지
2️⃣ 애플리케이션 인프라 패턴 (Application Infrastructure Pattern)
- 서비스 내부에서 운영되는 미들웨어 계층, API 게이트웨이, 서비스 간 통신 및 보안 관련 패턴 포함
- API 요청 처리, 인증, 로깅, 캐싱 등의 기능 담당
✅ 예제:
- API Gateway: Spring Cloud Gateway, Kong, Nginx, AWS API Gateway
- 서비스 메시(Service Mesh): Istio, Linkerd
- 인증 및 보안: OAuth 2.0, JWT, Keycloak, OpenID Connect
- 캐싱 및 성능 최적화: Redis, Memcached
- 로그 & 분산 추적: Zipkin, Jaeger
📌 역할:
- 클라이언트와 백엔드 서비스 간의 요청을 관리
- 마이크로서비스 간의 보안, 인증 및 로깅 기능 제공
- 서비스 간 통신을 최적화하고 성능을 개선
3️⃣ 애플리케이션 패턴 (Application Pattern)
- 마이크로서비스 내부의 비즈니스 로직과 데이터 처리 방식을 정의
- 일반적인 설계 패턴 (Layered Architecture, CQRS, Event Sourcing 등) 적용
✅ 예제:
- 서비스 계층 패턴: RESTful API, GraphQL API
- CQRS (Command Query Responsibility Segregation): 읽기/쓰기 분리
- 도메인 주도 설계 (DDD - Domain-Driven Design): 애그리게이트(Aggregate), 엔티티(Entity), 리포지토리(Repository) 패턴
- 이벤트 소싱 (Event Sourcing): 상태 변경을 이벤트로 저장
📌 역할:
- 핵심 비즈니스 로직을 처리
- 데이터의 일관성과 무결성을 유지
- 서비스 간 데이터 흐름을 최적화
📌 3계층 패턴의 구조적 예제
📍 마이크로서비스 내부 3계층 구조 예시
[ 인프라 패턴 ] - MySQL, Redis, Kafka, Kubernetes - API Gateway, Service Mesh [ 애플리케이션 인프라 패턴 ] - API 라우팅 및 인증 (Spring Cloud Gateway) - 분산 추적 (Zipkin, Jaeger) - 캐싱 (Redis) [ 애플리케이션 패턴 ] - 도메인 모델링 (DDD) - CQRS, 이벤트 소싱 - RESTful API 또는 GraphQL
이와 같은 마이크로서비스의 3계층 패턴(인프라 패턴, 애플리케이션 인프라 패턴, 애플리케이션 패턴)을 Inner Architecture(내부 아키텍처)와 Outer Architecture(외부 아키텍처)로 매핑해 보겠습니다.
🔹 Inner Architecture vs Outer Architecture 개념
🔸 Inner Architecture (내부 아키텍처)
- 서비스 내부에서 동작하는 요소들을 정의하는 아키텍처
- 비즈니스 로직, 도메인 모델, 데이터 저장소 등이 포함됨
🔸 Outer Architecture (외부 아키텍처)
- 서비스 간 상호작용, 배포, 인프라 운영을 담당하는 요소
- API Gateway, 메시징 시스템, 인증 및 보안, 서비스 디스커버리 등이 포함됨
🔹 3계층 패턴과 Inner/Outer Architecture 매핑
3계층 패턴 Inner Architecture Outer Architecture 애플리케이션 패턴 (Application Pattern) 비즈니스 로직, 서비스 계층, 도메인 모델 (DDD), CQRS, 이벤트 소싱 - 애플리케이션 인프라 패턴 (Application Infrastructure Pattern) 트랜잭션 관리, 내부 서비스 간 통신 (gRPC, REST), 데이터 접근 (JPA, ORM) API Gateway, 서비스 메시, 인증 및 보안 (OAuth2, JWT), 로깅 & 모니터링 인프라 패턴 (Infrastructure Pattern) - 데이터베이스(MySQL, MongoDB), 메시지 브로커(Kafka, RabbitMQ), 컨테이너 오케스트레이션(Kubernetes)
📌 Inner vs Outer Architecture 시각화
[ Outer Architecture ] ┌────────────────────────────────────┐ │ - API Gateway (Spring Cloud Gateway, Kong) │ - 서비스 메시 (Istio, Linkerd) │ - 인증/보안 (OAuth2, JWT, Keycloak) │ - 로깅 및 모니터링 (ELK, Prometheus) └────────────────────────────────────┘ ↓ (API 요청, 메시지 전달) [ Inner Architecture ] ┌────────────────────────────────────┐ │ - 비즈니스 로직 (DDD, CQRS, 이벤트 소싱) │ - 데이터 접근 (JPA, Hibernate, Repository Pattern) │ - 내부 통신 (gRPC, REST) └────────────────────────────────────┘
WRAP-UP 결어/종합/대안
🚀 결론
이러한 개념은 "마이크로서비스 패턴(Microservices Patterns, 크리스 리처드슨)" 또는 "소프트웨어 아키텍처 패턴(Software Architecture Patterns)"과 같은 책에서 다루어지는 방식과 유사합니다. 이러한 3계층 마이크로서비스 패턴은 Inner/Outer 아키텍처를 다음과 같이 정의하여 연결할 수 있습니다.
✅ Inner Architecture는 개별 마이크로서비스 내부의 비즈니스 로직과 데이터 처리를 담당
✅ Outer Architecture는 서비스 간 통신, 인증, 배포 및 인프라 운영을 담당
🚀 Inner Architecture(내부 로직)와 Outer Architecture(배포 및 운영)으로 매핑은 직접적인 단일 출처는 없지만, 아래와 같은 주요 자료와 개념을 참고하여 종합했습니다.2025.04.02.
AUDITORIS(이 자료의 작성을 위해 ChatGPT가 도움을 주었습니다)
📌 아래 목록은 아키텍처 패턴과 이론을 종합하여 정리하면서 참고한 자료입니다. 완전히 표준화된 개념은 아니지만, 아래 책과 개념을 참고하기 바랍니다.
🔹 참고한 개념과 출처
- 《Microservices Patterns》 - 크리스 리처드슨 (Chris Richardson)
- 3계층 마이크로서비스 패턴: Infrastructure, Application Infrastructure, Application Pattern 구조 설명
- Inner vs Outer Architecture 개념은 명확하게 언급되지는 않지만,
→ 애플리케이션 내부 설계 (도메인 모델, 트랜잭션, CQRS)
→ 애플리케이션 외부 요소 (API Gateway, 서비스 메시, 인증 시스템) 로 구분 가능
- 《Software Architecture: The Hard Parts》 - 마크 리처즈 & 닐 포드
- 마이크로서비스 내에서 내부 아키텍처(서비스 자체)와 외부 아키텍처(배포, 인프라, 통합 패턴) 구분 개념 설명
- "System vs Application Architecture" 개념을 바탕으로 Inner/Outer 구조와 연관
- "Hexagonal Architecture" (Ports & Adapters Pattern) - Alistair Cockburn
- 내부 도메인 로직과 외부 인터페이스(API, 메시징, 데이터베이스 등) 분리 개념
- Inner(핵심 비즈니스 로직) vs Outer(외부 시스템과의 연결) 개념이 유사
- DDD (Domain-Driven Design) - 에릭 에반스 (Eric Evans)
- 도메인 모델을 내부 계층으로 두고, 외부 시스템과의 관계를 "Bounded Context"로 나누는 개념
- Spring Microservices in Action - John Carnell
- 마이크로서비스에서 API Gateway, Service Mesh, Authentication 등을 "외부 아키텍처"로 분리하는 접근
- 마이크로서비스 컨설팅 및 실무 사례
- 실제 여러 기업들이 Inner Layer(서비스 내부 비즈니스 로직)와 Outer Layer(배포, 통합, 인증 등)를 분리하는 방식 적용
- 예: Netflix OSS, Uber 마이크로서비스, Spotify의 Backstage 아키텍처
'CheckFact > 가까이서 본 기술' 카테고리의 다른 글
Context Map에서 관계를 명시하는 방법 (0) 2025.04.02 헥사고날 아키텍처 (Hexagonal Architecture) 심층 탐구 (0) 2025.03.25 MSA 개발의 함정을 피하는 필수 체크리스트: 분석 및 설계단계 점검항목 (0) 2025.03.22