📘

5단계: 심화/시스템 설계

도메인 경계/모듈화부터 마이그레이션, 이벤트 기반 설계까지: 시스템 설계를 실전 감각으로 확장

모듈형 학습 자동 정렬

🧠 모듈 개요

이 단계에서 얻는 것

이 단계는 “프레임워크를 잘 쓰는 것”을 넘어, 시스템 전체를 설계하고 변화시키는 능력을 키우는 구간입니다.

  • 요구사항을 기능 목록이 아니라 도메인/경계/책임으로 쪼개는 방법을 익힙니다.
  • “지금 당장”의 구현과 “미래의 변화” 사이에서 트레이드오프를 근거 있게 선택하는 힘을 만듭니다.
  • 모놀리스/모듈러/서비스 분리, 컷오버/마이그레이션 같은 변경의 기술을 다룹니다.

이 모듈을 보는 방법

아래에 연결된 글이 자동으로 정렬됩니다. 순서대로 읽되, 각 글에서 “내 서비스라면 어디에 적용할지”를 짧게라도 메모해두면 흡수 속도가 크게 빨라집니다.

다루는 축(큰 흐름)

  • 도메인 모델링/경계: 애그리게이트, 일관성 경계, 책임 분리
  • 구조화/분리: 패키지/레이어/멀티모듈, 모놀리스 → 모듈러/서비스 전환
  • 변경/마이그레이션: 트래픽 컷오버, 데이터 이전, 레거시 리팩터링
  • 시스템 설계 연습: URL Shortener/파일 서빙/뉴스피드 같은 대표 문제를 “병목/트레이드오프” 중심으로 연습
  • 고급 패턴: CQRS/Event Sourcing, 레이트 리밋/백프레셔, 실시간 통신, gRPC/GraphQL
  • 현실적 문제: 멀티테넌시, 타임존/국제화 같은 “운영 중에 반드시 터지는” 주제

다음 단계

심화 단계에서 생기는 질문은 대부분 “상황 의존”입니다. 정답을 외우기보다, 자주 나오는 질문을 빠르게 꺼내보는 용도로 6단계: 복습(Q&A)를 함께 사용하세요.

📑 이 모듈의 학습 노트

Architecture

레거시 리팩터링 전략

대규모 레거시 개선을 위한 우선순위, 단계별 접근, 위험 관리

Legacy Refactoring Strangler
System Design

시스템 설계: URL Shortener

Key 생성, 충돌 방지, 캐시/DB 설계, 확장성·가용성 고려사항 정리

System Design URL Shortener Hash
System Design

시스템 설계: 뉴스피드

Fan-out on write/read, 캐시/타임라인 테이블 설계, 지연/일관성 트레이드오프 정리

System Design Newsfeed Fanout
System Design

시스템 설계: Rate Limiter

Token Bucket, Leaky Bucket, Sliding Window 알고리즘과 분산 환경에서의 구현 전략

Rate Limiting Token Bucket Sliding Window
Architecture

Event Sourcing과 CQRS 입문

이벤트 소싱과 CQRS 기본 개념, 장단점, 적용 시 고려사항

Event Sourcing CQRS Command
Architecture

gRPC 서비스 설계 기초

프로토 정의, 일방향/양방향 스트리밍, gRPC-Gateway 연계 등 gRPC 설계 핵심

gRPC Protobuf Streaming
Architecture

GraphQL 스키마 설계 가이드

스키마 정의, 리졸버 구조, N+1 방지(DataLoader), 버전 관리 베스트 프랙티스

GraphQL Schema Resolver
Architecture

멀티테넌시 설계 전략

스키마/데이터베이스 분리, 테넌트 격리/보안, 마이그레이션·운영 고려사항

Multitenancy Schema Isolation