[Methodology] CDD(Component Driven Development) - 계획(1/2)


CDD(Component Driven Development)란?

페이지 단위로 UI 개발이 이루어지는 것과는 반대로 UI 컴포넌트들부터 만들고 이를 기반으로 페이지를 구성.

예시 : AirBnB Dates UI Storybook

프로젝트 초기부터 UI 컴포넌트를 중심으로

<Button ... />
<Modal ... />
<Chart ... />

와 같이 개발하여 아래의 이점들을 얻기 위함이다.

  1. 디자인 체계화 & 디자이너와 효율적인 협업 : Storybook 같은 UI 컴포넌트 익스플러어 툴을 통해 체계적으로 관리, 디자이너와 쉽게 소통.
  2. 평행화 개발(Parallelize development) : 다른 프로젝트에서도 쉽게 쓰고 공유 가능.
  3. Decoupling : CSS, JS, I18n, UI 단위 테스트 등

글을 쓰게된 배경

회사에서 2.0 버전의 웹 서비스를 CDD 방식으로 개발할 계획이다.
나름의 설계안을 만들어 세미나 시간에 제시해보고자 한다.

현재 프론트엔드는 UI컴포넌트들이 CSS로만 정의되어 사용되고 있다(ex - Bootstrap)
이런 방식이 코드 재사용성과 UI 컴포넌트별 디커플링이 잘 안되는 문제가 있는 듯하다.
이것을 CDD답게 설계하여 다양한 제품별 웹 서비스들에 적용할 계획이다.

각 프로젝트 별로 프론트엔드 개발자가 따로 있다.
이들간의 협업 효율성과 디자이너와의 소통을 관리하는데 효율적인 방법을 위한 툴 또한 찾아보았다.

처음엔 Storybook 프로젝트를 만들어 Monorepo 방식으로 다른 프로젝트 레포에서 Storybook 레포를 가져다 쓰는 것을 생각했다.
하지만 이럴경우 Webpack설정을 잘 컨트롤해야하고 로컬에 필요없는 UI 컴포넌트들까지 불러와야하는 점이 불필요하다고 생각했다.
그래서 이 점을 보완할 수 있는 방법도 찾아보았다.

도입할 툴과 용도

  • Bit : UI 컴포넌트의 라이브러리화
    • 각 프로젝트에서 필요한 UI 컴포넌트만 가져옴(Tree shaking)
    • 평행화 개발(Parallelize development)
  • Storybook : UI 컴포넌트 익스플로러
    • UI의 체계적인 관리.
    • 어떤 UI컴포넌트들이 있는지 쉽게 파악
    • 쉬운 비쥬얼 테스트 : 웹에 배포하여 디자이너와 쉽게 소통.

Workflow

with 디자이너 : 디바이스 스크린 규격을 확인해보며 피드백 줄 수 있도록 함.

  • 회사에서 쓰는 Storybook 페이지를 만들어 모든 UI 컴포넌트를 담은 프로젝트를 웹에 배포.
  • 단, 개발자들은 각각의 UI 컴포넌트 라이브러리 배포때마다 Storybook에 등록 후 재배포

with 다른 프로젝트의 프론트엔드 개발자

  1. 프로젝트에 필요한 UI 컴포넌트 들부터 개발
  2. Bit에 Publish(= npm 라이브러리 등록)
  3. 다른 프로젝트 개발자가 Consume(= npm install)

모든 UI를 처음부터 빌드한다기보다 참고한 라이브러리를 재가공하여 등록하는 방식으로 효율성을 높일 것 같다.
예를들어

  • Element UI
  • Datepicker 라이브러리

등을 커스텀 하는 수준으로 진행할 것 같다.

참고 자료





2023

Flutter 맛보기 1

3 분 소요

직방 기술지원팀 기술공유 세미나 중 플러터를 소개한 내용입니다

Back to Top ↑

2022

Back to Top ↑

2019

[Tutorial] Storybook과 Bit을 활용한 UI 컴포넌트 관리(Workflow)

1 분 소요

회사에서 프론트엔드 개발원칙을 SFC(Single File Component)에서 UI 컴포넌트를 기준으로 CDD(Component Driven Development)를 진행하려고 한다. 그래서 체계적으로 관리하기위해 Storybook과 Bit을 도입해보고자 한다. 각각의 역할은 ...

[Workflow] 프론트엔드 개발조직을 위한 워크플로 설계

2 분 소요

작성 배경 회사의 작업구조를 페이지 중심 개발에서 UI 컴포넌트 중심 개발로 변경하면서 Workflow를 개선할만한 환경을 구성해야했다. 폐쇄망 기반에서 개발자간 UI 명세서 역할을 할 수 있는 Storybook과 그것을 공유할 Verdaccio라는 구축형 NPM Pri...

[ESlint & Prettier] 개발 관습 설정 in Visual Studio

1 분 소요

회사 프로젝트를 작업하기 전 프론트엔드 개발자들 간의 코드 규칙을 Eslint와 Prettier 설정을 맞춰 관리해가는 방향을 정했다. 아직 협업을 할 경우는 없지만 미래에 인수인계 받거나 협업을 진행할 경우 코드관습이 달라 고생할 경우를 대비하기로 했다. 설정은 작업을 진행하며 ...

[CodingTest] 2019-10-26 SQL문제

최대 1 분 소요

공부겸 코딩테스트 사이트에서 토요일 오전 10시에 백엔드 포지션 테스트를 해준다기에 참여해봤다. SQL문제가 나왔는데 더 좋은 답이 있는것 같아 나중에 기록해두고 수정해보기로 한다.

[CodingTest] 피보나치 수열

1 분 소요

문제 : 피보나치 수열 제 1항부터 입력한 자연수(N)까지의 피보나치 수열 항들의 합을 구하여라.

[Syntax] 새로 알게된 파이썬 문법 정리

최대 1 분 소요

chaning comparison 파이썬은 chaning comparison이라는 신기한 문법이 있다. 참고 if a < b and b < c : (...) 라는 구문이 if a < b < c : (...) 으로 연산된다. 직관적인 문법이 인상적. ...

[DataType] Map & Set

최대 1 분 소요

Set vs Array - 관련기사 Set 유일값들의 배열이 필요할때(distinct) 집합의 개념이 필요할때(차집합, 교집합 등등 자체 메서드들이 많음.) index가 필요 없을때 Array에서 중복값을 없앨때 => ...

Back to Top ↑

2018

SGIS-shpToGeojson

1 분 소요

SGIS에서 받은 지도데이터(.shp)를 geojson으로 변경하는 작업 내용

Back to Top ↑