Monolithic vs MSA

Monolithic Architecture
- 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 형태
- 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행
장점
- 간단한 배포로 모든 코드가 하나의 코드베이스에 포함되어 있어
배포 단순
- 하나의 DB를 사용하여 데이터 일관성을 쉽게 유지 가능한
단일 DB
단점
- 특정 기능을 확장하려면 전체 애플리케이션을 확장해야하는
확장성 부족
- 작은 변경 사항도 전체 애플리케이션을 다시 배포하는
긴 개발 주기
MicroService Architecture(MSA)
- 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처
장점
- 특정 서비스만 확장하여 성능을 최적화 가능한
확장성
- 개별 서비스의 변경 사항을 독립적으로 배포 가능한
독립적 배포
- 서비스 별로 적합한 기술 스택을 선택 가능한
유연성
단점
- 서비스 간 통신, 데이터 일관성 유지 등의
복잡성 증가