**시스템 디자인(system design)**은 요구사항을 충족하기 위해 소프트웨어 시스템의 아키텍처, 구성 요소, 상호작용을 정의하는 과정입니다 — 특히 확장성(scalability), 신뢰성(reliability), **성능(performance)**을 위한 것입니다. 이는 대규모 환경에서 동작하는 시스템을 구축하기 위해 각 요소가 어떻게 맞물리는지에 관한 것입니다.
시스템 디자인이 다루는 범위
시스템 디자인 = 시스템의 상위 수준 구조:
→ 구성 요소 → 서비스, 데이터베이스, 캐시, 큐, load balancer 등
→ 이들이 어떻게 상호작용하는가 → 데이터 흐름, 통신, API
→ 요구사항 충족 → 기능적(무엇을 하는가) + 비기능적(규모, 속도,
신뢰성, 가용성)
→ 개별 코드가 아니라 큰 그림 / 아키텍처에 관한 것
