Architecture Styles and Patterns

Architecture Styles and Patterns 는 애플리케이션 및 분산 시스템에서 반복적으로 나타나는 설계 구조를 체계화한 개념으로, 소프트웨어 시스템의 구조, 컴포넌트 간 상호작용, 데이터 흐름, 확장성, 유지보수성 등 시스템의 근간을 결정한다.
아키텍처 스타일은 응용 시스템의 전체 구조를 포괄하는 추상적 설계 지침 (예: 레이어드, 이벤트 드리븐, 마이크로서비스 등) 이며, 아키텍처 패턴은 이러한 스타일을 실제 구현 수준에서 구체화한 설계 템플릿이다. 스타일은 전체 조직 구조를 정의하며, 패턴은 모듈간 상호작용 및 컴포넌트 분리 방식 등 설계 상세를 제공한다. 각각은 요구사항에 따라 성능, 확장성, 유지보수성, 응답성, 보안 등 품질 속성에 대한 타협점을 설명하며, 실무에서는 이를 조합하거나 상황에 맞춰 커스터마이징하는 전략이 중요하다.

1. 핵심 개념

구분Architecture Style (아키텍처 스타일)Architecture Pattern (아키텍처 패턴)
정의시스템 전체의 구조를 정의하는 고수준 설계 규칙. 컴포넌트의 조직 방식과 상호작용 구조를 명시.반복적으로 발생하는 구조적 문제에 대한 검증된 설계 솔루션. 시스템 구현의 구체적인 설계 방식.
초점전체 시스템 구조의 정렬 및 일관성 유지특정 요구사항이나 문제 해결을 위한 구체적인 설계 방식 제공
영향 범위시스템 전체 (구조, 인터페이스, 비기능 요구사항 포함)특정 모듈, 계층, 또는 책임 단위의 구현 수준
예시Layered, Client-Server, Microservices, Event-DrivenMVC, CQRS, Pipe and Filter, Broker, Circuit Breaker
문서화 방식아키텍처 다이어그램, C4 모델, ADL설계 템플릿, UML 시퀀스 다이어그램, 코드 스니펫
주요 역할시스템 아키텍처의 방향성을 설정하고 컴포넌트 조립 원칙을 정의구체적인 문제 해결 방식으로 컴포넌트 상호작용 구조를 명확히 하고 재사용을 가능케 함

핵심 설계 원칙 (공통 기반)

원칙설명
관심사 분리 (Separation of Concerns)서로 다른 책임과 기능을 분리하여 독립성 유지
추상화 (Abstraction)복잡성을 숨기고 필수 기능만 외부에 노출
모듈화 (Modularity)기능 단위를 분리하여 독립적으로 개발·테스트 가능하게 함
재사용성 (Reusability)검증된 설계나 코드의 다양한 재사용 가능
확장성 (Scalability)수평·수직 확장이 가능한 구조 구성 지원

구조적 개념 요소

요소설명
컴포넌트 (Component)독립적이고 명확한 역할을 가지는 시스템 구성 요소
커넥터 (Connector)컴포넌트 간 통신과 데이터 흐름을 담당
레이어 (Layer)계층 구조로 각 층이 특정 역할을 담당
서비스 (Service)기능을 제공하는 논리적 독립 단위, 특히 Microservices 구조에서 핵심
이벤트 (Event)상태 변화나 트리거를 전달하는 비동기 신호
상태 관리 (State)Stateless vs Stateful 의 구분은 유연성과 복원성에 큰 영향

실무 구현 요소

항목설명
인터페이스 설계API 문서 (OpenAPI), RPC 명세 (gRPC, Protobuf) 기반 계약 정의
의존성 관리DI(Dependency Injection), 의존성 최소화를 통한 유연성 확보
설계 원칙 준수SOLID, DRY, KISS 등 개발 원칙 준수
프레임워크 활용Spring, React, Angular 등 스타일/패턴 적용을 지원하는 도구
비기능 요구사항 고려성능, 보안, 확장성, 가용성 등 시스템 SLA 고려
관측성 확보로그, 메트릭, 트레이싱을 통한 실시간 상태 감시
서비스 계약 정의Schema 기반 서비스 통신 계약 및 SLA 명세화
문서화C4 모델, ADR 등을 활용한 설계 근거 기록 및 공유

배경

소프트웨어 아키텍처 패턴은 1970 년대 MVC (Model-View-Controller) 패턴의 도입을 시작으로 발전해왔다. 소프트웨어 시스템의 복잡성 증가와 함께 체계적인 구조화 방법론의 필요성이 대두되었다. 대규모 시스템에서 구조적 설계, 확장성, 유지보수성, 협업 효율성을 높이기 위해 다양한 스타일과 패턴이 연구 및 적용되고 있다.

목적 및 필요성

주요 기능 및 역할

특징

핵심 원칙

원칙설명실무 효과적용 사례 및 주의점
관심사 분리(Separation of Concerns)서로 다른 기능과 책임을 논리적으로 분리하여 하나의 모듈이 한 가지 일에만 집중할 수 있도록 함모듈 독립성 향상, 코드 명확성 증가, 병렬 개발 가능MVC 패턴 (모델 - 뷰 - 컨트롤러 분리), 서비스 레이어 분리, 프론트/백 분리
추상화(Abstraction)복잡한 내부 구현은 숨기고, 필요한 인터페이스나 기능만 외부에 노출시스템 이해 및 유지보수 간소화, 의존성 줄이기인터페이스 기반 설계, ORM, API 설계시 내부 DB 구조 숨기기
모듈화(Modularity)시스템을 명확히 구분된 단위로 나눠서 독립적으로 개발 및 배포 가능하게 구성팀별 병렬 개발 가능, 재사용성·유지보수성 향상마이크로서비스, 플러그인 구조, 패키지 분할, 모놀리식 내 모듈 단위 분리
재사용성(Reusability)공통적으로 사용되는 설계 또는 코드를 재사용할 수 있도록 설계생산성 향상, 품질 보장, 중복 제거공용 모듈 (Auth, Logging), 설계 패턴 활용 (Mediator, Repository 등)
확장성(Scalability)시스템의 부하 증가에 따라 성능이나 기능을 유연하게 확장 가능시스템 성장 대응, 트래픽 증가 대응마이크로서비스 구조, 수평 확장 (Auto Scaling), Event-Driven 구조

주요 원리 및 작동 원리

요구사항 기반 아키텍처 설계 프로세스

flowchart TD
    A[시스템 요구사항] --> B[아키텍처 스타일 선택]
    B --> C[아키텍처 패턴 적용]
    C --> D[컴포넌트 및 커넥터 설계]
    D --> E[상호작용 규칙 정의]
    E -->|피드백| A

