피드로 돌아가기
우리는 왜 공통 라이브러리를 만들기 시작했나
컬리 기술블로그컬리 기술블로그
Frontend

우리는 왜 공통 라이브러리를 만들기 시작했나

컬리 물류 웹개발팀이 Lerna 모노레포와 npm 패키지로 공통 라이브러리를 체계화해 반복 개발 비용 제거

2022년 1월 4일9intermediate

Context

급성장하는 조직에서 유사한 기능을 각 프로젝트별로 중복 개발하고 있었다. 물류 백오피스 통합이라는 목표를 앞두고 있던 물류 웹개발팀은 프런트엔드 기술 스택의 파편화와 도메인별 기능의 중복 구현으로 인한 인원과 시간 손실을 해소해야 했다.

Technical Solution

  • React 기반 신규 프로젝트 템플릿 제공: react-boiler-plate를 만들어 신규 프로젝트 3개에 적용
  • 외부 라이브러리 vs 자체 개발 원칙 수립: 시간과 인력이 많이 필요한 기능은 외부 라이브러리(예: Day.js) 사용, 그 외는 소규모 단위로 자체 개발
  • Lerna 기반 모노레포 구성: 단일 저장소에서 여러 npm 패키지를 통합 관리하고 배포 및 버저닝 자동화
  • 신뢰도 확보를 위한 3가지 원칙 수립: 문서화, 코드 리뷰, 테스트 스위트 의무화
  • 첫 번째 패키지 구현: add-separator(숫자에 구분자 추가) 기능을 TDD 기반으로 개발하고 npm에 @kurly-lfd/add-separator로 배포

Impact

add-separator 패키지의 성능 테스트에서 정규식 기반 구현 대비 평균 약 20% 더 나은 성능을 기록했다.

Key Takeaway

조직 규모가 커질수록 코드 재사용과 표준화 문화를 통해 의사결정과 소통 비용을 줄이는 것이 중요하다. 완벽함을 추구하기보다 작은 기능부터 일관된 원칙(문서화, 코드 리뷰, 테스트)으로 시작해 점진적으로 공통 라이브러리 생태계를 성장시키는 접근이 효과적이다.


다중 프로젝트를 관리하는 개발팀에서 Lerna 모노레포와 npm 패키지 관리를 도입하면, 프런트엔드 기술 스택 표준화를 통해 컨텍스트 스위칭 비용을 감소시키고 신규 프로젝트 온보딩 시간을 단축할 수 있다. 동시에 TDD와 코드 리뷰, 문서화를 필수화함으로써 공유 라이브러리에 대한 팀의 신뢰도를 확보할 수 있다.

원문 읽기