테마 선택

📚 지식 노트

AI·하드웨어·주변기기·게임·컴퓨터 시스템·이론 컴퓨터 과학·수학·개발과 운영·보안·응용 분야에 대해 알아 두면 좋은 내용을 정리한 노트다. 위에서 분야를 고르고 아래에서 노트를 고른다.

시스템 설계

큰 서비스를 어떻게 나누고 늘리고 바꿔 가는지를 기초, 설계 사례, 소프트웨어 아키텍처, 데이터 중심 설계, 게임 서버로 나눠 정리했다. 정평 있는 책들이 다루는 주제를 지도로 삼되 설명과 그림은 직접 썼다.

목차 (6)
  1. 기초
  2. 설계 사례
  3. 소프트웨어 아키텍처
  4. 데이터 중심 설계
  5. 게임 서버
  6. 책 목차와 대조

기초

규모를 어림하고, 한 대에서 여러 대로 늘리고, 다시 쓰는 부품을 익힌다

설계 사례

자주 나오는 서비스를 직접 설계해 보며 부품을 고르는 판단을 연습한다

소프트웨어 아키텍처

무엇을 기준으로 나누고, 어떤 스타일을 고르고, 어떻게 계속 바꿀 수 있게 하나

데이터 중심 설계

데이터의 모양과 인코딩, 분산 환경의 일관성과 시간, 배치와 스트림

게임 서버

온라인 게임을 띄우고 운영하고 플레이어에게 내려보내는 서버와 플랫폼

책 목차와 대조

설계·아키텍처 책의 장마다 어느 노트가 맡는지 대조했다. 책의 내용을 옮기지 않고, 같은 주제를 공개 자료로 다시 설명했다.

Alex Xu, System Design Interview Vol. 1 — 가상 면접 사례로 배우는 대규모 시스템 설계 기초 · 16장

장 목록 — ByteByteGo 강의 목차(1·2권 합본)

장노트
Scale From Zero To Millions Of Users규모 확장의 단계
Back-of-the-envelope Estimation설계 면접과 개략 추정
A Framework For System Design Interviews설계 면접과 개략 추정
Design A Rate Limiter설계의 부품
Design Consistent Hashing설계의 부품
Design A Key-value Store설계의 부품 · 일관성과 시간
Design A Unique ID Generator In Distributed Systems설계의 부품
Design A URL Shortener설계 사례: 웹 서비스
Design A Web Crawler설계 사례: 웹 서비스
Design A Notification System설계 사례: 웹 서비스
Design A News Feed System설계 사례: 웹 서비스
Design A Chat System설계 사례: 실시간과 위치
Design A Search Autocomplete System설계 사례: 실시간과 위치
Design YouTube설계 사례: 미디어와 파일
Design Google Drive설계 사례: 미디어와 파일
The Learning Continues규모 확장의 단계
Alex Xu·Sahn Lam, System Design Interview Vol. 2 — 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 · 13장

장 목록 — ByteByteGo 강의 목차(1·2권 합본)

Mark Richards·Neal Ford, Fundamentals of Software Architecture (1판, 2020) — 소프트웨어 아키텍처 101 · 24장

장 목록 — O'Reilly 목차 데이터(JSON)

장노트
Introduction아키텍처 특성과 결정
Architectural Thinking아키텍처 특성과 결정
Modularity모듈성과 결합
Architecture Characteristics Defined아키텍처 특성과 결정
Identifying Architectural Characteristics아키텍처 특성과 결정
Measuring and Governing Architecture Characteristics아키텍처 특성과 결정 · 진화적 아키텍처
Scope of Architecture Characteristics모듈성과 결합
Component-Based Thinking모듈성과 결합
Foundations아키텍처 스타일
Layered Architecture Style아키텍처 스타일
Pipeline Architecture Style아키텍처 스타일
Microkernel Architecture Style아키텍처 스타일
Service-Based Architecture Style아키텍처 스타일
Event-Driven Architecture Style아키텍처 스타일
Space-Based Architecture Style아키텍처 스타일
Orchestration-Driven Service-Oriented Architecture아키텍처 스타일
Microservices Architecture아키텍처 스타일 · 분해와 분산 데이터
Choosing the Appropriate Architecture Style아키텍처 스타일
Architecture Decisions아키텍처 특성과 결정
Analyzing Architecture Risk아키텍처 특성과 결정
Diagramming and Presenting Architecture아키텍처 특성과 결정
Making Teams Effective아키텍처 특성과 결정
Negotiation and Leadership Skills아키텍처 특성과 결정
Developing a Career Path아키텍처 특성과 결정
Neal Ford 외, Software Architecture: The Hard Parts (2021) — 소프트웨어 아키텍처 The Hard Parts · 15장

장 목록 — O'Reilly 목차 데이터(JSON)

장노트
What Happens When There Are No "Best Practices"?아키텍처 특성과 결정
Discerning Coupling in Software Architecture모듈성과 결합
Architectural Modularity모듈성과 결합 · 분해와 분산 데이터
Architectural Decomposition분해와 분산 데이터
Component-Based Decomposition Patterns분해와 분산 데이터
Pulling Apart Operational Data분해와 분산 데이터
Service Granularity분해와 분산 데이터
Reuse Patterns분해와 분산 데이터
Data Ownership and Distributed Transactions분해와 분산 데이터
Distributed Data Access분해와 분산 데이터
Managing Distributed Workflows분해와 분산 데이터 · 아키텍처 스타일
Transactional Sagas분해와 분산 데이터
Contracts분해와 분산 데이터 · 데이터 모델과 인코딩
Managing Analytical Data배치와 스트림 처리
Build Your Own Trade-Off Analysis아키텍처 특성과 결정
Neal Ford 외, Building Evolutionary Architectures (2판, 2022) — 진화적 아키텍처 · 9장

장 목록 — O'Reilly 목차 데이터(JSON)

장노트
Evolving Software Architecture진화적 아키텍처
Fitness Functions진화적 아키텍처
Engineering Incremental Change진화적 아키텍처
Automating Architectural Governance진화적 아키텍처
Evolutionary Architecture Topologies진화적 아키텍처 · 모듈성과 결합
Evolutionary Data진화적 아키텍처
Building Evolvable Architectures진화적 아키텍처
Evolutionary Architecture Pitfalls and Antipatterns진화적 아키텍처
Putting Evolutionary Architecture into Practice진화적 아키텍처
Martin Kleppmann, Designing Data-Intensive Applications (1판, 2017) — 데이터 중심 애플리케이션 설계 · 12장

장 목록 — O'Reilly 목차 데이터(JSON)

장노트
Reliable, Scalable, and Maintainable Applications아키텍처 특성과 결정 · 규모 확장의 단계
Data Models and Query Languages데이터 모델과 인코딩
Storage and Retrieval데이터 모델과 인코딩
Encoding and Evolution데이터 모델과 인코딩
Replication일관성과 시간
Partitioning규모 확장의 단계 · 설계의 부품
Transactions일관성과 시간
The Trouble with Distributed Systems일관성과 시간
Consistency and Consensus일관성과 시간
Batch Processing배치와 스트림 처리
Stream Processing배치와 스트림 처리
The Future of Data Systems배치와 스트림 처리