아키텍처 패턴의 설계 기여 요소

graph TB
    A[아키텍처 패턴] --> B[구조적 조직화]
    A --> C[행동 패턴 정의]
    A --> D[품질 속성 최적화]
    
    B --> B1[컴포넌트 분할]
    B --> B2[계층 구성]
    B --> B3[모듈 배치]
    
    C --> C1[상호작용 방식]
    C --> C2[데이터 흐름]
    C --> C3[제어 흐름]
    
    D --> D1[성능]
    D --> D2[확장성]
    D --> D3[유지보수성]
    D --> D4[보안]

Architecture Styles vs. Architecture Patterns 비교

구분Architecture Style (스타일)Architecture Pattern (패턴)
정의시스템의 전체적 구조 조직 원칙특정 문제 해결을 위한 재사용 가능한 솔루션
추상화 수준고수준, 전체 시스템중간 수준, 특정 구조/모듈
적용 범위시스템 전체특정 문제/모듈
목적전체 구조 및 상호작용 정의반복적 구조적 문제 해결
역할아키텍처 방향 제시기술 구현 가이드 제공
구현 시점초기 설계 단계설계 및 구현 단계
활용도초기 설계 아키텍트 주도개발 단계에서 구체 설계/코드 적용
영향 범위시스템 전체특정 모듈/컴포넌트
실무 적용 요소요구사항 분석, 비즈니스 정렬문제 도메인 파악, 패턴 선택
유연성전체 구조 고정구현 방법 설계 가능
커뮤니케이션추상적 이해 기반세부 협업용 양식
예시Monolithic, Microservices, LayeredMVC, CQRS, Publish-Subscribe

장점

분류항목설명
설계적 장점개념적 명확성아키텍처 스타일은 높은 추상화 수준에서 시스템 구조를 명확히 하여 전체 흐름 이해를 용이하게 함
설계 일관성 및 표준화스타일과 패턴의 적용으로 전체 시스템 또는 조직 내 일관된 설계 기준을 유지할 수 있음
재사용성구조적 원칙 (스타일) 과 해결 템플릿 (패턴) 은 다양한 프로젝트나 문제 상황에 반복적으로 적용 가능
분석 가능성스타일 기반의 구조적 제약 덕분에 성능, 보안, 확장성 등의 비기능 요구 분석이 용이
문제 해결 능력검증된 패턴은 반복적인 설계 문제에 대한 안정적이고 검증된 솔루션을 제공함
개발 효율성즉시 적용 가능성패턴은 구현 수준의 구체적 설계 가이드를 제공하여 빠른 문제 해결과 개발 속도 향상에 기여
개발 생산성구조와 책임 분리가 명확해 병렬 개발, 코드 품질 향상, 생산성 증대에 기여
테스트 용이성모듈화 및 독립된 컴포넌트 구조로 단위 및 통합 테스트 수행이 쉬움
유지보수성관심사 분리와 결합도 최소화를 통해 변경의 영향 범위를 줄이고 유지보수를 간편하게 만듦
운영 및 협업확장성서비스, 계층, 모듈 단위로 수평/수직 확장이 가능하며 시스템 성능 확보가 용이
협업 효율성명확한 책임 분리와 인터페이스 정의로 팀 간 병렬 개발 및 커뮤니케이션 비용 감소
보안 및 관찰성 강화로깅, 인증, 트레이싱 등을 중앙 집중화하여 보안과 문제 추적 효율을 높임
리스크 감소검증된 스타일과 패턴 채택으로 아키텍처 설계 실패 위험을 줄이고 안정성 확보 가능
학습 효과패턴 중심의 학습은 구조적 설계 원칙과 코드 품질 향상을 함께 달성하게 함

단점과 문제점 그리고 해결방안

단점
분류단점 항목설명해결책
공통복잡성 증가다양한 계층·패턴 조합 시 구조가 비대해지고 이해·운영이 어려움계층 최소화, 문서화 강화, 도입 범위 조절
학습 곡선스타일과 패턴의 조합 이해 및 적용에 일정한 학습 시간이 요구됨사내 교육, 실습 기반 도입, 핵심부터 점진 도입
과도한 추상화과하게 나눈 레이어 및 인터페이스로 인해 오히려 이해도 저하최소 책임 단위 설계, 추상화 층 재구성
성능 오버헤드레이어 간 호출, 중간 컴포넌트, 게이트웨이 등을 통한 지연 발생병합 가능한 레이어 축소, 캐시/비동기 도입
초기 생산성 저하아키텍처 설계와 인프라 구성으로 인해 초기 개발 속도가 느려질 수 있음템플릿 기반 초기화, 핵심 로직 우선 구현
Styles 특화구현 가이드 부족스타일은 추상적 개념이므로 구체적인 구현 방향을 제시하지 못함스타일 + 패턴 병행 적용, ADR 문서화 활용
경직성선택한 스타일의 구조 변경이 어려워 장기적으로 유연성 부족하이브리드 설계, 점진적 진화 아키텍처 적용
과도한 제약일부 스타일은 기술 선택, 구조적 확장 등에 제약을 줄 수 있음예외 규칙 정의, 설계 허용 범위 명확화
Patterns 특화패턴 남용상황에 맞지 않는 패턴의 무분별한 적용으로 오히려 복잡성 유발적용 조건 명확화, 체크리스트 기반 선택
복잡성 증가여러 패턴이 동시에 적용되면 구조와 의존도가 얽히고 확장성 저하패턴 간 조합 매트릭스 설계 및 문서화
성능 오버헤드패턴 내부 추상화 계층 또는 프로세스 간 통신으로 인한 성능 저하 발생성능 테스트, 프로파일링 기반 최적화
문제점
분류항목원인영향탐지 및 진단예방 방법해결 방법 및 기법
공통스타일·패턴 불일치설계 초기 명세 부족, 도큐먼트 부재시스템 통합 실패, 충돌 가능성코드 종속성 분석, 스타일 간 위반 체크ADR 문서화, 정기 아키텍처 리뷰구조 정비, 스타일/패턴 재정의
계층 경계 침해레이어 책임 불분명, 직접 접근 허용결합도 상승, 테스트 불가코드 리뷰, 의존성 그래프 분석명확한 인터페이스 정의, 계층 책임 명세인터페이스 분리, 경계 재설계
모듈 간 결합도 증가인터페이스 명세 부족, 컴포넌트 설계 부재변경 시 파급 영향 증가, 확장성 저하UML, 코드 의존성 시각화도메인별 분리 설계, 명세 기반 통신 적용Mediator, Adapter 등 패턴 활용한 리팩토링
게이트웨이에 로직 집중API Gateway 에 비즈니스 로직 포함단일 장애점, 유지보수 복잡화게이트웨이 로그 분석, 호출 경로 추적Aggregation 전용 서비스 분리라우팅 전용, 데이터 통합 전용 컴포넌트 분리
확장성 한계단일 인스턴스 또는 상태 기반 구조스케일링 어려움, 병목 발생부하 테스트, 스케일링 시뮬레이션무상태 설계, 수평 확장 고려한 구조CQRS, 이벤트 기반 구조, 메시지 브로커 도입
Styles 특화스타일 침식시간이 지나면서 원칙 무시, 일관성 무너짐아키텍처 무결성 손상아키텍처 메트릭 추적, 규칙 위반 감지아키텍처 리뷰 프로세스, 규칙 문서화주기적 리팩토링, 원칙 재정립
오버 엔지니어링복잡한 구조의 무비판적 도입개발 속도 저하, 인적 자원 낭비설계 복잡도 분석 (모듈 수, 계층 수)요구사항 기반 설계, 경량 스타일 적용단순화 리팩토링, 핵심 기능 중심 재설계
Patterns 특화잘못된 패턴 선택요구사항에 부적합한 패턴 적용성능 저하, 비효율적 구조성능 테스트, 요구사항 - 패턴 매핑 검토POC, 적용 전 검증 문서화경량화, 교체 또는 제거
패턴 충돌비호환 패턴 간 조합시스템 불안정성, 의도된 결과 미출력패턴 조합 시나리오 테스트, 리뷰패턴 간 조합 매트릭스 수립, 리뷰 프로세스 강화중재 패턴 도입 (e.g., Mediator, Adapter)
통합 문제분산된 서비스/모듈 간 인터페이스 설계 부족통합 테스트 실패, 릴리즈 지연통합 테스트 자동화, API 검증 도구 사용명확한 API 스펙, Gateway 및 BFF 패턴 도입통합 전용 계층/서비스 도입, 계약 기반 개발 적용

