참고 : https://daaa0555.tistory.com/457
마이크로서비스 아키텍쳐의 반대 되는 개념으로 전통의 아키텍쳐를 일컫는 단어 입니다.
소프트웨어의 모든 구성요소가 하나의 프로젝트에 통합되어 있는 형태 입니다.
어플레케이션 구동시간이 증가하고 , 빌드 및 배포 시간이 증가합니다.
조그마한 변경사항이 있어도 전체를 다시 빌드하고 배포해야 합니다.
하나의 프로젝트에 모든 코드가 몰려있기에 유지보수가 어렵습니다.
일부분의 오류가 전체에 영향을 미칩니다.
작은 프로젝트에는 유리하지만, 애플리케이션의 규모가 커질 수록 문제가 많아집니다.
대신에, 서로 상호 통신을 하고 이를 통하여 전체 서비스를 구성합니다.
서비스마다 독립적으로 빌드와 배포가 가능해져 빠릅니다.
일부의 오류가 전체에 영향을 미칠 가능성이 적습니다.
메모리 및 cpu관리에 효율적입니다.
서비스가 모듈화 되어 있고, 모듈끼리 RPC, Message-driven을 이용하여 통신하기 때문에 개발 속도가 증가합니다.
서비스마다 적합한 기술을 선택 적용할 수 있습니다.
각자 배포한 서비스에 대해 다른 서비스와 연계가 잘 되는지 확인해야 합니다.
서비스 간 호출 시 REST API 사용으로 인한 통신비용과 Latency가 증가합니다.
분산되어 있어 디버깅하기가 어렵습니다.
서비스마다 DB가 분리되어 데이터 조회가 어렵고 중복이 발생합니다.
복잡도가 증가합니다.