모놀리식 아키텍쳐(Monolithic Architecture)
- 마이크로서비스 아키텍쳐 등장 이전에 시스템을 구성하는 기존의 아키텍쳐를 의미함
- 하나의 프로젝트를 구성하기 위해 서로 다른 역할을 하는 모든 모듈들이 함께 모여있는 구조
모놀리식 아키텍쳐의 장점
- 구조가 단순하다.
- 배포가 간편하다.
- 개발 환경과 방법이 통일되어 있다.
모놀리식 아키텍쳐의 단점
- 프로젝트 규모가 커질수록 복잡도가 매우 증가한다.
- 코드 전체를 이해하기가 어렵다.
- 빌드 시간이 증가한다.
- 새로운 기술 적용이 어렵다.
여러 모듈들이 함께 하나의 프로젝트에 존재하기 때문에 하나의 모듈에 문제가 발생하면 다른 모듈들에게 영향을 미친다. 로그인 기능에 문제가 발생하면 로그인과 관련 없는 기능을 하는 모듈들이 영향을 받아 제 기능을 하지 못하게 될 수 있다.
마이크로서비스 아키텍쳐(MSA)
- 모놀리식 아키텍쳐의 경우 서비스가 커질 경우 하나의 프로젝트로 모든 모듈들을 함께 묶는 것이 점점 더 어려워지고 복잡해진다.
- 모놀리식 아키텍쳐의 단점을 보완하기 위해 등장한 여러 아키텍쳐 중 하나
하나의 프로젝트를 여러 작은 서비스들로 분리하여 개발, 운영, 배포하는 방식의 아키텍쳐
를 마이크로서비스 아키텍쳐라고 한다.
마이크로서비스 아키텍쳐의 서비스의 특징
마이크로서비스 아키텍쳐를 구성하는 서비스들의 특징은 다음과 같다.
- 독립적으로 배포 가능함
- 느슨하게 결합됨
- 유지보수와 테스트가 쉬움
- 비즈니스 역량 중심으로 구성됨
마이크로서비스 아키텍쳐의 장점
- 서비스들이 독립적이라는 특징 덕에
클라우드
와 컨테이너
와 잘 어울린다.
- 서비스들을 독립적으로 개발 가능하다.
- 서비스들을 독립적으로 확장 가능하다.
- 애플리케이션 전체를 재배포하지 않고도 업데이트할 수 있다.
- 서비스 하나가 다운되더라도 전체 서비스에 영향을 주지 않는다.
- 서비스 별로 다른 프로그래밍 언어, 프레임워크를 사용할 수도 있다.
마이크로서비스 아키텍쳐의 단점
- 서비스들이 많아지면 구조가 복잡해진다.
- 서비스들이 독립되어 있으므로 통합 유지관리가 어렵다.
- 서비스들끼리의 테스트가 어렵다.
- 전체적인 기술 복잡도가 증가할 수 있다.
마이크로서비스 아키텍쳐를 사용하는 이유?
- 클라우드 환경에서 Monolithic 아키텍쳐 보다 마이크로서비스 아키텍쳐를 더 효율적으로 구축할 수 있다.(비용적인 측면)
- 마이크로서비스 아키텍쳐의 경우 독립적인 서비스 단위로 전체 구조를 조직하기 때문에, 사용량에 따라 서비스들을 축소 또는 확대하여 전체 구조의 효율성을 높여 비용 절감이 가능하다.
참고