구조 및 아키텍처

Architecture Styles

Architecture Styles 는 다음과 같은 필수 구성요소로 이루어진다:

graph TB
    A[Architecture Style] --> B[Components]
    A --> C[Connectors]
    A --> D[Constraints]
    A --> E[Properties]
    
    B --> F[Data Processing]
    B --> G[User Interface]
    B --> H[Business Logic]
    
    C --> I[Method Calls]
    C --> J[Message Passing]
    C --> K[Data Streams]
    
    D --> L[Interaction Rules]
    D --> M[Access Control]
    
    E --> N[Performance]
    E --> O[Scalability]
    E --> P[Reliability]
구분항목설명
필수 구성요소컴포넌트 (Components)시스템의 기능을 수행하는 기본 단위로, 명확한 책임을 가진 독립 모듈
커넥터 (Connectors)컴포넌트 간 데이터 흐름과 제어 흐름을 중재하는 통신 메커니즘 (예: REST, 메시지 큐)
제약사항 (Constraints)컴포넌트 배치, 연결 방식, 데이터 흐름 등 구조적·행위적 제한 사항
속성 (Properties)시스템이 갖춰야 할 품질 특성 (성능, 보안, 확장성 등)
선택 구성요소패턴 카탈로그 (Pattern Catalog)아키텍처 스타일 내에서 선택적으로 적용 가능한 패턴 모음 (예: Pipe-and-Filter 내의 Filter 패턴)
가이드라인 (Guidelines)스타일 또는 패턴 구현 시 따라야 할 설계 지침과 베스트 프랙티스
메트릭 (Metrics)아키텍처의 품질을 평가하기 위한 정량적 기준 (응답 시간, 오류율, 결합도 등)
Architecture Patterns

Architecture Patterns 는 구체적인 해결책을 제공하는 구조로 구성된다:

graph TB
    A[Architecture Pattern] --> B[Problem Definition]
    A --> C[Solution Structure]
    A --> D[Implementation Guide]
    A --> E[Consequences]
    
    B --> F[Context]
    B --> G[Forces]
    
    C --> H[Participants]
    C --> I[Collaborations]
    
    D --> J[Code Examples]
    D --> K[Configuration]
    
    E --> L[Benefits]
    E --> M[Liabilities]
구분항목설명
필수 구성요소문제 정의 (Problem)패턴이 해결하고자 하는 일반적이면서 반복적인 구조적 문제
솔루션 (Solution)문제 해결을 위한 검증된 설계 방식 또는 구조적 접근 방법
구현 가이드 (Implementation)설계를 구현하기 위한 기술적 지침, 구조, 기술 스택 안내
결과 (Consequences)패턴 적용의 장점과 단점, 시스템에 미치는 영향 및 트레이드오프
선택 구성요소변형 패턴 (Variants)상황에 따라 조정된 패턴의 변형 형태 (예: CQRS + Event Sourcing)
관련 패턴 (Related Patterns)유사한 문제를 해결하거나 함께 사용되는 패턴들 (예: Adapter + Facade)
사례 연구 (Case Studies)실제 프로젝트에서 해당 패턴이 어떻게 적용되었는지에 대한 실증적 예시

Architecture Style 와 Architecture Pattern 매핑 테이블

