<aside> ℹ️ 해당 글은 사내 발표를 진행하기 위한 형태의 글로 작성되었습니다.
</aside>
<aside> ℹ️ PPT: https://slides.com/wjl/monorepo
</aside>
Contents
Monorepo Tools를 선택하기위해서는 어떠한 기준을 가지고 선정해야할지 알아야하기 때문에 먼저 도입배경에 대해 설명하고자 합니다.
각각의 기능을 개발하여 하나의 앱으로 패키징하여 배포하는 것을 말합니다. one repository 구조로 하나의 큰 application만 존재합니다.
<aside> 👍 장점
<aside> 👎 단점
기능 개발 병목 현상
여러 팀으로 구성되는 대규모 프로젝트에서 문제가 될 수 있습니다. 특정 기능을 개발하기 위해 다른 기능이 먼저 개발이 완료되어야 하는 등 개발 병목현상이 발생합니다.
에러 확산
특정 기능에서 에러가 발생했을 뿐인데 관련된 모든 기능이 사용하지 못하게 되는 에러 확산 문제가 발생합니다.
기술 부채
기술은 항상 바뀌기 때문에 내가 지금 사용하고 있는 기술이 6개월, 1년만 지나도 Legacy가 되기 마련입니다. 물론 항상 트렌드를 쫓아갈 필요는 없지만 새로운 기술이 나오는 이유는 기존 기술에 문제점이나 효율성이 떨어지기 때문에 빠르게 변화하는 시장에서 점진적으로 적용이 필요합니다. 하지만 one repo로 구성된 application은 기술 부채를 해결하기 어렵다는 점이 있습니다.
</aside>
실제로 기존 CLO-SET 이 jQuery 였을 시절 Backend와 Frontend가 하나의 repository에서 구성되어 있었을 때 이런 문제를 해결하기 위해서 Frontend와 Backend repository가 분리하는 작업을 하긴 했습니다.
하지만 약 2년전 CONNECT, Design System을 처음 개발했을 당시 Lerna와 Yarn을 사용해 Monorepo를 사용하여 구성한 것에 비해 CLO-SET 의 경우 jQuery를 벗어나 처음 구성부터 React.js와 Next.js로 setting한 환경을 만들어서 개발하고 있지만 지금까지 One Repository로 약 6-7년을 유지해오고 있었던 상황입니다.
빌드타임
약…30분………….이러지마…… Build Time 중 약 50%의 비중을 Docker가 차지함