모놀로식 아키텍쳐 vs 마이크로 서비스 아키텍쳐
모놀리식 아키텍쳐와 마이크로 서비스 아키텍쳐에 대해 간략하게 정리해 보겠습니다.
우선 모닐리식 아키텍쳐와 마이크로 서비스 아키텍쳐는 서로 반대되는 개념입니다.
모놀리식 아키텍처 (Monolithic Architecture)
- 전통의 아키텍쳐를 의미한다.
- 하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍쳐를 가질 때 모놀리식 아키텍쳐라고 한다.
장점
1. 어떤 서비스던지 개발되어 있는 환경이 같아서 복잡하지 않다.
2. 쉽게 고가용성 서버 환경을 만들 수 있다.
3. End-to-End 테스트가 용이하다. (클라이언트의 입장에서 테스트 해보기)
단점
1. 프로젝트의 규모가 커진다면 어플리케이션의 구동시간이 늘어나고 빌드, 배포시간이 늘어난다.
2. 조그마한 수정사항이 있더라도 수정 후 전체를 다시 배포해야하는 부담이 있다.
3. 많은 양의 코드가 몰려있어 개발자가 모두 이해할 수 없고 유지 보수가 힘들다.
4. 기존부터 있던 개발자가 아니라면 그 코드를 이해하기 어렵다.
5. 일부의 문제가 전체에 영향을 미칠 수 있다.
6. 기능별로 알맞은 기술, 언어, 프레임워크를 선택하기가 까다롭다.
마이크로 서비스 (MicroService)
- 애플리케이션을 상호 독립적인 최소 구성 요소로 분할하는 아키텍쳐이다.
- 모든 요소가 독립적이며 연동되어 동일한 태스크를 완수한다.
장점
1. 기능별로 마이크로서비스를 개발하고, 작업 할당을 서비스 단위로 하면 개발자가 해당 부분을 온전히 이해할 수 있다.
2. 새로 추가되거나 수정사항이 필요하면 그 마이크로 서비스만 빠르게 빌드 후 배포할 수 있다.
3. 해당 기능에 맞는 기술, 언어 등을 선택하여 사용할 수 있다.
4. 일부분의 오류가 있다면 해당 기능에만 오류가 발생하고 그 부분만 빠르게 고쳐 정상화가 가능하다.
단점
1. 여러 작은 서비스가 분산되다 보니 관리하기가 힘들다.
2. 서로를 호출하며 전체 서비스가 이루어지기 때문에 무조건 다른 서비스를 호출하는 코드가 추가되고 그 부분이 모놀리식 아키텍쳐와 비교했을 때 조금 까다롭다.
3. 마이크로 서비스들끼리 계속 통신을 하다 보니 모놀리식 아키텍쳐에 비해 통신관련 오류가 잦을 수 있다.
4 기능 하나하나의 테스트는 용이할 수 있으나 전체를 테스트하는데 어려움이 있다.