분류 (Category)Architecture StyleArchitecture Patterns / Substyle설명주요 사용 사례
🏗️ StructuralLayered ArchitectureN-Tier, MVC, MVP, MVVM, PAC계층 기반 책임 분리 및 프레젠테이션 구조화엔터프라이즈, 웹/GUI 앱
Component-Based ArchitectureMicrokernel/Plugin, Composite, Module Federation, Dependency Management컴포넌트 조합, 플러그인, 의존성 관리IDE, CMS, 모듈러 시스템
Monolithic ArchitectureModular Monolithic, Feature Slicing단일 배포 단위, 내부 모듈화스타트업, 간단한 비즈니스 앱
Clean Architecture FamilyHexagonal(Ports & Adapters), Onion, Clean도메인 중심 구조적 설계도메인 주도, 테스트 중심 개발
🌊 Data-FlowPipe-and-FiltersETL Pipeline, Stream Processing, Data Pipeline데이터 변환 체인 처리데이터 분석, 미디어 처리
Batch ProcessingMapReduce, Spark Batch, Workflow Engine대용량 데이터 일괄 처리빅데이터 분석, 보고서 생성
🌐 DistributedClient-ServerThin Client, Thick Client, Web-based중앙집중식 서버 구조전통적 웹/데스크톱 앱
Peer-to-Peer (P2P)DHT, Gossip Protocol, Blockchain분산 노드 간 직접 연결파일 공유, 암호화폐
Space-Based ArchitectureTuple Space, In-Memory Data Grid공유 메모리 기반 분산 처리고성능 트레이딩, 실시간 게임
Cell-Based ArchitectureIsolated Cells, Bulkhead Pattern격리된 셀 단위 구조대규모 클라우드 서비스
🔧 Service-OrientedSOA (Service-Oriented)Orchestration, Choreography, ESB, Service Registry서비스 중심 엔터프라이즈 통합레거시 시스템 통합
Microservices ArchitectureService Mesh, Backend for Frontends (BFF), CQRS, Event Sourcing, Saga독립 배포 가능한 소규모 서비스대규모 분산 애플리케이션
📨 Messaging/EventEvent-Driven ArchitecturePublish-Subscribe, Event Bus, Event Streaming이벤트 중심 비동기 구조IoT, 실시간 알림
Message-Driven ArchitecturePoint-to-Point, Message Queue, Topic-based메시지 기반 비동기 통신분산 시스템 통신
⚡ ReactiveReactive SystemsActor Model, Reactive Streams, Backpressure반응형, 탄력적, 복원력높은 동시성 시스템
Event-Driven ReactiveNon-blocking I/O, Async Processing비동기 논블로킹 처리고성능 웹 서버
☁️ Cloud-NativeServerless ArchitectureFaaS, Edge Functions서버리스 함수 기반 실행이벤트 처리, 마이크로태스크
Container-Based ArchitectureSidecar, Ambassador컨테이너 기반 마이크로서비스쿠버네티스 환경
Multi-Cloud ArchitectureCloud Abstraction, Federated Services다중 클라우드 환경 운영벤더 종속성 회피
💾 Data-CentricLambda ArchitectureBatch Layer, Speed Layer, Serving Layer배치와 실시간 처리 결합빅데이터 분석 플랫폼
Kappa ArchitectureStream-Only Processing, Event Replay스트림 처리 중심 단순화실시간 분석 시스템
Data Mesh ArchitectureDomain-Oriented, Self-Service Platform도메인 중심 분산 데이터 관리대기업 데이터 거버넌스
Lakehouse ArchitectureData Lake + Data Warehouse구조화/비구조화 데이터 통합통합 분석 플랫폼
🔄 Cross-Cutting(범용 패턴)API Gateway, Circuit Breaker, Load Balancer여러 아키텍처에서 공통 사용분산 시스템 공통 관심사

도전 과제

기술적 도전 과제 (Technical Challenges)

구분도전 과제설명관련 원인/영향대표 해결 기법
1. 복잡성 관리스타일·패턴 혼합의 구조 복잡도다양한 스타일/패턴을 조합하면 경계가 모호해지고 시스템 설계가 난해해짐설계 일관성 저하, 유지보수 부담Bounded Context, DDD, 계층 캡슐화
CQRS/Event Sourcing 도입 복잡도이벤트 정합성, 동기화, 스키마 진화 등에서 발생하는 운영·구현 난이도개발 복잡도 증가, 디버깅 어려움Compensating Transaction, Event Replay
2. 성능 최적화네트워크·직렬화 비용, 패턴 오버헤드패턴 적용 시 간접 호출/계층 증가로 인한 지연, 마이크로서비스 간 통신 비용 발생응답 지연, 자원 낭비, 비용 증가gRPC, 비동기 처리, 캐싱, Batching, 연결 풀링
3. 데이터 일관성분산 트랜잭션 및 CAP 트레이드오프 문제ACID 를 보장하기 어려운 환경에서 eventual consistency 가 필요함dirty read, stale dataCQRS, Saga, Eventual Consistency 모델 적용
4. 장애 대응성장애 감지 및 복구 구현의 복잡성분산 환경에서 장애 원인 추적 및 자동 복구 설계가 어려움가용성 저하, 서비스 중단AutoHealing, Circuit Breaker, Replica Set
5. 네트워크 신뢰성비동기 메시지 처리 및 순서 보장 문제메시지 지연, 순서 꼬임, 중복 처리 등으로 상태 불일치 발생데이터 손실, 디버깅 어려움메시지 브로커, Idempotent 처리, Kafka, Outbox Pattern
마이크로서비스 특유 도전 과제

조직적 도전 과제 (Organizational Challenges)

구분도전 과제설명관련 원인/영향대표 해결 기법
1. 팀 협업크로스팀 아키텍처 이해 부족패턴/스타일에 대한 공동 이해가 부족하면 커뮤니케이션 오류 및 통합 실패 가능성 증가병렬 개발 장애, 의존성 충돌API-First, Contract Testing, 통합 문서화
2. 운영 문화 미성숙DevOps, SRE 등 운영 문화 부족관찰성, 배포 자동화, 장애 대응 문화가 부재하면 빠른 대응이 어려움MTTR 증가, 릴리즈 실패GitOps, CI/CD 표준화, SRE 운영 모델 구축
3. 변화 관리아키텍처 변경과 스타일 진화 관리기술 변화·기능 요구 증가에 따른 스타일 변경 시 이력 관리 및 일관성 유지 어려움리팩토링 누락, 구조 불일치ADR 관리, Architecture Decision Record 활용
4. 문서/지식 부족아키텍처 표준, 가이드 문서 미흡스타일 - 패턴 매핑, 정책 정의, 적용 기준 등이 공유되지 않으면 설계 재현이 불가능함품질 편차, 구조 혼란메타 아키텍처 문서화 (스타일·패턴 템플릿/예시 포함)

비즈니스 도전 과제 (Business Challenges)

구분도전 과제설명관련 원인/영향대표 해결 기법
1. 기술 부채 누적레거시 통합 및 임시 구현의 지속적 증가빠른 출시를 위해 정제되지 않은 패턴 적용 시 기술 부채가 누적됨유지보수 비용 증가, 기능 이탈Strangler Pattern, 단계적 마이그레이션, 기술부채 관리 도구
2. 비용 최적화 부담패턴 도입의 리소스/운영 비용 증가마이크로서비스 확산에 따른 리소스 과소비 및 메시지 포맷의 비효율성 등클라우드 비용 증가, 성능 저하Binary Protocol, 경량 API, 리소스 기반 비용 추적
3. 버전 관리/진화 문제패턴/스키마 버전 호환성 유지의 어려움이벤트/API 진화 시 backward/forward 호환 유지가 어렵고 충돌 발생 가능성 있음통합 실패, 릴리즈 실패Schema Registry, Protobuf/Avro, API 버전 정책 적용
4. 아키텍처 ROI 불확실성스타일/패턴 도입에 대한 효과 불확실성도입 비용은 높은데, 효과가 모호할 경우 지속적인 적용 정당성 확보 어려움확장 지연, 보수적 아키텍처 선택파일럿 검증, 정량적 KPI 측정, 설계 의사결정 비용 - 효과 평가 도입

