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 방식에 정답이 없어 자신 또는 회사에서 진행하는 프로젝트에 따라 골라서 사용하는 것이 좋다.
참고문헌
728x90