
Monolithic architecture
- 하나의 DB와 하나의 프로젝트로 모든 서비스가 구성되어있는 일반적이고 단순한 구조
배포
- 단순히 하나의 application만 띄우면 되기 때문에 배포 파이프라인이 구성이 간단하다.
- 서비스 규모가 커질수록 빌드, 테스트, 배포하는 데 시간이 오래 걸린다.
- 조그마한 수정사항이 있어도 프로젝트 전체를 다시 빌드하고 배포해야 한다.
확장성
- 특정 서비스의 scale out이 어렵다.
- 실제로 애플리케이션에서 트래픽은 골고루 집중되지 않는다. 그래서 특정 모듈만 성능을 높일 필요성이 생겼을 때 모놀리식의 경우 힘들다.
테스트 및 유지보수
- end-to-end 테스트 용이
- 하나의 프로젝트에 전체 로직이 있기 때문에 통합 테스트 시 유리하다.
- 유지보수성
- 규모가 작다면 유지보수는 간편하지만, 규모가 커질수록 코드량이 방대하고 복잡해지고 의존성 같은 것들도 늘어나면서 유지보수하기 힘들어진다.
- 일부의 오류가 발생해도 프로그램 전체에 영향을 미친다.
- 약간의 사소한 오류로 서버가 다운돼도 모든 기능이 마비되는 셈이다.
- 결국 하나의 프로젝트에 있기 때문에 기능별로 알맞는 언어,프레임워크를 선택하기 까다롭다.
- msa에 경우 서바마다 아예 다른 프레임워크와 기술을 사용할 수 있다.
MSA
- 모놀리식 아키텍처를 Micro 단위로 쪼개서 독립적으로 구분하는 아키텍처.