증가하는 거래를 수용하고 변경에 빠르게 대응하기 위해 msa 가 제시 되었다.
- 모놀리스에서 모든 것을 한꺼번에 릴리스할 수 있기 때문에 프로젝트 초기에는 코드 관리, 인지 오버헤드 및 배포의 용이성 면에서 모놀리스가 편리할 수 있습니다.
- 하지만 하나의 기능을 조금만 변경하려고 해도 전체 플랫폼을 컴파일하고 테스트해야 하기 때문에 규모가 너무 커지고 확장이 어려워지면 더 이상 효과적이지 않습니다.
Monolithic Architecture :
하나의 통합된 유닛 / 소프트웨어 프로그램의 전통적인 모델

장점
손쉬운 배포 – 실행 파일 또는 디렉토리가 하나여서 배포가 더 쉽습니다.
간편한 개발 / 테스트 / 디버깅 – 모든 코드가 한 곳에 있으므로 요청을 따라가서 문제를 찾기가 더 쉽습니다.
성능 – 중앙 집중식 코드 베이스 및 리포지토리에서는 대부분 하나의 API만으로 마이크로서비스에서 여러 API가 수행하는 것과 동일한 기능을 수행할 수 있습니다. (여러 서버 통신 필요 없음)
단점
느린 개발 속도 – 대규모 모놀리식 애플리케이션에서는 개발이 더욱 복잡해지고 속도가 느려집니다.
안정성 / 기술 채택의 장벽 / 유연성 부족 –모듈에 오류가 있으면 애플리케이션 전체의 가용성에 영향을 줄 수 있습니다./ 프레임워크 또는 언어를 변경하면 애플리케이션 전체에 영향을 미치므로 변경 시 비용과 시간이 많이 소요되는 경우가 많습니다. / 모놀리스의 경우 모놀리스에서 이미 사용한 기술로 제한됩니다.
배포 – 모놀리식 애플리케이션을 약간만 변경하는 경우에도 전체 모놀리스를 다시 배포해야 합니다.
Microservices Architecture :
독립적으로 배포할 수 있는 소규모 서비스의 모음
장점
지속적 배포 – 이제 더 자주 릴리스하고 릴리스 주기가 빨라졌습니다.
독립적 배포 가능 / 높은 안정성 / 높은 유지 관리성 및 테스트 편의성 – 팀에서 새로운 기능을 실험해 보고 문제가 발생하면 롤백할 수 있습니다. / 버그를 쉽게 격리하고 해결할 수 있습니다. / 마이크로서비스는 개별적인 유닛이므로 개별 기능을 빠르고 쉽게 독립적으로 배포할 수 있습니다. / 전체 애플리케이션이 중단될 위험 없이 특정 서비스에 대한 변경 사항을 배포할 수 있습니다.
기술 유연성 – 마이크로서비스 아키텍처를 사용하면 팀에서 원하는 도구를 자유롭게 선택할 수 있습니다.
단점
무분별한 개발 확산 – 모놀리스 아키텍처에 비해 더 복잡해집니다. 무분별한 개발 확산이 적절하게 관리되지 않으면 개발 속도가 느려지고 운영 성능이 저하되는 결과가 나타납니다.
기하급수적인 인프라 비용 – 각각의 새 마이크로서비스는 테스트 도구, 배포 플레이북, 호스팅 인프라, 모니터링 도구 등에 대한 자체적인 비용이 발생할 수 있습니다.
조직 오버헤드 추가 – 팀에서는 업데이트 및 인터페이스를 조정하기 위해 또 다른 커뮤니케이션과 공동 작업이 이루어져야 합니다.
표준화 부족 / 디버깅 문제 – 디버깅이 더욱 복잡해집니다.
참고 출처 :
https://www.atlassian.com/ko/microservices/microservices-architecture/microservices-vs-monolith