본문 바로가기
Design & Architecture

소프트웨어 아키텍처 패턴 문서화 템플릿 및 예시

by Jordy-torvalds 2025. 5. 24.

✅ 패턴 설명 템플릿

항목 설명

Name (이름) 패턴의 명칭. 간결하고 핵심 개념을 잘 드러내야 함.
Context (맥락) 이 패턴이 적용되는 일반적인 시스템 환경 또는 상황.
Problem (문제) 패턴이 해결하고자 하는 근본적인 문제나 어려움. 시스템 관점에서 어떤 제약이나 한계가 존재하는지 설명.
Forces (제약 요인) 문제 해결을 어렵게 만드는 상충되는 요구사항이나 시스템 제약. 예: 지연 시간 vs 일관성
Solution (해결책) 문제를 해결하기 위한 일반적인 설계 방식 또는 전략. 구성 요소와 흐름 등을 포함.
Structure (구조) 구성 요소 간의 관계를 나타내는 다이어그램 (예: Mermaid, UML 등).
Resulting Context (결과 맥락) 패턴 적용 이후의 시스템 특성. 해결된 점과 새롭게 생긴 트레이드오프를 함께 기술.
Example (사례) 실제 시스템에서 이 패턴이 사용된 사례를 간략히 설명.
Related Patterns (관련 패턴) 함께 사용되거나 대안으로 적용될 수 있는 패턴들.

✅ 예시: Follower Reads 패턴

Name

Follower Reads

Context

  • 시스템이 리더-팔로워 복제 구조를 사용하고 있음.
  • 전체 요청 중 읽기 요청이 대부분을 차지함.
  • 클라이언트가 여러 리전(데이터센터)에 분산되어 있음.

Problem

  • 모든 읽기 요청이 리더로 집중되면서 과부하 발생.
  • 클라이언트가 리더와 멀리 떨어져 있을 경우 응답 지연이 심화됨.
  • 시스템의 전체 처리량이 제한되고 병목이 발생함.

Forces

  • 일관성(Consistency): 최신 데이터를 읽고자 하는 요구가 있음.
  • 지연 시간(Latency): 빠른 응답이 필요함.
  • 가용성(Availability): 리더 장애 시에도 읽기가 가능해야 함.

Solution

  • 읽기 요청을 리더뿐만 아니라 팔로워에서도 처리 가능하게 함.
  • 클라이언트는 지리적으로 가까운 팔로워 또는 네트워크 지연이 가장 낮은 노드를 선택함.
  • 읽기 일관성을 위해 버전 정보(예: 하이브리드 클럭, 타임스탬프 등)를 요청에 포함하여 특정 버전 이상의 값만 읽도록 제한함.
  • 팔로워가 해당 버전 도달 전이면 대기하거나 타임아웃 후 리더 또는 다른 팔로워로 재시도함.

Structure

graph TD
    Client -->|쓰기 요청| Leader
    Client -->|읽기 요청| Follower1
    Client -->|읽기 요청| Follower2
    Leader --> Follower1
    Leader --> Follower2

Resulting Context

  • 리더의 부하가 줄고 쓰기 성능이 향상됨.
  • 읽기 요청의 지연 시간이 개선됨.
  • 복제 지연으로 인해 오래된 데이터가 읽힐 가능성 존재.
  • 읽기 일관성을 보장하기 위한 추가 구현 필요.

Example

  • MongoDB: operationTime과 maxStalenessSeconds를 통해 원인 기반 일관성 제공.
  • CockroachDB: closed timestamps 기반 Follower Reads 지원.
  • Neo4j: Bookmark를 기반으로 팔로워에서 일관된 읽기 수행.
  • Apache Kafka: 팔로워 브로커에서 읽기 가능. 최신 오프셋 없을 시 오류를 반환하고 재시도 유도.

Related Patterns

  • Leader and Followers
  • Causal Consistency
  • Read Repair
  • Hybrid Clock