Skip to content
@Backend-System-Design-Lab

Backend System Design Lab

System Design Lab

『가상 면접 사례로 배우는 대규모 시스템 설계 기초』를 기반으로
대규모 트래픽과 분산 시스템의 주요 설계 문제를 직접 구현하고,
부하 테스트와 메트릭을 통해 설계 선택을 검증하는 프로젝트 모음입니다.

단순히 아키텍처를 그리는 데서 끝내지 않고, 초기 구조의 병목을 측정한 뒤
캐시, 메시지 큐, 데이터 분할, 비동기 처리 등의 설계를 적용해 전후 결과를 비교합니다.

Goals

  • 시스템 요구사항을 트래픽과 데이터 규모로 구체화합니다.
  • 설계 선택의 근거와 트레이드오프를 문서로 기록합니다.
  • k6 부하 테스트를 통해 성능 병목을 재현합니다.
  • Prometheus와 Grafana를 활용해 시스템 상태를 관찰합니다.
  • 개선 전후의 RPS, p95, p99, 오류율과 자원 사용량을 비교합니다.
  • 면접에서 설계 과정과 수치를 근거로 설명할 수 있는 결과물을 만듭니다.

Projects

Project 핵심 주제 상태 Repository
System Design Template 공통 실행·부하 테스트·모니터링 환경 완료 Repository
URL Shortener ID 생성, 캐시, 읽기 확장, 데이터 분할 예정 -
Notification System 메시지 큐, 재시도, 멱등성, 장애 복구 예정 -

Common Experiment Process

모든 프로젝트는 가능한 한 동일한 과정으로 진행합니다.

  1. 문제와 요구사항 정의
  2. 트래픽 및 저장 용량 산정
  3. API와 데이터 모델 설계
  4. 초기 아키텍처 설계
  5. Baseline 구현
  6. k6 부하 테스트
  7. Prometheus와 Grafana를 통한 병목 분석
  8. 구조 개선
  9. 동일한 조건으로 재측정
  10. 결과와 트레이드오프 정리

Common Environment

구분 기술
Language Java 25
Framework Spring Boot 4
Build Gradle
Container Docker, Docker Compose
Load Test k6
Metrics Spring Boot Actuator, Micrometer
Monitoring Prometheus, Grafana
Automation GitHub Actions

프로젝트별로 필요한 기술을 추가합니다.

MySQL
Redis
Kafka
RabbitMQ
Elasticsearch
Spring Batch

Experiment Metrics

각 프로젝트에서는 다음 지표를 중심으로 개선 효과를 비교합니다.

  • Requests Per Second
  • p95 및 p99 응답 시간
  • HTTP 오류율
  • CPU 사용률
  • JVM Heap 사용량
  • 활성 스레드 수
  • DB Connection Pool 대기 시간
  • 캐시 적중률
  • 메시지 처리량과 지연 시간

Documentation

각 Repository에는 다음 문서를 작성합니다.

docs/
├── 01-requirements.md
├── 02-capacity-estimation.md
├── 03-architecture.md
├── 04-experiment.md
└── 05-retrospective.md
문서 내용
Requirements 기능·비기능 요구사항과 프로젝트 범위
Capacity Estimation 트래픽, 저장량, 네트워크 사용량 산정
Architecture 구성 요소, 데이터 흐름, 설계 결정
Experiment 가설, 테스트 조건, 개선 전후 결과
Retrospective 한계, 트레이드오프, 면접 예상 질문

Project Principles

  • 기술을 먼저 선택하지 않고 요구사항과 병목을 기준으로 선택합니다.
  • 개선 전후에는 동일한 부하 테스트 조건을 사용합니다.
  • 평균 응답 시간만이 아니라 p95와 p99를 함께 확인합니다.
  • 성능 향상뿐 아니라 정합성, 장애 복구, 운영 복잡도를 함께 고려합니다.
  • 로컬 실험 결과와 실제 운영 환경의 차이를 명확히 기록합니다.

Popular repositories Loading

  1. .github .github Public

  2. System-Design-Template System-Design-Template Public template

    Shell

  3. 01-URL-Shortener 01-URL-Shortener Public

    URL 단축기의 코드 생성, 캐시, 확장 전략을 구현하고 동일한 부하 조건에서 비교하는 시스템 설계 실험

    Java

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…