Monolithic Architecture VS MicroService Architecture
Monolithic Architecture 란?
- 기존에 우리가 사용하던 전통적인 개발 방법으로 해석하면 덩어리식 구조이다.
- 어플리케이션, 프로그램 제작 시 모든 서비스 구현 후 하나의 어플리케이션으로 패키징 하여 배포하는 방식이다.
- 예를 들어 웹사이트를 제작할 경우 기능 구현, 서비스 구현 등 웹사이트의 모든 구성요소를 모두 구축 후 하나의 war 파일로 배포하게 된다. 이런 경우는 Monolithc Architecture라 한다.
Monolithc Architecture의 장점
- 하나의 파일로 패키징 되어 배포 시 하나의 파일만 배포하면 된다.
- 운영 관리가 용이하다.
- 간단한 프로젝트 진행 시 사용하면 편리하다.
Monolithc Architecture의 단점
- 하나의 서비스에 장애 발생시 다른 서비스에도 장애가 발생할 수 있다.
- 하나의 파일로 패키징 되므로 서비스의 기능 확장 시 선택적인 확장이 불가능 하다.
- 선택적인 빌드 및 테스트가 불가능하여 수정 시 오랜 시간이 걸린다.
MSA(MicroService Architecture) 란?
- Monolithic Architecture과 비교 되는 개념의 Architecture로 어플리케이션, 프로그램 제작 시 단일 프로그램을 컨포넌트 별로 구분하여 구축하는 방법이다.
- 각 컨포넌트는 API를 사용하여 다른 서비스와 통신한다.
- 단일 프로그램으로 제작 하므로 단일 배포가 가능하다.
MSA(MicroService Architecture) 장점
- 단일 프로그램으로 작성되므로 서비스 수정이 편리하고, 확장시 용이하다.(클라우드 상용에 적합한 Architecture)
- 장애 발생시 전체적으로 확산될 가능성이 낮다.
- 배포 시 서비스의 중단이 없다. (단일 프로그램으로 작성되어 가능한 부분)
MSA(MicroService Architecture) 단점
- Monolithic Architecture에 비해 복잡하다.
- 프로그램 규모가 클 경우 복잡도가 높아져 초기 작업에 많은 시간이 소요된다.
- 서비스 간 API 통신으 사용하기 때문에, 시간이 오래걸릴 수 있다.
정리
두 가지 Architecture에 대해 알아보았다.
Monolithic의 경우 단순한 형태의 옛날 Architecture라는 느낌이 강하게 든다. 간단한 프로젝트 제작에 사용하면 좋을것 같다.
MSA의 경우 서비스 별로 단일 프로그램 제작 후 API 통신을 통해 어플리케이션 혹은 프로그램을 구현 하는 방식으로 프로젝트의 규모가 클경우 통신 부터 시작해 여러가지 고려할 사항이 많은 것으로 보인다. 하지만 구현만 잘한다면 유지보수, 장애 발생 문제 등 기존의 Monolithic Architecture의 문제점을 보완할 수 있는 새로운 Architecture로 보인다.
참고 문서
마이크로서비스 아키텍처(MSA) 개념 소개
MSA 제대로 이해하기