대규모 시스템 설계를 위한 종합 가이드 및 인터뷰 대비 자료
donnemartin/system-design-primer
GitHub대규모 시스템 설계를 위한 원칙과 패턴을 체계적으로 정리한 오픈 소스 가이드입니다. 인터뷰 대비부터 실제 아키텍처 설계까지 광범위하게 다룹니다.
- CAP 이론, 로드 밸런싱, RDBMS/NoSQL 설계, 캐싱 전략 등 시스템 아키텍처의 핵심 트레이드오프와 패턴을 깊이 있게 설명합니다.
- 단순 코딩 실력을 넘어 시스템 전체를 설계하는 능력을 키워주어, 기술 면접 대비와 현업 엔지니어 역량 강화에 필수적입니다.
- 본인의 경력 수준과 학습 기간에 맞춰 필요한 주제부터 깊이 있게 공부할 수 있도록 맞춤형 가이드가 제공되는 커뮤니티 프로젝트입니다.
본 문서는 대규모 시스템을 설계하는 방법을 학습하고 기술 면접에 대비하기 위해 조직된 리소스 모음입니다. 시스템 디자인은 광범위한 주제이므로, 이 저장소는 체계적인 지식을 습득할 수 있도록 돕습니다. 특히 시스템 디자인은 많은 테크 기업의 기술 면접 과정에서 필수적으로 요구되는 구성 요소 중 하나로 다루어집니다.
가이드에서는 아키텍처 설계에 필요한 핵심 개념과 트레이드오프를 깊이 있게 다룹니다. CAP 정리, 성능 대 확장성(Performance vs scalability), 가용성 대 일관성(Availability vs consistency) 같은 주제부터 시작하여, 로드 밸런서의 종류(Active-passive, Active-active 등), 마이크로서비스 아키텍처, 그리고 관계형 데이터베이스(RDBMS)와 NoSQL을 포함한 다양한 데이터 저장소 설계 방안을 제시합니다. 또한 Cache-aside나 Write-through 같은 구체적인 캐싱 패턴과 비동기 처리 방식도 다룹니다.
사용자의 학습 기간에 맞춰 난이도를 조절할 수 있는 가이드라인을 제공하며, 인터뷰 질문에 접근하는 단계별 방법론을 안내합니다. 예를 들어, 시스템 디자인 면접은 개방형 대화로 진행되므로, 사용자는 유스케이스와 제약 조건(constraints)을 먼저 정의하고 가정 사항을 논의하는 순서로 토론을 이끌어 나가는 것이 권장됩니다.
용어 풀이
- 오픈 소스
- 소스 코드를 공개해 누구나 보고 고치고 다시 배포할 수 있게 한 소프트웨어.