DevBoi

[기술 지식] MSA 구조가 뭐임? 본문

[Computer Science]

[기술 지식] MSA 구조가 뭐임?

HiSmith 2021. 9. 6. 21:46
반응형

MSA 란 무엇일까?

 

MicroService Architecture 의 줄임말이다.

쉽게 말하면, 정확한 정의는 없다, 마이크로서비스란 작고 독립적으로 배포가능한 각각의 기능을 수행하는 서비스로, 구성된 프레임 워크라고 할수 있다.

 

독립적으로 배포가 가능하고, 각각의 기능을 수행하는 서비스로 이루어진 프레임워크이다.

 

기존의 프레임워크를 살펴보자, 해당 프레임워크는, 웹의 경우 War 파일로 빌드되어 was에 배포된다.

주로 소규모 프로젝트에서 사용이 된다.

 

기존의 프로젝트에서는 이런 프로젝트들은 제약이 많다.

 

1. 부분 장애가 전체 서비스 장애로 확대될수 있다.

예를 들어서, 어떤 개발자가 메인 페이지의 특정 부분을 개발했다고 가정하자.

실수로 이 개발자는 NPE을 발생시켰고, 이는 메인페이지 전체 페이지가 뜨지 않는 오류가 발생되었다.

또는 트래픽을 고려하지 않은 이 개발자가, 서버를 다운시켰다고 가정하자.

JVM은 같이 사용되고, 메모리 초과등을 고려하였을때, 이렇게 사소한 실수하나가 전체 서비스의 영향을 미치게된다

 

MSA는 이러한 부분의 문제점을 해결해준다.

 

2. 부분적인 Scale out이 어렵다.

특정 서비스를 하는 부분에 대한 Scaleout을 한다고 가정해보자.

해당 서비스를 하는 부분에 대한 스케일 아웃은 어렵다. 하려면 was전체를 하여, 전체적으로

즉 필요하지 않는 부분도 같이 스케일 아웃을 해야한다. 이또한 자원낭비이다.

 

3. 여러가지의 컴포넌트들의 결합도가 높고, 수정 시 장애영향도 파악이 어렵다.

컴포넌트가 하나의 서비스에 강하게 결합이 되어, 수정에 대한 영향도 파악이 어렵다.

 

4. 한 Framwork의 언어에 종속적이다.

Spring을 사용하면 어떤 서비스이던, 자바를 이용해야한다. 특정 서비스에 대한 강력한 언어가 있어도,

언어를 일치시켜야한다.

 

MSA의 특징,

MSA는 API를 통해서만 상호작용한다.

즉, 마이크로 서비스는 서비스의 end-point를 api형태로 외부에 노출하고, 실질적은 구현은

모두 추상화 한다.

 

장점 : 빠르게 개발하고, 각각 서비스의 강세인 언어를 사용하여 적용하고, 이를 연동한다.

서비스 부하에 따라 각각 다르게 scale-out 이 가능하다.

 

MSA의 단점 및 약점

-(상대적 복잡성)
모놀리식에 비해 상대적으로 매우 복잡하다. 서비스가 분산되어있기 때문에, 개발자는

내부 시스템의 통신을 어떻게 가져가야할지 정해야한다.

 

-(트랜잭션 관리)
모놀리식에서는 단일 트랜잭션을 유지하면, 되지만, MSA에서는 비즈니스에 대한 DB를 가지고 있는 서비스

도 다르기 때문에 이에 따른 트랜잭션을 유지하는게 어렵다.

이는 서비스 통신이 포함되기도 해서이다.

 

-(통합테스트가 어렵다)

개발 ~ 실제 운영환경까지 동일하게 가져가기가 어렵다.

반응형