📖 들어가며
저희팀은 50명 규모의 개발,디자인,PM 등의 똑똑한 구성원들로 이루어진 IT 프로덕트 개발사입니다. 똑개는 창업 2년 차에 크몽과 인수합병이 되어 IT 비즈니스를 준비하는 기업 또는 개인 고객분들과 함께 성공하는 프러덕트를 만드는 일을 하고 있습니다.
대규모 프로젝트를 실패 없이 개발하고 운영하기 위해 저희는 모노레포를 사용하고 있는데요. 오늘은 모노레포를 사용한 프로젝트 소개와 도입 배경, 그리고 구축 장점을 포스팅해보려고 합니다.
✏️ 블로그 내용
모노레포(Monorepo)란?

모노레포는 두 개 이상의 프로젝트 코드가 동일한 저장소에 저장되는 소프트웨어 개발 전략으로 많은 프로젝트를 단일 저장소에서 관리하는 방식입니다. 전통적으로 각 프로젝트나 라이브러리마다 별도의 저장소를 가지는 멀티 레포(Multi-repo) 대조됩니다. 모노레포를 사용하면 코드 재사용성, 버전 관리, 종속성 관리 등의 장점이 있어서 많은 테크 기업들도 이 방식을 채택하고 있습니다. 기존 소프트웨어 방식인 모놀리식(monolithic)을 개선하기 위해 사용하고 있습니다.
모노레포 도입 배경
똑똑한개발자의 개발은 크게 자체 프로덕트와 외부 프로젝트로 이루어져 있습니다. 담당 디벨로퍼들이 작업을 진행하는 중에 각자의 레포지토리(Repository)에서 개발을 진행해야하는 일이 있는데, 그럴때 아래와 같은 이슈가 발생하곤 했습니다.
- 서로 다른 컨벤션과 라이브러리 또는 컨벤션, 라이브러리를 유지하기 위한 중복 공수
- 각각의 레포지토리로 인한 버전 관리의 어려움 발생
2. 서비스를 새로 생성 시 발생하는 구축비용 이슈
- component, util, design system 등
3. 같은 디자인 시스템 (color, typography, component), 에셋, 유틸, 로직 등이 공유 되지 않아 재구축 해야하는 비용
- 또는 전부 같게 유지하는 비용
4. 협업 시 레포지토리 마다 코드 상황이 달라 발생하는 이슈 효율, 중복 공수
- 코드 일관성 부재로 발생하는 유지 보수성 저하
5. 위의 문제를 해결하다가 생기는 히스토리 분산 등
모노레포 구축 시 사용된 라이브러리

두가지 라이브러리를 사용한 이유:
러닝커브가 있는 라이브러리로 약간의 학습이 필요했지만 레퍼런스를 많이 찾을 수도 있었고, 각 패키지를 라이브러리 형태로 배포할 때 버전 관리가 용이하다는 장점이 있었습니다. 기존에도 구축 해본 적이 있었고 당시에도 유명하고 구축이 비교적 쉬워 선택하게 되었습니다.
지금은 turborepo + yarn workspace을 결합하여 사용하고 있습니다. TurboRepo는 보다 트렌디한 느낌을 가지고 있는데요, 프로젝트 간의 의존성을 효과적으로 관리하고 더 나은 빌드 성능을 제공하여 개발자들에게 생산성의 새로운 지평을 열어주고 있습니다. Yarn Workspace은 프로젝트 간의 모듈 관리를 간소화하여 개발자가 프로젝트 간 이동을 용이하게 만들어줍니다.
또한, Next.js와 Vercel의 통합으로 더욱 편리하고 빠른 배포 과정을 경험하고 있는데요, 이를 통해 개발자들에게 높은 생산성을 제공합니다.
모노레포를 사용한 프로젝트
모노레포의 도입 이후 협업과 개발 생산성을 향상시켜 FE개발자들에게 보다 효율적인 환경 조성이 가능해졌습니다. 코드의 동기화로 인해 협업이 수월하게 이뤄지며, 모든 프로젝트의 히스토리를 한 곳에서 관리함으로써 투명하고 효과적인 개발 프로세스를 구축할 수 있게 되었습니다.
자체 프로덕트 플러그(Pluuug)

똑똑한개발자의 자체 프로덕트인 플러그(Pluuug)팀에서 일찍이 모노레포를 도입하였습니다.
국내 항공사 에어로케이(Aero-K)

청주국제공항을 거점으로 운항하는 국제 LCC 항공사 에어로케이. 유저용 앱과 파트너, 어드민, 유저의 3개의 프로덕트 개발을 위해 모노레포가 사용되었습니다.
인테리어 플랫폼 케이전트

One-Stop 솔루션 인테리어 플랫폼 케이전트. 웹과 앱 개발을 위해 모노레포를 도입하였습니다.
똑똑한개발자 프론트엔드 팀에서는 ‘모노레포 통한 프로덕트 고도화’라는 목표를 향해 나아가고 있습니다. 수많은 개발 프로세스를 효율적으로 만드는 방법과 대규모 유저 기반의 웹 앱 운영 전략에 대한 역량을 쌓아가고 있습니다.
🖥️ 똑똑한개발자 소개
똑똑한개발자는 다수의 대기업 사내벤처와 중대형 IT 프로젝트 진행 경험을 가지고 있으며
기업들의 비전을 성공적인 제품과 비즈니스로 완성하기 위해서 고민하고 있습니다.
또한 IT 비즈니스 신사업의 시작부터 성공적인 사업화를 위해
내재된 개발인력으로 프로젝트 별 TF팀을 만들어 함께하고 있습니다.
Share article