안녕하세요 DeepBio에서 Backend 개발을 담당하고 있는 정현정입니다. 🐰
DeepBio는 인공지능을 활용한 의료데이터 분석 소프트웨어인 DeepDx를 제공하고 있습니다. DeepDx는 여러 마이크로 서비스로 이루어져 있습니다.
모놀리식 아키텍처에서는 애플리케이션 내의 모든 기능과 서비스가 단일 유닛으로 개발되고 운영됩니다. 이러한 방식은 개별 기능의 최적화를 어렵게 만들며, 특정 부분의 규모 확장이 어려워집니다.
서비스의 다양성과 규모 증가에 따라, 이러한 모놀리식 아키텍처의 한계를 극복하기 위해 마이크로서비스 아키텍처로 전환하는 것이 필요합니다.
DeepDx는 여러 마이크로 서비스로 구성되어 있으며, 각 마이크로 서비스의 소스 코드는 개별 저장소에서 관리되고 있었기 때문에 멀티 레포 방식이었습니다. 그래서 오늘은 이 멀티 레포 방식을 모노레포로 전환한 이야기를 해보려 합니다.
각 마이크로 서비스의 개발이 멀티 레포 방식으로 관리되는 것은 각 서비스의 자율성을 높이지만, 그만큼 개별적인 개발, 린팅, 테스트, 빌드, CI/CD 파이프라인이 존재하게 됩니다. 이는 개발 프로세스의 독립성을 유지하는 편리함이 있는 대신 추가 비용이 발생할 수 있다는 단점도 가지게 됩니다.
요약하자면, 자율성은 고립으로부터 제공되지만, 고립은 협업을 방해할 수 있습니다.
DeepDx의 멀티 레포에서 발생한 어려움은 다음과 같습니다.
저희 개발팀의 개발 효율성을 현저하게 저해하는 이런 요소들을 파악하여 없애고, 개발 프로세스를 향상하기 위해 모노레포를 도입하기로 결정했습니다.
모노레포를 도입하는데에는 총 5가지 단계의 큰 산을 넘어야 하였습니다. 그 각각의 단계에 대해서 설명드릴게요!
Press enter or click to view image in full size