다음과 같이 용어를 사용하도록 하겠습니다.
Micro Service Architecture -> MSA
Monolithic Architecture -> MA
MA
한 단어로 특징을 말하자면 강결합(tight coupling) 입니다.
장점
단점
MSA
한 단어로 특징을 말하자면 느슨한 결합(loose coupling)입니다.
Single responsibility principle 철학 테두리 안에 있는 구조입니다.
각자 맡은바 기능을 수행하며 컴포넌트들은 상호 API를 노출시켜 통신합니다.
MA | MSA
장점 -> 단점
단점 -> 장점
대체로 위와 같기 때문에 추가적으로 장단점을 다시 나열하진 않겠습니다.
위 문제들을 해결해야만 우리는 MSA를 바람직하게 도입할 수 있을테니까요!
당연하게도 MSA 구성은 MA보다 시스템 복잡도가 높아집니다. (기본 시스템 외에 부가적으로 API gateway 및 circuit breaker의 도입 또한 고려해야할지도 모릅니다.) 그 말은 도입시 고려해야할 것들이 많아지고, 당장 시간, 비용적 측면에서 더 많은 자원이 투입되야 하겠죠.
하지만 서비스가 성장함에 따라 MSA의 필요성이 느껴지면,, 예를들어 기능별로 서버로 들어오는 요청 편차가 매우 크다거나, 기능에 적합한 새로운 언어의 도입을 고려한다거나, 빠른 배포 주기가 절실히 필요하다든지 등의 이유로 MA로부터의 탈피가 필요하다면 MSA는 좋은 선택지가 될 것입니다.