콘텐츠로 바로가기

System Architecture & Distributed Systems

확장성 있는 서비스 구조와 분산 환경에서의 데이터 정합성, 합의 메커니즘을 정의하는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts7 min read

1. Overview

시스템 아키텍처 및 분산 시스템(System Architecture & Distributed Systems, SADS)은 단일 컴퓨팅 노드의 물리적 한계를 극복하고, 수많은 독립된 장치들이 하나의 유기적인 서비스로 동작하게 만드는 설계 원리와 분산 제어 기술을 다룹니다. 본 카테고리는 단순한 서버 구성을 넘어, 컴포넌트 간 느슨한 결합(Loose Coupling), 부분 장애 상황에서의 복구력(Resilience), 그리고 네트워크 지연 하에서의 전역적 상태 정합성 보장 메커니즘을 탐구합니다.

CS2023의 Parallel and Distributed Computing (PDC) 지식 영역과 SWEBOK의 시스템 설계 역량을 근간으로 삼아, 계층형 아키텍처부터 클라우드 네이티브 마이크로서비스, 분산 합의 알고리즘까지 체계적으로 다룹니다.

2. Scope & Boundaries

In-Scope

  • 아키텍처 패턴(Patterns): 마이크로서비스(MSA), 이벤트 기반(EDA), 서버리스(Serverless), 육각형 아키텍처(Hexagonal).
  • 분산 시스템 이론: CAP/PACELC 정리, 분산 합의 알고리즘(Raft, Paxos), 논리적 시계(Lamport Clock).
  • 신뢰성 및 확장성: 로드 밸런싱, 서킷 브레이커, 오토스케일링, 분산 트레이싱 및 관측 가능성.
  • 클라우드 네이티브 인프라: 컨테이너 오케스트레이션(K8s), 서비스 메시(Service Mesh), API 게이트웨이 전략.

Out-of-Scope

  • 저수준 패킷 캡처 및 분석: TCP 핸드셰이크 상세나 물리 계층 신호 처리 (08. NC 노드로 위임).
  • 단일 노드 커널 최적화: 로컬 I/O 스케줄링이나 메모리 페이징 인터널 (03. OSSM 노드로 위임).
  • 프론트엔드 상태 관리: 브라우저 내부의 리덕스나 단방향 데이터 흐름 (12. HCIG 노드로 위임).

Boundaries

  • SADS는 데이터의 '물리적 전송' 자체보다는 전송된 결과를 바탕으로 한 **'서비스 간의 구조적 배치'**와 '분산된 상태의 최종 정합성(Eventual Consistency)' 조율에 집중합니다.

3. Counterexample

  • 특정 클라우드 벤더 도구 숙달: AWS Lambda 설정을 외우는 것은 활용 단계입니다. 왜 해당 로직이 **상태 비저장(Stateless)**이어야만 수평 확장이 가능한지, 그로 인해 발생하는 데이터베이스 부하 트레이드오프를 분석하는 것이 SADS의 핵심입니다.
  • 단순한 앱 분리(Separation): 애플리케이션을 여러 개로 쪼개는 행위 자체가 아키텍처 설계는 아닙니다. 서비스 분리 시 발생하는 네트워크 파티션(Partition) 상황에서 데이터 무결성을 어떻게 보장할지(예: Saga 패턴) 설계하는 역량이 요구됩니다.

4. Prerequisites

  • 운영체제 (Basic): 프로세스 간 통신(IPC), 소켓 인터페이스, 컨테이너 격리의 기본 원리 이해. (P1)
  • 네트워크 및 통신 (Recommended): HTTP/gRPC 프로토콜, DNS 작동 방식 및 L4/L7 로드 밸런서의 역할 파악. (P1)
  • 데이터 관리 기초 (Practical): 데이터베이스 샤딩, 리플리케이션 및 쓰기/읽기 분리(CQRS)의 개념적 이해. (P1)

