# [[디자인 시스템(Design System)]]

## 📌 Brief Summary
디자인 시스템은 재사용 가능한 컴포넌트와 명확한 표준으로 구성되어 애플리케이션을 구축하는 데 사용되는 브랜드의 시각적 정체성 집합체입니다 [1, 2]. 이는 단순한 컴포넌트 라이브러리를 넘어 디자인과 엔지니어링 간의 커뮤니케이션 프로토콜 역할을 수행합니다 [3]. 디자인 시스템의 가장 핵심적인 구성 요소는 '디자인 토큰(Design Tokens)'으로, 색상, 간격, 타이포그래피와 같은 시각적 디자인 원자들을 플랫폼에 종속되지 않는 변수 형태로 저장하여 여러 플랫폼에서 일관성과 확장성을 유지하도록 돕습니다 [1, 2].

## 📖 Core Content

*   **디자인 시스템의 목적과 역할**
    디자인 시스템은 여러 제품 및 플랫폼 전반에 걸쳐 일관성을 보장하고, 디자인과 개발 워크플로우의 속도를 높이며, 팀 간의 공통 언어를 생성합니다 [4]. 대규모 엔터프라이즈 환경에서 디자인 시스템은 디자인 결정(예: Figma에서의 색상 변경)이 웹, 모바일(iOS, Android) 등의 여러 플랫폼으로 자동 전파되게 하는 시스템적 사고의 결과물로, 단순히 예쁜 인터페이스가 아닌 진정으로 유지보수 가능한 소프트웨어 시스템을 구축하는 기준이 됩니다 [3, 5].

*   **디자인 시스템의 구성 요소: 디자인 토큰(Design Tokens)**
    디자인 토큰은 디자인 시스템에 동력을 제공하는 시각적 디자인의 원자(원시 값)입니다 [1]. 이는 플랫폼에 구애받지 않는(platform-agnostic) 특징을 가지며, 단일 진실 공급원(Single Source of Truth)으로서 JSON 등의 형식으로 저장됩니다 [1, 6]. 이후 Style Dictionary와 같은 변환 도구를 통해 웹용 CSS 변수, Android용 XML, iOS용 Swift 코드 등으로 변환되어 배포됩니다 [6-8]. 

*   **디자인 토큰의 계층 구조 (Hierarchy)**
    확장성과 유연성을 위해 디자인 토큰은 일반적으로 3단계 계층으로 구성됩니다 [9, 10].
    1.  **글로벌 토큰 (Global Tokens / Primitives):** 컨텍스트가 없는 원시 값입니다. (예: `--blue-500: #3b82f6`) [9, 10]
    2.  **가명/시맨틱 토큰 (Alias / Semantic Tokens):** 글로벌 토큰을 참조하여 특정 맥락이나 의도를 부여합니다. (예: `--color-primary: var(--blue-500)`) [9, 10]
    3.  **컴포넌트 토큰 (Component Tokens):** 특정 UI 요소에만 국한된 토큰입니다. (예: `--button-bg: var(--color-primary)`) 이를 통해 다른 시각적 시스템에 영향을 주지 않고 개별 컴포넌트를 조정할 수 있습니다 [9, 10].

*   **CSS 아키텍처 및 반응형 컴포넌트와의 결합**
    현대의 디자인 시스템은 반응형 동작(Responsive behavior)을 페이지가 아닌 '컴포넌트의 속성'으로 취급합니다 [11]. 버튼, 모달, 데이터 테이블과 같은 컴포넌트가 컨텍스트를 인지하고 스스로 반응형으로 동작하도록 구축되면, 동일한 레이아웃 문제를 반복해서 해결할 필요가 없습니다 [11, 12]. 또한, BEM과 같은 CSS 구조화 방법론은 컴포넌트를 독립적이고 재사용 가능하게 만들어 디자인 시스템과 자연스럽게 결합되며 [13], Panda CSS와 같은 현대적 CSS-in-JS 도구들은 디자인 시스템과 테마(Theme)를 내장 지원하여 아키텍처의 유지보수성을 극대화합니다 [14, 15].

## 🔗 Knowledge Connections
- **Related Topics:** [[디자인 토큰(Design Tokens)]], [[반응형 웹 디자인(Responsive Web Design)]], [[BEM 방법론]], [[컴포넌트 기반 아키텍처(Component-Based Architecture)]]
- **Projects/Contexts:** [[대규모 엔터프라이즈 프론트엔드 아키텍처(Enterprise Frontend Architecture)]], [[크로스 플랫폼 UI 개발(Cross-Platform UI Development)]]
- **Contradictions/Notes:** 디자인 시스템은 일관된 타이포그래피나 색상 스케일을 강제하기 위해 존재하지만, Tailwind CSS와 같은 유틸리티 우선 프레임워크를 사용할 때 개발자가 임의의 값(arbitrary values, 예: `w-[347px]`)을 남용하게 되면 디자인 시스템의 사전 정의된 규칙을 우회하게 되어 일관성을 해칠 수 있습니다 [16].

---
*Last updated: 2026-04-26*