MSA(Microservice Architecture)
큰 애플리케이션을 독립적으로 배포, 운영할 수 있는 작은 서비스들로 나누어 개발
확장성, 유지보수 용이성, 독립적인 배포 가능성
Monolithic vs MSA
- 개발 및 배포
모놀리식: 한부분에 변경발생하면 전체시스템 다시 빌드하고 배포
마이크로서비스: 독립적인 개발 배포 가능 (민첩성 향상)
- 기술 스택과 유연성
모놀리식: 하나의 기술 스택에 국한됨
마이크로서비스: 필요에 따라 적합한 기술 스택 선택가능. 최신기술 도입 가능
- 확장성과 성능
모놀리식: 전체 애플리케이션 확장해야하므로 자원 낭비 발생. 한 서비스(기능)에 대한 수요가 증가해도 전체 시스템의 자원을 모두 늘려야함(비효율성)
마이크로서비스: 필요한 서비스만 개별적 확장, 자원활용 극대화. 트래픽이 높은 서비스에 유리
- 장애 격리 및 회복성
모놀리식: 하나의 컴포넌트에 장애가 발생할 경우 전체 애플리케이션이 영향(신뢰성 저하)
마이크로서비스: 서비스 간의 의존성이 분리되어 있기 때문에 한 서비스의 장애가 전체 시스템에 미치는 영향을 최소화 각 서비스는 독립적으로 회복할 수 있어 전체 시스템의 가용성 높일 수 있음
- 관리와 모니터링 (유일하게 msa가 더 bad)
모놀리식: 단일 시스템에서 모든 로그와 성능 데이터를 관리하기 때문에 모니터링이 간단
마이크로서비스: 여러 개의 독립적인 서비스로 구성되어 있어 더 많은 노력 필요. 통합된 모니터링 도구와 관리 시스템이 필수적이며, 이러한 시스템은 복잡성을 증가