장점 :
하나의 큰 서비스를 만드는 방향
1) 오로지 개발에 집중 (난이도 감소)
2) 하나만 개발 (편리한 테스트)
3) 한가지의 산출물 (배포 편리)
단점 :
어플리케이션의 구성요소가 서로에게 영향을 미치기 쉬움
- 한 기능의 문제가 전체 어플리케이션 위태롭게 만듬
- 작은 기능 갱신을 위해 전체 배포
- 서로 다른 기술 스택 활용 어려움
=> 빠른 요구사항 대응, 신기술 적용에 불리
=> 서로 다른, 작은 서비스들의 상호작용
하지 말아야하는 이유들
- 1) 통신의 상태가 불안정할 가능성 높은, 서로 분리된 서비스라서 네트워크의 영향 받음
- 2) 서로 다른 서비스의 기능 요구 시, 기능구현 및 테스트 어려움
- 3) 자신이 필요로 하는 서비스의 상태 확인 어려움
- 4) 서로 다른 배포, 배포 충돌과정 고려 => 배포 과정 복잡
장점
- 1) 상황에 맞는 기술스택 사용 가능
- 2) 기능이 개별적으로 발전, 개별 배포 용이
- 3) 개별 서비스의 복잡성이 적어짐