5. Learning Map

  1. Architectural Patterns: 레이어링과 모듈화를 통해 거대 소프트웨어의 구조적 복잡도를 제어합니다. (P2)
  2. Distributed Principles: CAP 정리와 논리적 시계를 통해 네트워크 파티션 하의 상태 분산을 이해합니다. (P1)
  3. Scalability Mechanics: 로드 밸런싱과 샤딩을 통해 성능을 선형적으로 확장하는 물리적 기법을 익힙니다. (Industry)
  4. Reactive Dynamics: 비동기 메시징과 이벤트를 통해 서비스 간 결합도를 낮추는 반응형 모델을 구축합니다. (P1)
  5. Reliability SRE: 서킷 브레이커와 관측 가능성을 통해 부분 장애를 스스로 치유하는 복구력을 설계합니다. (Industry)
  6. Micro-Containers: 가상화된 실행 단위로 서비스를 쪼개 배포 민첩성의 물리적 단위를 정의합니다. (Industry)
  7. Cloud Evolution: 서버리스와 클라우드 네이티브 패턴으로 인프라 제약이 없는 실행 환경으로 진화합니다. (Industry)

6. Learning Topics

Basic

Core Topic 01: 소프트웨어 아키텍처 기초와 레이어링 (Architecture Foundations)

  • Why to Learn: 시스템 규모가 커져도 코드의 복잡도를 제어하고 비즈니스 논리를 기술 사양으로부터 독립시키기 위함입니다.
  • What to Learn:
    • Concepts: 관심사 분리(SoC), 계층화 아키텍처(3-Tier), 의존성 역전 원칙(DIP), 도메인 주도 설계(DDD) 기초.
    • Skills: 모놀리식 코드에서 핵심 비즈니스 레이어를 추출하여 클린 아키텍처 구조로 재배치하기.
    • Tools: UML/C4 Model 다이어그램 도구.
    • Trade-offs: 설계의 엄밀함(간접 레이어 증가) vs 초기 개발 속도 및 단순성.
  • How to Learn:
    • 1단계: 단순한 CRUD 앱을 Presentation, Service, Repository 레이어로 엄격히 분리해 봅니다.
    • 2단계: 특정 레이어의 기술(예: DB 종류)을 바꿨을 때 다른 레이어에 미치는 영향을 최소화하는 인터페이스를 설계합니다.
  • Implement: 특정 요구사항을 반영하여 변동성이 높은 영역과 안정적인 영역을 분리한 시스템 아키텍처 다이어그램.

Core Topic 02: 분산 시스템의 정리와 트레이드오프 (Dist. Theory & CAP)

  • Why to Learn: 네트워크 지연과 단절이 필연적인 환경에서 어떤 비즈니스 가치를 우선순위로 둘지 공학적으로 결정하기 위함입니다.
  • What to Learn:
    • Concepts: CAP 이론(C/A/P), PACELC 정리, 최종 일관성(Eventual Consistency) vs 강한 일관성.
    • Skills: 장애 상황 시나리오에 따른 시스템 응답 모델(CP vs AP) 선정.
    • Tools: Jepsen (분산 시스템 정합성 테스트 도구) 컨셉 이해.
    • Trade-offs: 완벽한 데이터 일관성 보장 vs 무중단 가용성 및 성능 확보.
  • How to Learn:
    • 1단계: 분산 DB 클러스터에서 네트워크 단절을 인위적으로 시나리오화하고 각 노드의 읽기/쓰기 허용 범위를 테스트합니다.
    • 2단계: '장바구니' 서비스와 '결제' 서비스에서 요구하는 일관성 수준의 차이를 분석합니다.
  • Implement: 특정 비지니스 도메인(예: 금융 vs 소셜 미디어)에 따른 분산 전략 보고서.

Practical

Core Topic 03: 마이크로서비스와 클라우드 네이티브 (MSA & K8s)

  • Why to Learn: 서비스별 독립적인 배포와 수평 확장을 가능케 하여 빠른 비즈니스 변화에 대응하고 운영 효율을 극대화하기 위함입니다.
  • What to Learn:
    • Concepts: 서비스 경계(Bounded Context), API Gateway, 서킷 브레이커, Saga 패턴(보상 트랜잭션).
    • Skills: 컴포넌트 간 동기 호출(gRPC)과 비동기 호출(MQ)의 적절한 혼합 설계.
    • Tools: Kubernetes, Docker, Service Mesh (Istio/Linkerd).
    • Trade-offs: 서비스 자율성 증대 vs 분산 추적 및 관리 복잡도의 기하급수적 증가.
  • How to Learn:
    • 1단계: 두 개의 다른 기술 스택을 가진 서비스를 컨테이너화하고 로드 밸런서를 통해 트래픽을 분배해 봅니다.
    • 2단계: 서킷 브레이커(Hystrix/Resilience4j)를 설정하여 연쇄 장애 발생 시나리오를 방어합니다.
  • Implement: 분산 트랜잭션을 대체하는 이벤트 기반 보상 로직 구현 가이드.

