모노레포 하나에 15개 서비스를 담은 이유
· 약 9분
서비스는 마이크로서비스로 잘게 나누면서, 레포는 하나로 유지한 이유를 정리합니다.
지난 반년 동안 백엔드 서비스를 15개까지 늘렸습니다. 하지만 레포는 끝까지 하나로 두었습니다. 서비스마다 레포를 두는 방식이 일반적이지만, 저는 그 반대를 택했습니다.
서비스를 나눈 이유
목표는 단순했습니다. 한 서비스가 한 가지 일만 하도록 만드는 것입니다.

손에 비유해 보겠습니다. 한 손은 접시를 들고, 다른 손은 칼을 쥡니다. 한 손으로 둘 다 하려고 하면 둘 다 어설퍼집니다. 접시가 흔들리면 칼질이 흔들리고, 칼을 갈면 접시를 놓칩니다. 서로 무관한 일인데 한 덩어리라서 함께 흔들리는 것이지요.
서비스도 마찬가지입니다. 결제와 알림을 한 코드에 두면, 결제를 고칠 때마다 알림이 함께 불안해집니다. 그래서 책임 단위로 나누었습니다. 결제는 결제 서비스, 알림은 알림 서비스. 각 서비스가 무엇을 책임지는지 경계를 분명히 그었습니다.
경계를 그으면 이점이 하나 더 생깁니다. 필요한 서비스만 골라 조립할 수 있다는 점입니다. 새 기능에 "사용자 확인 + 결제 + 알림"이 필요하면 세 서비스를 조합하면 됩니다. 처음부터 다시 만들 필요가 없습니다.
이것이 마이크로서비스를 택한 이유입니다. 책임의 경계를 명확히 긋고, 그 조각을 필요에 따라 조립하기 위해서입니다.