본문으로 이동
Node.js 라이브러리 배포 파이프라인에 플러그인 시스템 도입기
문서

Node.js 라이브러리 배포 파이프라인에 플러그인 시스템 도입기

장지훈 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

100개가 넘는 라이브러리와 여러 모노레포를 관리하면서 배포 CLI에 레포별 옵션이 계속 추가되어 공통 도구가 복잡해지는 문제가 생겼습니다. 이를 해결하기 위해 배포 사이클의 이벤트와 전달 데이터를 정의한 Node.js 플러그인 시스템을 도입해, 공통 배포 라이브러리를 바꾸지 않고도 레포별 기능을 구현하고 설정할 수 있게 했습니다. CodeGen 검증, Public API 사용 현황 수집, 패키지 메타데이터 경량화, 의존성 버전 자동 조정 등을 플러그인으로 제공했습니다. 특히 API가 어느 버전부터 제공됐는지 추적해 실제 사용 API에 필요한 의존성 버전을 맞추면서, 모노레포와 서비스 환경 간 버전 차이로 생길 수 있는 문제를 줄였습니다.

  • 배포 과정의 확장 지점은 이벤트 훅으로 정의하고, 플러그인이 필요한 시점의 데이터만 받도록 설계할 수 있습니다.
  • 플러그인별 설정을 레포에서 관리하면 공통 CLI를 수정하거나 업데이트하지 않고도 요구사항을 적용할 수 있습니다.
  • 모노레포에서는 워크스페이스가 최신 패키지를 참조해도 실제 배포 환경의 의존성 버전이 낮을 수 있으므로 별도 검증이 필요합니다.
  • Public API가 추가된 버전을 추적하면 사용 중인 API에 맞춰 의존성 버전을 자동으로 올릴 수 있습니다.

소개

100개가 넘는 라이브러리를 관리하면서 마주했던 문제들을 플러그인 시스템으로 풀어낸 방법을 공유합니다.

비슷한 학습 자료

컨퍼런스 if kakao

라이브러리 버전관리 #npm #cdn

컨퍼런스 if kakao

(제5회 카카오테크밋 패널토의 내용의 일부입니다.) "웹 텍스트 에디터 개발에 필요한 고민과 신규 에디터 소개" eliot(박민규님)의 발표영상 보러 가기 https://youtu.be/xdj0xrS_FTE #kakaotechmeet #카카오테크 #frontend #프론트엔드 #개발자 #라이브러리 #npm #cdn

웹 개발 프론트엔드

문서 박서진/박성범

토스에서 100명이 넘는 엔지니어들이 모노리포에서 장점만을 누리기 위해 카탈로그를 도입한 이야기를 소개합니다.

개발 도구

문서 정석호

토스 프론트엔드 챕터에서는 하나의 모노레포에서 200여개가 넘는 서비스를 관리하고 있어요. 이렇게 커진 모노레포에서도 git push 부터 배포까지 5분을 유지할 수 있는 비결을 소개합니다!

프론트엔드 데브옵스 · 인프라

문서 임지훈

여러분은 라이브러리를 만들어봤거나, 만들어야겠다고 생각해본 적이 있나요? 이번에는 프론트엔드 개발 환경에서 높은 범용성을 나타내는 용어 중 하나인 “Framework Agnostic”에 대해 이야기 해보려고 합니다.

웹 개발 프론트엔드

문서 장호승

Node.js에는 두 가지 Module System이 존재합니다. 토스 프론트엔드 챕터에서 운영하는 100개가 넘는 라이브러리들은 그것에 어떻게 대응하고 있을까요?

백엔드 프로그래밍 언어

문서 박지우

기술 부채는 개발할수록 쌓여만 갑니다. 프론트엔드 챕터가 JSCodeShift를 이용하여 순식간에 100개 서비스의 기술 부채를 해결한 경험을 소개합니다.

프론트엔드 개발 도구