본문 바로가기

About/something..

모놀리식 아키텍처 vs 마이크로서비스 아키텍처 장단점 비교

모놀리식 아키텍처와 마이크로 서비스

모놀리식 아키텍처(Monolithic Architecture, MA)

모놀리식 아키텍처란

모놀리식 아키텍처란, 하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍처를 가질 때 이를 모놀리식(Monolithic) 아키텍처라고 합니다.

모놀리식 아키텍처의 장점

- End-to-End 테스트가 용이하다.
애플리케이션이 하나의 아키텍처로 이루어져 있어 테스트가 용이합니다.
- 빠르게 간단한 서비스를 만들 수 있음

모놀리식 아키텍처의 단점

- 조그마한 수정사항이 있어도 전체를 다시 빌드하고 배포해야 함
- 유지보수가 힘듦
- 프로젝트 규모가 커질수록 구동 시간이 늘어남
- 일부분의 오류가 전체에 영향을 미침
- 각 기능별로 알맞은 언어나 프레임워크를 선택하기가 까다롭습니다.

마이크로 서비스 아키텍처(Microservice Architecture, MSA)

마이크로서비스 아키텍처란

'마이크로 서비스 아키텍처(MSA)'는 하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 말합니다.

마이크로서비스 아키텍처의 장점

- 유지보수가 용이함
- 거대한 서비스도 빠르게 수정 가능
- 각 기능에 따라 다른 언어를 선택할 수 있음

마이크로서비스 아키텍처의 단점

- 모니터링 및 테스트가 힘듦
- End-to-End 서비스 구동이 불편
- 서비스 간 호출 시 API를 사용하기 때문에 통신 비용이나 Latency가 그만큼 증가함


모놀리식 아키텍처와 마이크로 서비스 아키텍처에 대하여 알아보았는데, 최근 DevOps 문화 및 기술이 발전해 나감에 따라 마이크로 서비스 아키텍처의 중요도가 부상하고 있는 것은 사실입니다. 하지만 모든 서비스를 MSA로 구성해야하는 것은 아닙니다. 필요에 따라 모놀리식 아키텍처가 더 좋은 구성 방법으로 자리할 수도 있습니다.

모놀리식 vs 마이크로 서비스 무엇을 선택해야 할까? (개인적인 생각)

우선 서비스의 규모가 매우 작거나 개발 초기단계의 경우 모놀리식 아키텍처로 먼저 개발을 하는 것이 좋다고 생각합니다. 개발 초기에는 서비스를 완벽하게 운영하기 보다는 빠르게 제품의 기능을 개발하는 것이 우선이기 때문에 모놀리식으로 개발을 한 후 서비스가 커지고 사용자가 많아지면 그 때 마이크로 서비스 아키텍처로 분리하는 방법이 좋을 것 같습니다. 그리고 스타트업이나 규모가 작은 프로젝트 팀의 경우에도 마이크로 서비스 아키텍처로 개발한다면 배보다 배꼽이 커진 경우가 될 수 있습니다. 

반면 서비스의 규모가 크거나 이미 출시된 제품의 경우 빠르게 소비자의 니즈를 충족시켜야 하기 때문에 유지보수가 편하고 빠르게 기능을 수정할 수 있는 마이크로 서비스가 더 좋은 방법일 것입니다. 처음 마이크로 서비스를 설계하고 분리하는 기간에는 시간이 소요될 수 있지만, 마이크로 서비스 아키텍처를 적용하고 나면 애플리케이션의 배포나 유지보수에 드는 시간이 줄어들어 시장의 변화에 빠르게 대응할 수 있을 것입니다.

모놀리식 아키텍처와 마이크로 서비스 아키텍처에 대하여 알아보았습니다.

참고사항