
268
2
부
구현
산출물을 배포해야 하는지 (또는 배포해서는 안 되는지 )를 아는 것이다. 작은 변경 사항을 운
영 환경에 적용하기 위해 빌드한 서비스를 모두 배포해야 할까? 커밋 메시지를 읽는 것만으로
어떤 서비스가 실제로 변경됐는지 추측하기 힘든 것처럼 판단하기 어려울 수 있다. 이 방식을
사용하는 조직은 모든 것을 함께 배포하는 방식으로 되돌아가는 경우가 많지만, 그런 상황은
정말로 피하고 싶다.
게다가 사용자 서비스의 코드 한 줄을 변경함으로써 빌드가 중단되는 경우 이 문제가 수정될
때까지 다른 서비스를 변경하지 못한다. 그리고 이 거대한 빌드를 모두 공유하는 다수 팀이 존
재하는 시나리오를 생각해보자. 누가 책임자인가?
분명히 이 방식은 모노레포
monorepo
의 한 형태다. 하지만 실제로 필자가 본 대부분의 모노레포
구현은 여러 빌드를 리포지터리의 각 부분에 매핑하는 것이며, 이에 대해서는 곧 자세히 살펴
본다. 따라서 배포 가능한 여러 마이크로서비스를 빌드하려는 사람들에게 단일 리포지터리를
단일 빌드에 매핑하는 패턴은 최악의 모노레포 형태로 볼 수 있다.
실제로 프로젝트의 초기 단계를 제외하곤 이 방식이 사용되는 것을 거의 보지 못했다. 솔직히
말해, 다음 두 가지 접근 방식 중 하나가 훨씬 더 바람직하므로 이 두 방식에 중점을 둘 것이다.