모노리스 vs 마이크로서비스
출처 : https://www.redhat.com/ko/topics/microservices/what-are-microservices
1. 강의 목표
이 강의에서는 모노리스 아키텍처와 마이크로서비스 아키텍처의 차이점과 장단점을 비교하여, 각각의 아키텍처가 어떤 상황에 적합한지 이해할 수 있도록 합니다.
2. 모노리스 아키텍처
정의
- 모노리스(Monolith): 애플리케이션의 모든 기능을 하나의 코드베이스와 배포 단위로 구성하는 아키텍처.
- 특징: 모든 기능이 단일 애플리케이션에 통합되어 있으며, 하나의 프로세스에서 실행됩니다.
장점
- 간단한 개발 및 배포
- 전체 애플리케이션이 하나의 코드베이스에 있기 때문에 개발과 배포가 상대적으로 간단합니다.
- 쉬운 디버깅
- 전체 시스템이 단일 애플리케이션으로 구성되어 있어, 디버깅 시 전체 애플리케이션의 상태를 쉽게 확인할 수 있습니다.
- 통합된 데이터 관리
- 모든 데이터가 하나의 데이터베이스에서 관리되므로 데이터 일관성이 유지되기 쉽습니다.
단점
- 확장성 한계
- 애플리케이션이 커지면 코드베이스가 복잡해지고, 특정 기능만을 독립적으로 확장하기 어려워집니다.
- 배포 리스크
- 애플리케이션의 전체를 다시 배포해야 하며, 작은 변경도 전체 시스템에 영향을 줄 수 있습니다.
- 팀 간 협업 어려움
- 큰 코드베이스로 인해 여러 팀이 동시에 작업하기 어려울 수 있습니다.
3. 마이크로서비스 아키텍처
정의
- 마이크로서비스(Microservices): 애플리케이션을 독립적인 서비스들로 나누어 개발하고 배포하는 아키텍처.
- 특징: 각 서비스는 독립적으로 배포 가능하며, 서로 통신하여 전체 시스템을 구성합니다.