보완 개념: Fallacies of Distributed Computing → 설계 시 항상 주의할 도전 과제

잘못된 가정실질적 도전 과제
네트워크는 항상 신뢰할 수 있다패킷 손실, 네트워크 파티션, 라우팅 오류 발생 가능
지연은 없다API/브로커/DB 레이어 간 호출이 누적되며 성능 저하 요인이 됨
보안은 보장되어 있다인증·인가 미흡 시 내부 공격 또는 데이터 노출 위험
네트워크 토폴로지는 고정되어 있다클라우드 환경에서는 배포 구조와 위치가 수시로 변경될 수 있음
전송 비용은 0 이다메시지 포맷, 직렬화 비용, API 호출이 자원 및 비용에 큰 영향을 줌
한 명의 관리자만 있으면 된다마이크로서비스는 여러 팀이 병렬로 운영해야 하며 팀 경계와 책임 분산이 필수

실무 사용 예시

사용 목적함께 사용되는 기술 예시기대 효과
엔터프라이즈 시스템 설계Layered Style + MVC Pattern + Spring Framework유지보수성 향상, 팀 간 협업 효율성
마이크로서비스 아키텍처Service-Oriented Style + Microservices Pattern + Docker/Kubernetes확장성, 독립적 배포, 기술 다양성
실시간 스트리밍 시스템Event-Driven Style + Pub-Sub Pattern + Apache Kafka실시간 처리, 높은 처리량, 장애 격리
데이터 파이프라인Pipe-Filter Style + ETL Pattern + Apache Airflow데이터 품질, 처리 효율성, 모니터링
웹 애플리케이션Client-Server Style + RESTful Pattern + React/Node.js사용자 경험, 개발 생산성, 확장성

활용 사례

사례 1: 웹 애플리케이션

시스템 구성: 프론트엔드, 백엔드, 데이터베이스

역할: 프론트엔드는 사용자 인터페이스, 백엔드는 비즈니스 로직, 데이터베이스는 데이터 저장

Workflow:

  1. 사용자가 프론트엔드에서 요청
  2. 백엔드에서 비즈니스 로직 처리
  3. 데이터베이스에서 데이터 조회/저장
  4. 결과를 프론트엔드에 반환

시스템 다이어그램:

classDiagram
    class Frontend {
        +renderUI()
        +sendRequest()
    }
    class Backend {
        +processRequest()
        +accessDB()
    }
    class Database {
        +storeData()
        +retrieveData()
    }
    Frontend --> Backend
    Backend --> Database

차이점: 모놀리식 아키텍처는 모든 기능이 하나의 코드베이스, 레이어드/마이크로서비스는 역할 분리 및 독립적 개발 가능

사례 2: 주문 - 결제 - 재고 처리 (Choreography 기반 Saga)

구성 요소 및 역할:

시스템 흐름 (Workflow)

flowchart TD
  UI --> OrderSvc[Order Service]
  OrderSvc --> |OrderCreated| EventBus
  EventBus --> PaymentSvc[Payment Service]
  PaymentSvc --> |PaymentProcessed| EventBus
  EventBus --> InventorySvc[Inventory Service]
  InventorySvc --> |InventoryReserved| EventBus
  InventorySvc --> |InventoryFailed| EventBus
  PaymentSvc --> |PaymentFailed| EventBus
  InventorySvc --> Compensation[Compensation Transactions]
  Compensation --> OrderSvc
  1. UI(사용자 인터페이스) 에서 Order Service 에 주문 요청을 보낸다.
  2. Order Service 는 주문이 성공적으로 생성되면 OrderCreated 이벤트를 EventBus(예: Kafka, RabbitMQ 등) 에 발행한다.
  3. Payment ServiceOrderCreated 이벤트를 구독하고, 결제를 처리한 후:
    • 성공 시 PaymentProcessed 이벤트를 발행하고,
    • 실패 시 PaymentFailed 이벤트를 발행한다.
  4. Inventory ServicePaymentProcessed 이벤트를 구독하고, 재고를 확인 및 예약한다:
    • 재고가 충분할 경우 InventoryReserved 이벤트 발행,
    • 부족할 경우 InventoryFailed 이벤트 발행.
  5. 만약 InventoryFailed 가 발생하면:
    • Inventory Service 는 자체적으로 보상 트랜잭션 (Compensation) 을 수행하고,
    • 해당 보상 결과를 Order Service 에 전달한다 (예: 주문 취소 또는 상태 변경).

이 흐름은 각 서비스가 자신의 이벤트를 발행하고 다음 단계를 호출하는 Choreography 방식이다.

Choreography 방식

중앙 오케스트레이터 없이, 각 서비스가 이벤트를 발행하고 다른 서비스가 이를 구독하여 비동기적으로 반응하는 분산 이벤트 기반 협조 방식.

특징:

항목설명
중앙 제어 없음각 서비스가 자율적으로 자신의 책임 범위를 처리하며, 중앙 컨트롤러 (Orchestrator) 는 없음
이벤트 중심 통신서비스 간 통신은 이벤트 → 반응 구조로 설계되며, 메시지 브로커를 통해 전달됨
비동기 흐름각 단계는 비동기적으로 실행되며, 느슨한 결합 (loose coupling) 을 보장함
확장성과 유연성새로운 서비스가 추가되어도 기존 서비스 수정 없이 이벤트 구독만으로 통합 가능

장점과 단점:

구분항목설명
장점느슨한 결합 구조각 서비스가 이벤트로만 연결되어 있어 변경 및 확장에 유연함
서비스 자율성 보장각 서비스가 자체 로직과 상태를 관리하며 독립적으로 동작
자연스러운 비즈니스 흐름 구성오케스트레이터 없이 이벤트 흐름에 따라 비즈니스 로직이 유기적으로 전개됨
단점흐름 추적 어려움중앙 통제 없이 분산되므로 전체 플로우를 시각화/추적하기 어려워 분산 트레이싱 필수
오류 및 예외 처리 분산실패 처리 및 복구 책임이 각 서비스에 흩어져 있어 관리 복잡도 증가
전역 트랜잭션 제어 어려움ACID 트랜잭션 불가능, 대신 보상 트랜잭션 (Saga 등) 도입 필요

실제 기업 사례:

요약 정리:

사례 3: Netflix 의 마이크로서비스 아키텍처

시스템 구성:

시스템 구성 다이어그램:

graph TB
    subgraph "Netflix Microservices Architecture"
        A[Mobile/Web Client] --> B[API Gateway]
        B --> C[Authentication Service]
        B --> D[Recommendation Service]
        B --> E[Content Service]
        B --> F[User Service]
        
        G[Service Discovery] --> C
        G --> D
        G --> E
        G --> F
        
        H[Event Bus] --> I[Analytics Service]
        H --> J[Billing Service]
        
        D --> H
        E --> H
        F --> H
    end

