Skip to main content Link Menu Expand (external link) Document Search Copy Copied

프로젝트를 위한 디자인시스템 구축 과정과 활용 방안

디자인 시스템 왜 할까?

스타트업 정말 바쁘다. 달리는 기차의 바퀴를 바꾸는 일. 항상 아슬아슬하고 긴장을 놓칠 수 없다.

  • 디자인 시스템은 UI 라이브러리가 아니다. 프로젝트 정체성을 나타내는 개념 UI 뿐만 아니라 인터랙티브 디자인, 프로덕트 디자인, UX 디자인 등 모두 아우르는 것

서비스 관점의 디자인 시스템

  • 서비스 도메인
    • 서비스의 도메인 지식
    • 사용자 행동 분석
    • 이해관계자 매핑
    • 요구 분석
  • 서비스 브랜딩
    • 브랜드 정체성
    • 컬러 시스템
    • 폰트 시스템
    • UX
  • 구현
    • 개발자 / 디자이너 협업
    • 표현
    • 아키텍처
    • 도메인 모델

서비스의 다지인은 계속해서 변한다. 디자인 시스템은 변화에 빠르게 반응하기 위한 방법. 즉, 디자인에 대한 업무 프로세스 및 방법론

디자이너와 개발자 이야기

디자이너

  • 브랜딩, UI/UX, 컬러, 디자이너 사고방식 개발자
  • 아키텍처, 객체, 비즈니스 로직, 개발자 사고방식

서로가 서로를 깊게 이해해야 한다? X 조금씩 단계별로 알아가자! O

서로 알아야 할 것들

개발 도메인

  • 재사용성, 아키텍처, 데이터 공통 가치
  • 사용자 스토리, 제품 도메인, 제품 목적 디자인 도메인
  • UI/UX, 디자인 목적, 브랜딩

확장성

  • Co-Design(디자인 시스템) -> 디자이너가 일하는 법
  • Core -> 전산화한 코어 시스템
  • Admin UI, Light UI, Dark UI -> 표현이 포함된 시스템

규칙

앞으로 변하지 않을 가능성이 높은 기본 요소들을 규칙화한다.

업무 프로세스 구축

소통 비용을 최대한 줄이는 것이 주요 전략이다.

디자인 -> 유비쿼터스 랭기지(공통 언어) <- 개발 도메인

기본 요소들

Color, Spacing, Typography, Motion, Grid

분석 - 설계 - 구현의 3단계

components/_designsystem 이라는 폴더 구성

개발자와 디자이너의 소통을 위한 툴 -> Storybook

  • 공통적인 컴포넌트, 컬러, typography를 정리해서 보여줌.
  • 설계는 간단하더라도 개념과 목적은 명확해야 한다.

단계별 설계

컨셉 아키텍처

  • primitive -> 자주 바뀌지 않는 기반 컴포넌트, Button, Input, Select, Grid
  • archetype -> 공통 비즈니스 로직, Usecase, State, Side-Effect
  • service core -> 사용자에게 보여지는 디자인, Color, Typography, Styled Primitive
  • service Extension, Atom, Molecule, Organism, Template, Page 아토믹 디자인

확장 가능한 컴포넌트 설계

Tokens(Spacing, Color, FontSize, Heading) -> Theme(Theme1, 2, 3) -> Generator(createStyles) -> Component(Function Component)

모듈화

lerna + yarn workspace

질문

  • 아토믹 디자인
  • css 라이브러리
    • emotion이 제일 안정적(오래된 라이브러리, 버그가 별로 없음. 자료가 많음) -> 스티치스도 고려했었음(무한 재귀를 돈다.), 더 빠르다.
    • 기술 스택은 트레이드오프 -> scss(상대적으로 최적화에 좋다.) but Emotion은 다 js이기 때문에 개발자가 왔다갔다 스위치를 해야 하는 비용이 적다. 빌드할 때, 동적으로 생성

마이크로 프론트엔드

Webpack Module Federation

아토믹 디자인

atom -> 시각적으로 봤을 때, 하나의 역할

molecule과 organism -> 규칙을 확실하게 정함

  • molecule: 사용자에게 의미 보다는 범용적으로 사용, 하나의 역할만 가지면
  • organism: 사용자에게 의미를 가지는 기능적 요구사항

ex) 사이트의 개인정보 운영정책

  • 사용자에게 의미가 있는 역할을 하면 organism -> 즉, 동적
  • 그냥 string molecule -> 정적

template

  • Layout 용도로 많이 사용
  • Template에 템플릿 추가 가능? -> template은 페이지 내에서만 사용
  • 유사한 페이지 -> refashion의 경우 shop 탭

오픈소스1 오픈소스2