웹서버 : Monolithic과 MSA 차이

728x90

Monolithic 아키텍쳐와 MSA의 차이를 비교하기 전에?

먼저 두가지를 비교해보기 전에 사전 내용을 알아보자.

두 방식은 소프트웨어 설계에서 가장 널리 알려진 두 가지 방법론이다.

 

모놀리식 아키텍처는 전통적인 방식으로 모든 기능을 하나의 단일 애플리케이션으로 통합하는 접근법이다.

이 방식은 간단하고 초기 개발 속도가 빠르지만 시간이 지남에 따라 유지보수가 어려워지고 확장성이 제한되는 단점이 있다.

반면, 마이크로서비스 아키텍처는 시스템을 작은 독립적인 서비스로 나누어 각 서비스가 별도로 개발되고 배포될 수 있도록 하는 현대적인 접근법이다. 

 

이 글에서는 모놀리식 아키텍처와 마이크로서비스 아키텍처의 개념과 특징 그리고 각 방법론의 장단점에 대해 살펴보고

아키텍처를 선택하는 것이 더 적합한지에 대해 알아보자.

 

Monolithic 아키텍쳐

모놀리식 아키텍처는 하나의 서버에서 모든 서비스를 통합하여 제공하는 전통적인 방식이다.

이 구조에서는 다양한 기능과 서비스들이 하나의 거대한 애플리케이션으로 묶여서 동작한다.

특징

  • 단일 서버에서 모든 서비스 제공: 하나의 서버가 모든 기능과 서비스를 담당한다. EX) 사용자 관리, 결제, 상품 관리 등의 서비스가 하나의 애플리케이션으로 결합됨

장점

  • 간단한 개발 및 배포: 단일 서버에서 모든 서비스를 담당하기 때문에 작은 프로젝트의 경우에는 개발속도가 빠르고 간단하다.
  • 일관된 테스트 및 디버깅: 애플리케이션이 하나로 통합되어 있으므로 테스트와 디버깅이 상대적으로 단순하다.

단점

  • SPOF (Single Point of Failure): 한 서비스에 문제가 생기면 문제가 전체 시스템에 영향을 미쳐 모든 서비스가 중단될 수 있습니다.
  • 확장성 문제: 전체 애플리케이션을 하나의 서버에서 돌리기 때문에 특정 서비스에만 부하가 걸려도 전체 애플리케이션의 성능이 저하될 수 있다.

 

MSA(MicroService Architecture)

MSA는 각 서비스가 개별적으로 독립된 서버에서 동작하는 아키텍처이다.(하나의 서버는 하나의 서비스만 관장)

이 구조에서는 서비스들이 독립적으로 배포, 확장, 관리될 수 있다.

 

특징

  • 다수의 서버에서 개별 서비스 제공: 하나의 서버는 하나의 서비스를 담당한다. EX) 사용자 관리 서비스는 하나의 서버에서, 결제 서비스는 다른 서버에서 각각 독립적으로 운영됨
  • 유연한 확장성: 특정 서비스에 부하가 증가하면 해당 서비스만 별도의 서버로 확장할 수 있다.

장점

  • 문제의 격리: 한 서비스에 문제가 생겨도 다른 서비스에 영향을 주지 않습니다. EX) 결제 서비스에 장애가 발생해도 사용자 관리 서비스는 정상적으로 동작
  • 확장성과 유연성: 필요에 따라 각 서비스별로 독립적인 확장과 배포가 가능합니다. EX) 결제 서비스의 트래픽이 많아지면 해당 서비스만 여러 서버로 확장할 수 있습니다.

단점

  • 복잡성 증가: 서비스가 많아지면서 수백 개의 서버와 API가 존재할 수 있고 이로 인해 어떤 서버의 어떤 API를 사용해야 하는지 관리가 복잡해질 수 있다. (API의 정리정돈 및 버전관리가 제대로 되지 않음 + 해결책으로 API Gateway 등장) 
  • 테스트의 어려움: 각 마이크로서비스가 독립적으로 동작하기 때문에 전체 시스템을 통합적인 테스트가 어렵다. EX) 서비스 간의 통신, 데이터 흐름 그리고 종속성을 모두 고려
  • 데이터 관리의 어려움: 각 마이크로서비스가 독립적인 데이터 저장소를 가질 수 있으므로 데이터 일관성 문제를 다루는 것이 어렵다. 트랜잭션을 처리할 때 여러 서비스에 걸친 일관성을 보장해야 하는 경우 복잡성이 크게 증가한다.

내 프로젝트에 적합한 아키텍쳐는 무엇일까?

각 아키텍쳐의 특징과 장단점을 토대로 아키텍쳐를 선택한다면 아래와 같은 결론이 도출된다.

 

Monolithic

  • 개발 및 배포의 단순함이 이점으로 작용할 수 있는 프로젝트
  • 빠른 시장 진입을 위해 빠르고 간편하게 개발을 진행하는 프로젝트
  • 기술의 복잡도가 낮은 중소형 프로젝트

MSA

  • 예산에 크게 제한되지 않는 프로젝트
  • 기술의 복잡도가 높은 대규모 프로젝트
  • 장애를 줄이고 시스템의 탄력성이 필요한 프로젝트

Monolithic과 MSA 방식에 정답이 없어 자신 또는 회사에서 진행하는 프로젝트에 따라 골라서 사용하는 것이 좋다.

 

 

참고문헌

 

[INFCON Tech Series #5] 모놀리식 vs 마이크로서비스 아키텍처, 우리 팀에 맞는 선택은? - 인프런 | 스토

비즈니스에 적합한 아키텍처 찾기 #MSA #Monolithic #웹개발 #INFCON #인프콘 [사진] 개발자들이 함께 모여 서로의 경험과 인사이트를 나누는 축제, 인프콘! 8월 15일, 드디어 많은 분들이 기다려 주

www.inflearn.com

 

모놀리식과 마이크로서비스 비교 - 소프트웨어 개발 아키텍처의 차이 - AWS

모놀리식 아키텍처와 마이크로서비스 아키텍처의 차이점은 무엇인가요? 모놀리식 아키텍처는 하나의 코드 베이스를 사용하여 여러 비즈니스 기능을 수행하는 전통적인 소프트웨어 개발 모델

aws.amazon.com

 

728x90