본 게시글은 Flutter in Production 컨퍼런스 참여 후 작성한 글입니다.
들어가며..
이번 발표는 flutter 에서 monorepo 를 구성하는 내용에 대한 세션이었다.
지난 Flutter with AI 2024 Seoul 에서 Melos 를 사용한 flutter 모노레포 구축하기 라는 내용으로 이정주 님께서 발표를 하신 적이 있었다.
(지난 글 보니까 melos 를 이용해서 monorepo 구성하는 방법에 대해서 정리가 덜 되어 있었다… todo list 에 추가 해야겠다ㅎ..ㅎ)
이번 발표자분도 지도 GDG 에서 GoLang 챕터의 오거나이저로 활동 중이라고 하셨다.
Monorepo 란?
Melos 를 사용한 flutter 모노레포 구축하기 여기에도 정리되어 있긴 하지만 다시 적자면,
여러 프로젝트(앱, 패키지, 라이브러리 등)를 한 저장소에 통합해 관리하는 방식이다.
장점으로,
동일한 코드베이스에서 여러 프로젝트 관리가 가능하다.
의존성 관리와 버전 동기화에 좋다.
코드 재사용성이 좋다.
단점으로,
메모리랑 스토리지 등 컴퓨터 하드웨어에 영향을 받는다.
monorepo 를 언제 도입을 고려하는 것이 좋을까?
회사 정책으로 오픈 소스를 사용하지 못하는 경우
또는 N개의 앱에서 동일한 로직을 사용하는 경우
협업하는 인원이 증가하여 각 feature 별로 작업 단위를 나눌 필요가 있을 때에도 용이
Melos 와 Pub Workspace 비교
Melos
기존 monorepo 구성 관리 도구로, FlutterFire, Dio, Drift 등에서도 활용 가능하다.
다만, pub workspce 에 비해 스터디 비용과 yaml 세팅 등 작업이 필요하다.
Pub Workspce
Dart 3.6 이상에서만 제공되는 새로운 monorepo 관리 도구
단순한 의존성 관리가 가능하다.
즉, 단순하게 패키지끼리 서로 버전이 꼬인 것만 관리를 하겠다면 pub workspce 도입이 나을 수도 있다.
