본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Backend

객체 설계 6개와 시스템 설계 읽을거리

추가
목차7개 항목
출처와 참고

Donne Martin의 「The System Design Primer」에 제시된 개념과 사례를 주제별로 재구성한 노트다. 원본 라이선스는 CC BY 4.0이다.

객체지향 설계 문제와 접근법

객체지향 설계(OOD)는 한 서비스의 네트워크 아키텍처보다 도메인 객체가 어떤 책임과 협력을 갖는지에 초점을 둔다. 기본 자료구조와 상태·이벤트 흐름을 인터페이스로 분리한다.

객체 설계 과제설계 초점원본 실습
해시맵키·버킷·충돌을 숨기는 자료구조 인터페이스Jupyter notebook
LRU 캐시캐시 조회와 최근 접근 순서를 일관되게 유지Jupyter notebook
콜센터직원 등급·대기열·상담 요청의 책임 분리Jupyter notebook
카드 덱카드·덱·게임 규칙의 객체 분리Jupyter notebook
주차장차량·구역·주차 슬롯의 제약 모델링Jupyter notebook
온라인 채팅사용자·대화방·메시지·상태 관리Jupyter notebook

원본의 OOD 항목은 Under development로 표시돼 있다. Circular array는 해답이 아니라 기여 요청만 있다.

부록의 계산 기준

지표참고할 값
이진 단위2^10 = 1,024; 2^20 = 1,048,576; 2^30 ≈ 10억
ns / μs / ms1 μs = 1,000 ns; 1 ms = 1,000 μs
부하 분석메모리·디스크·네트워크·프로세싱 시간을 각각 측정

원문의 "Latency Numbers Every Programmer Should Know"는 장치 성능을 비교해 보는 과거의 교육용 지연 시간 표다. 최신 SSD·네트워크·CPU의 실제 레이턴시와 동일하다고 가정하지 않는다. 원표와 근거 보기.

추가 시스템 설계 질문 목록

실전 아키텍처 자료

기업별 아키텍처 사례

엔지니어링 블로그 참고 목록

학습 보조자료와 작성 중인 항목

  • Anki 카드와 인터랙티브 연습은 기억 및 반복 문제 풀이에 활용한다.
  • 설계 문제를 모두 암기하기보다, 여러 실제 아키텍처에서 공통되는 병목·트레이드오프를 비교한다.
  • 원본에서 작성 중으로 표시한 MapReduce 분산 계산, Consistent hashing, Scatter gather 설명은 완성된 해설로 간주하지 않는다.
  • 오래된 기업 사례·외부 사이트 URL은 역사적인 학습 레퍼런스다. 현행 제품 기능·최신 엔지니어링 환경의 증거로 사용하지 않는다.

관련 노트: 객체 설계 접근, 디자인 패턴, 고트래픽 회복성

원본 기록3

댓글

GitHub 계정으로 댓글을 남길 수 있어요.