MSA 개념 이해하기

woogi·2024년 1월 3일
0

MSA란?

				이미지 출처: aws.amazon.com/ko/microservices

MicroService Architecture의 줄임말.
하나의 어플리케이션을 여러 개의 독립적인 작은 서비스로 나누어 구성하는 아키텍처 패턴으로 각 서비스가 독립적인 방식으로 동작하기 때문에 유지보수, 확장 및 배포를 용이하게 만든다.
(한 어플리케이션의 장애 발생시 전체 시스템이 미치는 영향도 감소 하기 때문에 유지 보수의 이점이 있고, 특정 서비스에 대한 확장성(scale-out)도 유리 하며 개별 서비스마다 배포하기 때문에 전체 서비스 중단 또한 없다.)

그럼 다른 방식은 뭐고 어떤 차이점이 있나?

Monolithic Architecture

전통적인 방식이였던 모놀리식 아키텍처.
하나의 어플리케이션이 하나의 서비스로만 이루어진 구조이다.
모든 프로세스가 결합되고 단일 서비스로 실행되는 구조이기 때문에 어플리케이션의 한 서비스에 대한 트래픽이 증가 하여 리소스에 대한 증설이 필요하게되면 해당 어플리케이션 전체를 확장 해야한다.

MSA 아키텍처의 장점은?

장점
서비스를 여러개로 쪼개놨기 때문에 변경된 서비스만 빌드/배포가 가능해서 빠르다. (배포 관점)
각각의 서비스 마다 특성에 맞게 언어, 프레임워크를 선택이 독립적이다. (확장성)
특정 서비스에 오류가 생겨도 전체 서비스에 영향이 미치지 않는다. (유지 보수 관점)

하지만, MSA 아키텍처도 아래와 같은 단점이 존재한다.

초기 설계가 어렵다(내부 시스템끼리의 통신을 어떻게 해야 할지, 서비스를 어디까지 나누어야 할지 등등..)
각각의 서비스가 분산 되어 있기 때문에 통합 모니터링이 쉽지 않다.
각 서비스간의 상호 작용에 대한 통합 테스트가 힘들고 문제 발생시 분산 시스템에 대한 디버깅도 어렵다.

정리해 보자면...

MSA란 하나의 어플리케이션을 여러개의 독립적인 서비스로 나누어 구성하는 아키텍처 패턴으로
유지보수, 확장성, 배포 관점에서의 이점을 가지고 있다.
다만 모니터링, 서비스간 테스트 및 디버깅 등 여러가지 측면에서 어려움이 있기 때문에 적절한 설계가 필요해 보인다.

0개의 댓글

관련 채용 정보