
경직된 규칙 대신 유연한 확장을 선택한 TDS의 하이브리드 컴포넌트 API 설계 전략
토스 디자인 시스템(TDS)팀이 겪은 '시스템 이탈' 문제를 해결하기 위해 디자인 시스템을 하나의 제품으로 바라본 혁신적인 관점 전환을 다룹니다. 단순함을 위한 Flat 패턴과 유연함을 위한 Compound 패턴의 장점을 결합하여, 메이커들이 자유롭게 UI를 구성하면서도 시스템의 일관성을 유지할 수 있는 구체적인 설계 방법론을 제시합니다.
디자인 시스템 도입 후 확장성 문제나 컴포넌트 파편화로 고민 중인 프론트엔드 엔지니어와 UI/UX 디자이너에게 강력 추천합니다. 특히 대규모 조직에서 팀 간 협업 효율을 극대화하고 싶은 시니어 개발자에게 실무적인 인사이트를 제공합니다.
디자인 시스템이 조직의 성장과 제품의 다양성을 따라가지 못하고 경직되면서, 제품 팀이 시스템을 우회하여 컴포넌트를 분리(detach)하거나 코드를 수정(fork)함으로써 일관성이 깨지는 문제가 발생한다.
디자인 시스템을 하나의 '제품'으로 간주하고, 사용하기 편리한 Flat 패턴과 유연한 확장이 가능한 Compound 패턴을 동시에 제공하는 하이브리드 API 전략을 도입하여 사용자 니즈를 충족시킨다.
제품 팀이 시스템을 우회할 이유를 줄여 일관성을 유지했으며, 내부적으로는 동일한 Primitive 레이어를 재사용함으로써 디자인 시스템 팀의 유지보수 부담을 줄이고 사용자 경험을 최적화했다.
Trade-off
두 가지 형태의 API를 제공하기 위한 설계 및 관리 비용이 발생하며, Compound 패턴의 경우 사용자가 컴포넌트 구조를 학습해야 하고 구현 코드량이 늘어나는 부담이 있다.
컴포넌트 내부 구조를 캡슐화하고 모든 변형과 옵션을 props를 통해 조절하는 가장 일반적인 설계 방식입니다.
하나의 컴포넌트를 여러 개의 하위 컴포넌트로 쪼개어 제공하고, 사용자가 이를 자유롭게 조합하여 구조를 형성하는 방식입니다.
다양한 컴포넌트 패턴이 공통적으로 사용하는 핵심 로직과 최소 단위의 구현체를 의미합니다.


