본문 바로가기

IT Note/IT Basics

기업들은 모노레포를 어떻게 사용하고 있을까?

안녕하세요, 여립입니다.

이전 글에서 모노레포에 대한 개념을 훑어보았는데요, 이번 글에서는 무신사, 화해, 라인의 모노레포 도입기를 통한 개선점과 단점을 어떻게 보완했는지 알아볼 예정입니다!

 

 

다시 한번 모노레포에 대해 간략하게 설명하자면, 흩어져 있던 여러 프로젝트 코드를 하나의 저장소에서 관리하는 전략입니다. 구글 등의 빅테크를 중심으로 유행하게 된 방안으로 국내 많은 기업들 또한 기존의 멀티레포에서 모노레포로 바꾸는 추세입니다.

 

모노레포를 구성할 때 사용하는 기술

ChatGPT가 만든 이미지 :)

크게 두가지 종류로 나눠지는데요, 하나는 빌드 시스템, 다른 하나는 패키지 관리자 입니다.

각 언어와 프로젝트의 특성에 따라 정말 다양한 옵션이 있습니다. 

 

예시로, Bazel (Google 개발) 과 Pants는 Java, C++, Python 등 다양한 언어를 지원하는 빌드 도구로, 성능 최적화에 초점을 맞춥니다.

Lerna와 Yarn Workspaces는 JavaScript 생태계의 패키지 관리자로, 프로젝트 간 의존성 관리와 코드 재사용을 용이하게 합니다.

 

더불어, 모노레포 적용에는 단순히 기술 스택 뿐만아니라 다양한 개발 전략이 도입되니, 관련 기술을 크게 두 종류로 분류한다는 점을 알아두시면 좋을 것 같습니다.

 

더 자세하게 관련 기술을 알아보고 싶으신 분들은 아래 링크로 둘러보시면 좋을 것 같습니다.

https://github.com/korfuri/awesome-monorepo

 

GitHub - korfuri/awesome-monorepo: A curated list of awesome Monorepo tools, software and architectures.

A curated list of awesome Monorepo tools, software and architectures. - korfuri/awesome-monorepo

github.com

https://monorepo.tools/

 

Monorepo Explained

Everything you need to know about monorepos, and the tools to build them.

monorepo.tools

 

실제 기업 적용 사례

여기서는 도입 과정에 자세히 다루기 보단, 가볍게 훑어보는 정도로 정리해보고자 합니다.

(도입 과정은 하단 링크에서 자세히 보실 수 있습니다.)

그럼 각 기업의 모노레포 기술과 사용 목적, 도입 경험에 대해 알아봅시다!

무신사

무신사는 프론트엔드 팀에서 모노레포 도입을 진행했는데요, 여러 이유 중 각 서비스를 개발할 때마다 달라지는 버전과 프레임워크 등에 통일성을 이루고자 한 부분이 가장 큰 것 같습니다.

 

학습 난이도를 고려해 기존 개발자들에게 접근이 쉬운 yarn berry와 yarn workspace를 사용해 모노레포를 도입했습니다.

 

도입 이후 꼽은 장점으로는, 동일한 환경에서 개발하다보니, 다른 팀끼리 팀 간 지원 밑 소통이 자유로웠다는 점이 있습니다. 또한, 이전에는 각자 담당자가 각자의 저장소에 전부 수정을 해야되는 사항이, 한번의 변경으로 전체 반영이 되어 간소화 되었다는 점입니다.

 

화해

화해 또한 프론트엔드 플랫폼 팀에서 모노레포 도입을 진행했습니다.

도입이 고려된 배경으로는 중복된 기능 구현과 각 프로젝트마다 독자적인 스타일 설정, 그리고 프로젝트 생성에 대한 표준 부재 등이 있습니다. 더불어 멀티레포 환경에서 구성원 사이의 작업물과 이슈 처리 등에 대한 공유가 어려워, 모노레포 도입을 고려하게 되었다고 합니다.

 

기술에 대한 부분으로는 yarn berry를 사용했습니다. 여러번의 PoC와 테스트를 통해 독자적인 커스텀 기능을 구현했고, git branch 전략도 적극 도입해 구성했다고 합니다.

(화해의 테크블로그를 확인하시면, 도입을 위해 고려한 기술 사용 과정과 해당 기술의 장단점을 정말 상세히 설명해주었습니다!)

 

해당 글에는 도입 이후 경과에 대해서는 적혀있지 않지만, 관련 테스트를 진행하며 모노레포 도입을 긍정적으로 바라보며 기존의 목표에 잘 부합한다고 합니다.

 

LINE+

라인의 프론트엔드 팀에서도 모노레포 도입을 진행했습니다.

 

라인의 경우 모노레포 구성 툴로 Vercel의 Turborepo를 사용했습니다. 캐싱과 병렬 실행을 통한 빌드 속도 개선에 중점을 두고 개발된 툴로, 최근 큰 테크 회사에서 많이 적용되고 있는 툴이라고 합니다.

기존에 많이 사용되는 lerna와 비교한 실행 속도라고 합니다.

라인은 모든 패키지에서 공통되는 부분을 찾아 한 곳으로 묶어 관리포인트를 줄이고, 캐싱을 통해 반복작업의 실행 속도를 개선하고자 했습니다.

 

결과적으로 의존성을 분리하고 빌드 캐싱을 통해 빠르게 작업을 진행할 수 있었다고 합니다. 또한, 툴의 내장 기능으로 과정의 흐름과 소요시간을 쉽게 확인할 수 있어 진행상황을 파악하기 수월했다고 합니다.

 

 

마무리

각 회사들의 기술 블로그 통해 모노레포의 도입 목적과 결과에 대해 알아보았습니다.

모노레포에 대해 자세히 알아보는 시간 되셨길 바라며, 긴 글 읽어주셔서 감사합니다.

 

좋은 하루 되세요!

 

참고 기술 블로그:

모노레포 이렇게 좋은데 왜 안써요?

 

모노레포 이렇게 좋은데 왜 안써요?

스냅, 패션톡, 체험단 등 커뮤니티 제품들을 운영하고 있는 무신사테크 커뮤니티 트라이브 프론트엔드 팀의 모노레포 도입기

medium.com

모노레포 적용부터 yarn berry까지 – 화해 블로그 | 기술 블로그

 

모노레포 적용부터 yarn berry까지 – 화해 블로그 | 기술 블로그

모노레포 적용부터 yarn berry까지 frontend 플랫폼에서 진행할 과제를 도출했습니다. 목표는 두 가지입니다. 1)모노레포 적용부터 yarn berry까지 빠른 실행력을 갖추면서 높은 퀄리티 결과물을 내는

blog-wp.hwahae.co.kr

Turborepo로 모노레포 개발 경험 향상하기

 

Turborepo로 모노레포 개발 경험 향상하기

안녕하세요. 저는 LINE+ UIT 조직에서 프런트엔드 개발을 하고 있는 이상철입니다. 저는 UVP(Universal Video Player)라는 사내 동영상 컴포넌트 라이브러리를 모노레포 환경에서 개발하고 있는데요. 어떻

engineering.linecorp.com

 

반응형