Workflow:

  1. 클라이언트 요청 → API Gateway 라우팅
  2. 인증 서비스 → 사용자 검증
  3. 추천 서비스 → 개인화된 콘텐츠 제공
  4. 이벤트 발행 → 분석 및 빌링 서비스 처리

역할 및 차이점:

사례 4: 전자상거래 시스템의 결제 서비스 장애 대응

활용 대상: 전자상거래 플랫폼 (여러 마이크로서비스 구조)

시스템 구성 및 역할:

워크플로우:

  1. Order Service 가 Payment Service 호출
  2. 실패율 기준 초과 시 Circuit Breaker 열림
  3. fallback 처리 후 사용자에 오류 페이지 또는 대체 흐름 제공

비교: Circuit Breaker 미도입 시, 장애 전파 → 전자상거래 전체 장애
→ 도입 시, 주문 흐름 유지 및 결제 외 부분 정상 운영

sequenceDiagram
    participant O as Order Service
    participant P as Payment Service
    participant CB as Circuit Breaker Proxy
    participant F as Fallback Handler

    O->>CB: 결제 요청
    CB->>P: 서비스 호출
    alt P 장애
      CB--xP: 호출 차단
      CB->>F: fallback 실행
      F->>O: 오류 응답
    else 정상 응답
      P->>CB: 성공 응답
      CB->>O: 응답 전달
    end

사례 5: 전자상거래 플랫폼에서 Microservices Style 과 CQRS Pattern 적용

시스템 구성:

시스템 구성 다이어그램

graph TD
    A[User Service] --> B[API Gateway]
    C[Product Service] --> B
    D[Order Service] --> B
    B --> E[Frontend]
    D -->|Order Event| F[Event Bus]
    F --> G[Notification Service]
    F --> H[Analytics Service]

Workflow

  1. 사용자가 주문 생성
  2. Order Service 에서 주문 처리 및 이벤트 발행
  3. Event Bus 를 통해 Notification Service, Analytics Service 에 이벤트 전달
  4. 각 서비스에서 이벤트 처리

역할

차이점

실무 적용 시 유의사항

카테고리고려 사항설명권장 사항
1. 요구사항 기반 설계기능/비기능 요구사항 분석과도한 스타일/패턴 적용은 개발 비용 증가 및 복잡도 유발MVP → 점진 확장 / SLA 기반 설계 / 기술 스택에 적합한 구조 선택
프로젝트 규모·복잡도 고려소규모 프로젝트에 복잡한 이벤트 기반 구조는 오히려 비효율팀 규모와 기술 숙련도 기반의 적절한 구조 선택
장애 허용 수준 및 복원력 정의시스템마다 허용 가능한 실패 조건이 다르므로 설계 전략이 달라져야 함fail‑fast, retry, timeout, fallback 전략 설정
2. 아키텍처 스타일 선택도메인/비즈니스 흐름과 스타일 적합성스타일은 변경이 어렵고 시스템 전체에 영향을 미치므로 선택 시 주의 필요Bounded Context 기반 스타일 매핑 / 유연한 스타일 조합 (예: Layered + Event-Driven)
팀의 기술 역량 및 유지 가능성복잡한 스타일을 이해하지 못하면 유지보수 및 협업 어려움 유발도입 전 교육, 내부 지식 전파, ADR 문서화
시스템 수명 주기 고려단기 시스템에 오버 엔지니어링 적용 시 ROI 낮음경량 스타일 → 복잡성은 확장 가능하게 구성
3. 패턴 선택 및 설계해결하려는 문제 명확화패턴은 특정 문제에 최적화된 해법이므로, 적합성 판단 없이 적용하면 과공학화 위험문제 - 패턴 매칭 체크리스트 활용 / POC 로 검증
패턴 조합 및 상호작용복합 패턴 도입 시 예기치 못한 충돌 발생 가능조합 가이드 수립 / 패턴 간 책임 명확화
성능과 품질 특성에 대한 영향일부 패턴은 성능에 악영향 (ex. Mediator, Observer 의 과도한 사용 등)정량적 성능 테스트 + 트레이싱 기반 검증
4. 운영 및 관찰성메시지 흐름/상태 추적이벤트 중심 시스템은 흐름이 숨겨져 있으므로 분산 트레이싱 도입 필수OpenTelemetry, Jaeger, 공통 Trace ID 활용
백프레셔 및 처리 속도 불균형메시지 소비 속도보다 생산 속도가 높을 경우 병목 발생Consumer Scaler, Rate Limiter, Circuit Breaker
에러/재처리 로직 분리실패 메시지의 무한 재시도 또는 침묵 무시는 전체 시스템에 영향을 줌DLQ + Retry Queue 분리, 장애 시 대응 시나리오 정의
5. 데이터 및 계약 관리이벤트/API 스키마 버전 관리서비스 간 계약 불일치 발생 시 장애 발생 가능JSON Schema Registry, versioning, backward compatibility 적용
CQRS/Replication 일관성 관리읽기/쓰기 경로 분리 시 정합성 오류 발생 위험 존재이벤트 타임스탬프 기반 재정렬, eventual consistency 허용 설계
데이터 소유권 및 분리 설계데이터 공유는 결합도를 증가시키므로 서비스 간 데이터 소유 주체를 명확히 해야 함데이터 오너십 기반 분리, API 대신 이벤트로 동기화 설계
6. 협업 및 조직적 준비문서화 및 지식 공유스타일/패턴 구조 및 흐름이 공유되지 않으면 협업·운영·이관이 어려움ADR(Architecture Decision Record), DSL 기반 명세서 작성, 설계 워크숍
팀 간 API 계약 및 통신 구조 정합성통신 실패나 버전 차이로 인한 장애 빈번API-First, OpenAPI 문서화, Contract Testing 도입
조직 문화/운영 체계 성숙도마이크로서비스 및 패턴 설계는 조직 내 DevOps, SRE, 자동화 기반이 필수GitOps, CI/CD 자동화, IaC, SRE SLA/SLI/SLO 적용
7. 자동화 및 확장 전략배포/롤백 자동화패턴 적용이 증가할수록 수작업 배포의 리스크도 함께 증가GitOps 기반 파이프라인 + Helm/Kustomize 조합
테스트 체계 구축복잡한 구조에서 통합 테스트 미비 시 장애 예측 불가테스트 피라미드 적용 (Unit → Integration → E2E)
점진적 적용 전략초기부터 모든 패턴/스타일 적용은 오히려 리스크가 높아짐핵심 기능부터 패턴/스타일 적용 → 점진적으로 확장

