
UI 로직 분리부터 LLM 활용까지, 쏘카가 웹 디자인 시스템을 구현하며 마주한 기술적 선택의 기록
쏘카 디자인 시스템 2.0의 웹 구현 과정을 다루며, 단순한 UI 컴포넌트 모음을 넘어 서비스 파편화를 해결하기 위한 고도화된 아키텍처를 제시합니다. 컴포넌트의 성격에 따라 Hook과 클래스 객체를 선택적으로 활용하는 설계 전략과 패키지 최적화 기법을 상세히 공유합니다.
대규모 서비스에서 일관된 UI/UX 정책을 유지하면서도 기술적 유연성을 확보하고 싶은 프론트엔드 엔지니어 및 디자인 시스템 구축 담당자에게 강력 추천합니다.
다양한 서비스 환경(Next.js 13~15, SSR/CSR, 각기 다른 번들러)에서 UI 정책과 비즈니스 로직이 강하게 결합되어 있어, 컴포넌트의 재사용성이 떨어지고 유지보수 비용이 증가하는 문제가 발생했습니다.
UI 결합도에 따라 'Hook 중심(상태-애니메이션 강결합)'과 '객체 중심(복잡한 정책 로직 분리)' 구조로 이원화하고, 트리쉐이킹 최적화를 위한 패키지 전략 및 일관성 유지를 위한 AI 지시어(Instructions) 고정 방식을 도입했습니다.
UI와 로직의 명확한 분리를 통해 서비스별 커스텀 요구에 유연하게 대응할 수 있는 독립성을 확보했으며, 트리쉐이킹 최적화로 번들 사이즈 효율을 개선하고 LLM을 활용한 개발 생산성 향상 기반을 마련했습니다.
Trade-off
로직을 객체(core)와 Hook 어댑터로 분리함에 따라 초기 설계 복잡도가 증가하고 단순한 컴포넌트에도 다소 과한 아키텍처가 적용될 수 있는 오버엔지니어링의 위험이 존재합니다.
UI의 상태 변화가 제스처나 애니메이션과 밀접하게 연동될 때, React Hook을 사용하여 상호작용 로직을 캡슐화하는 방식입니다.
비즈니스 로직이나 복잡한 정책을 순수 자바스크립트 객체(Core)로 구현하고, 프레임워크 종속적인 Hook이나 컴포넌트를 어댑터로 사용하는 구조입니다.
빌드 과정에서 사용하지 않는 코드를 제거하여 최종 번들 크기를 줄이는 최적화 기술입니다.




