[CS] Monolithic Architecture VS MicroService Architecture

전우석·2022년 8월 31일
0
post-thumbnail

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 제대로 이해하기

0개의 댓글