최적화하기 위한 고려사항 및 주의할 점

카테고리고려 요소주요 설명주의할 점 / 리스크권장사항
1. 성능 (Performance)병목 지점 식별레이어 간 통신, DB 쿼리, 메시지 큐, API 호출 등에서의 병목 분석 필요조기 최적화 → 설계 복잡성 증가측정 기반 최적화 (A/B Test, 프로파일링, 성능 로그 분석)
캐싱 전략 수립읽기 빈도가 높은 데이터에 대한 캐시 도입캐시 불일치, TTL 미설정 문제계층적 캐시 구조 (메모리 ↔ Redis), 캐시 무효화 정책 적용
비동기 처리 도입I/O 및 메시지 큐 기반 아키텍처에서 필수 요소디버깅 복잡도, 트랜잭션 처리 어려움이벤트 루프/워크 큐 + 관측성 강화 (Trace ID 등) 도입
메시지 처리량 최적화큐 브로커 처리량/속도 최적화큐 적체 → 처리 지연 또는 메시지 손실배치 처리, 파티셔닝, Backpressure 설계, Kafka-like 구조 활용
2. 확장성 (Scalability)Stateless 설계수평 확장을 위한 상태 제거 / 외부화세션/상태 저장 시 복잡성 증가세션 외부 저장소 (Redis), 토큰 기반 인증 (JWT) 적용
서비스 분할 (모듈성/도메인 중심)마이크로서비스, Bounded Context 기반 설계경계 정의 미흡 시 오히려 Coupling 발생DDD 적용, 도메인 기준 인터페이스 설계
로드밸런싱/이중화컴포넌트 장애 시 자동 회복 구조 마련싱글 포인트 장애 (SPOF) 발생 가능헬스체크, 무중단 배포, 다중 인스턴스 운영
데이터 분산샤딩/파티셔닝 설계로 데이터 확장성 확보분산 트랜잭션, 일관성 관리 어려움CQRS, Eventual Consistency 모델 도입
3. 유지보수성 (Maintainability)모듈화/결합도 관리책임 기반 분할과 인터페이스 중심 구조 설계과도한 분할로 인한 복잡도 증가적절한 granularity 유지, 인터페이스 표준화
테스트 전략 설계다양한 스타일/패턴 조합에 대한 통합 테스트 시나리오 필요통합 시나리오 미흡 시 장애 전파 가능성테스트 피라미드 적용 (단위, 통합, E2E), 부하 테스트 포함
코드 품질 및 문서화코드 리팩토링과 문서 자동화로 가독성 및 유지보수성 확보과도한 문서화로 인한 생산성 저하ADR 관리, Swagger/OpenAPI, 자동 문서 생성 도구 사용
4. 운영/배포 (Deployment & Operability)배포 구조 최적화대규모 서비스에서 병렬 배포, Canary 배포 전략 필요대규모 병합 배포 시 장애 파급 가능성파이프라인 병렬화, Canary/Rolling 업데이트 적용
자동화/CI 파이프라인 설계반복적인 테스트/배포 과정 자동화로 품질 향상스크립트 복잡성, 유지보수 오버헤드GitOps, IaC(Terraform), CI/CD 구성 도구 활용
장애 복구 및 회복력Circuit Breaker, Retry, Fallback 등으로 실패 복원력 확보실패 감지가 늦으면 장애 확산패턴 기반 설계 (Resilience4j, Hystrix 등), 알람/자동복구 설정
5. 관측 가능성 (Observability)모니터링/트레이싱분산 아키텍처에서 문제 원인 추적을 위한 필수 요소로그 포맷 불일치, 과도한 노이즈OpenTelemetry, 공통 포맷 적용, 중앙화 수집 시스템 구축
로그/메트릭/트레이스 통합이벤트 기반 추적 및 요청 경로 시각화로 가시성 확보각 서비스별 설정 불일치 시 분석 난이도 상승구조화 로그, Trace ID, Prometheus + Grafana 등 도구 통합
6. 기술적 진화 및 안정성 (Evolvability & Compatibility)스키마 변경/버전 관리메시지/데이터 포맷 진화에 따른 서비스 충돌 방지 필요호환성 없는 스키마 변경 시 클라이언트 오류backward/forward compatible 스키마 설계 (Avro/Protobuf 등)
보안 통합 설계다양한 인증/인가 방식 확산에 따른 아키텍처 경계 고려인증 중복, 복잡한 권한 처리중앙 인증 서버, short-lived token, mTLS, OAuth2 설계 적용
기술 부채 최소화새로운 기술 채택 또는 아키텍처 전환 시 기술 부채 증가 가능성레거시 시스템 통합 실패기술 도입 시 평가 기준 마련, 리팩토링 로드맵 주기적 수립

주제와 관련하여 주목할 내용

카테고리주제항목설명
아키텍처 스타일레이어드 아키텍처계층 분리프레젠테이션, 도메인, 데이터 계층 분리로 모듈화와 테스트 용이
마이크로서비스 아키텍처독립 배포 서비스각 서비스는 독립적으로 배포 가능하며, 조직 구조와 매핑 가능
이벤트 드리븐 아키텍처비동기 처리, Pub/Sub 구조서비스 간 이벤트 발행과 구독으로 확장성과 유연성 확보
서버리스 아키텍처함수 단위 실행, 관리 최소화코드 단위 실행으로 인프라 부담 감소, 고확장성 제공
마이크로커널 아키텍처플러그인 방식 모듈 구조핵심 기능 + 확장 기능의 분리 구조, IDE 및 OS 에서 활용
아키텍처 패턴CQRS명령과 조회 분리읽기와 쓰기를 분리해 성능 최적화 및 확장성 향상
Event Sourcing이벤트 기반 상태 저장모든 상태 변화를 이벤트로 저장, 감사 추적 및 롤백 가능
Pub/Sub비동기 메시징발행자와 구독자 간 느슨한 결합으로 유연한 확장 구조 구현
Saga Pattern분산 트랜잭션 처리롤백 없는 장기 실행 트랜잭션을 이벤트 또는 보상 작업으로 처리
Circuit Breaker장애 전파 차단실패 요청 차단을 통해 전체 시스템 안정성 확보
최적화 전략반응형 시스템 설계Elastic, Resilient, Message Driven높은 가용성과 응답성 보장, Reactive Manifesto 기반
모듈화Bounded Context, Shared Kernel기능 단위 분할을 통한 재사용성과 변경 용이성 강화
캐싱 전략CDN, Redis, Local Memory데이터 접근 성능 향상 및 부하 분산
로드 밸런싱L4/L7 레벨 분산고가용성 및 수평 확장을 위한 필수 구성요소
운영 및 관측 도구서비스 메시Istio, Linkerd트래픽 제어, 인증, 정책 적용 등 서비스 간 통신 관리 자동화
분산 추적 도구Zipkin, Jaeger분산 환경 내 요청 흐름 시각화 및 병목 구간 탐지
Chaos Engineering장애 시뮬레이션 및 복원력 테스트시스템 안정성 확보 위한 실험 기반 운영 전략
보안 및 정책Zero Trust인증·인가·암호화 자동화내부 네트워크도 신뢰하지 않는 접근 제어 체계
Policy-as-Code코드 기반 정책 선언 및 검증인프라 및 애플리케이션 수준의 자동 정책 적용
문서화 및 표준화ADR (Architecture Decision Record)아키텍처 결정 문서화설계 변경 이유와 결과 추적 가능, 팀 간 지식 공유 도구
C4 모델계층 기반 아키텍처 시각화 방법론Context → Container → Component → Code 흐름