Advanced

Core Topic 04: 분산 합의 알고리즘과 조정 (Consensus & Coordination)

  • Why to Learn: 중앙 제어 장치 없는 환경에서 여러 노드가 하나의 상태에 안전하게 동의하게 함으로써 시스템의 최상위 신뢰성을 구축하기 위함입니다.
  • What to Learn:
    • Concepts: 정족수(Quorum), 리더 선출(Leader Election), Raft 알고리즘, Paxos, 복제 상태 머신(RSM).
    • Skills: 특정 노드 장애 시에도 클러스터 전체의 합의가 유지되는 과정 분석.
    • Tools: etcd (K8s storage 엔진), ZooKeeper.
    • Trade-offs: 합의 과정의 엄밀성(Latency 발생) vs 복제 성능 및 확장성.
  • How to Learn:
    • 1단계: Raft 알고리즘 시뮬레이터를 통해 로그 복제와 충돌 해결 과정을 시각적으로 분석합니다.
    • 2단계: 분산 구성 정보 관리 도구(etcd)를 구성하고 리더 노드 강제 종료 후 복구 과정을 워칭합니다.
  • Implement: 다중 리전(Multi-region) 환경에서 데이터 정합성을 유지하기 위한 조정 엔진 아키텍처 제안.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Microservices (MSA) 작고 독립적인 서비스들로 시스템을 구성하여 각자의 생명주기로 관리하는 아키텍처입니다. 권장 구조 설계 Bounded Context vs. Monolith 단순히 코드 파일을 작게 나누는 행위로만 이해함 Primary, Industry core
Consensus Algorithm 분산된 노드들이 하나의 값에 대해 안전하고 수식적으로 합의를 이루기 위한 프로토콜입니다. 심화 정합성 제어 Raft, Paxos Quorum 단순한 데이터 복사(Copy) 기술과 동일시함 Primary core
Circuit Breaker 외부 서비스 장애 시 호출을 즉시 차단하여 시스템 전체의 마비를 방지하는 아키텍처 패턴입니다. 실무 결함 내성 Fault Totelance Timeout 단순히 에러를 무시하거나 숨기는 기능으로 오해 Industry OSS core
Observability, 관측 가능성 지표, 로그, 추적 정보를 결합해 시스템의 복잡한 내부 상태를 외부에서 즉각 파악하는 능력입니다. 실무 운영/진단 Distributed Tracing Monitoring 단순히 대시보드 그래프를 보는 것과 동일시함 Industry core

8. References

Primary References

Secondary References

  • [DDIA] Designing Data-Intensive Applications — Martin Kleppmann (분산 시스템 설계의 사실상 표준).
  • [Building Microservices] Sam Newman — 마이크로서비스 설계와 분할의 원칙.

Industry References

  • [AWS Well-Architected Framework] — 안정성, 성능 효과, 보안을 아우르는 실무 아키텍처 지침.
  • [CNCF Landscape] — 클라우드 네이티브 기술 생태계 및 표준화 동향.

9. Final Checklist

Primary Checklist

  • 시스템 설계 시 단일 장애점(SPOF)을 식별하고 이중화 및 장애 복구(Failover) 시나리오를 수립했는가? (P2)
  • 신규 노드 추가 시 선형적으로 성능이 향상되는 수평 확장(Horizontal Scaling) 구조인지 증명 가능한가? (P1-PDC)

Secondary Checklist

  • 서비스 간 통신 요구사항에 맞춰 동기(RPC)와 비동기(Messaging) 방식의 트레이드오프를 결정했는가?
  • 대규모 트래픽 분산을 위해 L4(IP/Port)와 L7(Content/Path) 중 적절한 로드 밸런싱 정책을 제안했는가?

Industry Checklist

  • 분산된 서비스 전 구간에서 발생하는 지연 시간(Tail Latency)을 추적하기 위한 트레이싱(Tracing)을 구현했는가?
  • 네트워크 재시도 폭풍을 방지하기 위한 지수 백오프(Exponential Backoff)와 지터(Jitter)를 적용했는가?