주제와 관련하여 반드시 학습해야 할 내용

카테고리주제항목설명
이론 및 설계 원칙아키텍처 개념IEEE 1471, Viewpoint아키텍처 정의 및 표준 뷰 설계 기준
설계 원칙SOLID, DRY, KISS객체지향 및 간결한 시스템 구조 설계 기반
책임 분리 원칙SRP, Bounded Context모듈화 및 비즈니스 책임 구분 전략
아키텍처 스타일레이어드 아키텍처Presentation–Business–Data시스템 계층 구조 설계의 기본 패턴
이벤트 드리븐 아키텍처Producer–Consumer Model비동기 통신 기반 확장성 구조 설계
마이크로서비스 아키텍처API Gateway, 서비스 경계독립 배포 가능한 소형 서비스 조합 방식
서버리스 아키텍처FaaS, Stateless Design서버 관리를 최소화한 이벤트 기반 처리 구조
마이크로커널 아키텍처플러그인 기반 핵심 구조플러그인 기반 확장 아키텍처 방식
아키텍처 패턴CQRSCommand/Query 분리읽기/쓰기 분리로 데이터 처리 최적화
Event Sourcing상태 변경 이벤트 저장변경 추적 및 감사에 유용한 아키텍처
Publish–Subscribe발행/구독 기반 메시징모듈 간 느슨한 결합 방식 통신 패턴
Saga Pattern보상 트랜잭션 관리 방식분산 시스템에서 장기 트랜잭션 처리 방식
Circuit Breaker장애 차단 및 자동 복구고장 격리를 통해 시스템 보호
Bulkhead & Retry격리 및 재시도 전략서비스 격리 및 장애 복원력 강화
실무 전략 및 도구도메인 설계 기법DDD, Event Storming도메인 중심 모듈 설계와 경계 정의
테스트 전략단위/통합/계약/성능 테스트신뢰성 있는 아키텍처를 위한 테스트 전략
배포 및 DevOps 전략CI/CD, GitOps지속적 통합 및 배포 자동화 구조
운영 도구APM, 로그, 알람 시스템운영 가시성과 이상 탐지 체계 구성
관측성 도구Prometheus, Grafana, Jaeger모니터링 및 트레이싱 통한 문제 진단
메시징 및 브로커Kafka, RabbitMQ비동기 메시지 통신을 위한 핵심 인프라
인프라 자동화IaC, Terraform아키텍처 및 리소스 정의 자동화
서비스 메시Istio, Linkerd마이크로서비스 간 통신과 정책 자동화 관리

용어 정리

카테고리용어설명
기본 개념Architecture Style (아키텍처 스타일)시스템의 전체적인 조직화 방법을 정의하는 고수준 설계 원칙
Architecture Pattern (아키텍처 패턴)반복되는 문제에 대한 재사용 가능한 아키텍처 설계 솔루션
Design Pattern (디자인 패턴)코드 수준에서 반복되는 설계 문제 해결을 위한 패턴
ADL (Architecture Description Language)아키텍처를 기술하기 위한 공식 언어
Quality Attributes (품질 속성)성능, 확장성, 보안 등 비기능적 요구사항 특성
Viewpoint이해관계자 관점에서 시스템을 표현하는 방식
아키텍처 구성 요소Component (컴포넌트)시스템의 기능 단위로 독립적으로 배포 가능한 모듈
Connector (커넥터)컴포넌트 간 상호작용과 데이터 흐름을 담당
Layer (레이어)기능을 논리적으로 구분한 계층 구조
Tier (티어)물리적으로 분리된 시스템 구성 단위
Topology컴포넌트와 커넥터의 배치 및 연결 구조
아키텍처 스타일/패턴Microservices작은 독립 서비스로 구성된 아키텍처 스타일
Microkernel핵심 기능 + 플러그인 확장 방식 아키텍처
Event Sourcing상태 변화를 이벤트로 저장하고 복원하는 방식
CQRS (Command Query Responsibility Segregation)명령과 조회를 분리하여 설계하는 패턴
Pub/Sub발행 - 구독 기반 비동기 통신 패턴
Circuit Breaker실패 시 요청을 차단하여 장애 확산을 방지하는 복원 패턴
통신 및 인프라API Gateway마이크로서비스 진입점 역할을 수행하는 컴포넌트
Message Broker비동기 메시지를 중개하는 미들웨어
Event Bus이벤트 중심 아키텍처에서 메시지를 전달하는 구성 요소
Service Mesh서비스 간 통신을 제어하는 인프라 계층
Middleware컴포넌트 간 통신, 트랜잭션 등을 지원하는 미들웨어
품질 속성Scalability (확장성)부하 증가에 따른 시스템 확장 능력
Availability (가용성)시스템이 정상적으로 작동하는 시간의 비율
Fault Tolerance (내결함성)일부 실패에도 시스템이 지속적으로 동작하는 능력
Consistency (일관성)분산 환경에서 데이터의 정합성 유지 능력
개발 방법론 및 도구Domain-Driven Design (DDD)도메인 중심 소프트웨어 설계 방법론
Test-Driven Development (TDD)테스트를 먼저 작성하고 코드를 구현하는 개발 방법
Continuous Integration/Delivery (CI/CD)코드 변경을 자동으로 빌드/배포하는 프로세스
GitOpsGit 을 중심으로 선언적 인프라 운영을 자동화하는 방법론
C4 모델컨텍스트→컨테이너→컴포넌트→코드 수준의 아키텍처 시각화 모델
ADR (Architecture Decision Record)아키텍처 결정 사항을 문서화하는 표준 형식
운영/관측Distributed Tracing (분산 추적)분산 시스템 내에서 요청 흐름을 추적하고 분석하는 기술
도메인 설계Bounded Context도메인 모델의 논리적 경계를 명확히 하는 개념

참고 및 출처