본문 바로가기
DevOps

MSA

by 어렵다어려웡 2022. 4. 8.

Microservice Architecture

 

사실 Microservice Architecture에 대한 정확한 정의는 없다고 한다..

거의 근접하게 말하면 독립적으로 배포가 가능한 각각의 기능을 수행하는 서비스로 구성된

애플리케이션을 의미한다.

 

이와 반대로 이전까지 개발되어 왔던 방식인 모놀리식 아키텍처가 있다.

 

 

Monolithic Architecture

: 소프트웨어의 모든 구성요소가 하나의 프로젝트에 통합되어 있다.

 

추상적으로 말하면 Front, Back-End, DB 계층이 모두 하나의 애플리케이션에서 패키징되어

결과물로 반환되고 배포하는 형태의 구조를 말한다.

 

단점 

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

2. 부분적인 Scale-Out 이 어렵다.

3. 서비스의 변경이 어렵고, 수정시 장애의 영향도 파악하기 힘들다.

4. 배포시간이 오래걸린다.

5. 한 프레임워크와 언어에 종속적이다.

 

Microservice Architecture

각 서비스의 EndPoint 를 API 형태로 외부에 노출하고 세부사항은 숨긴다.

따라서, 해당 API의 내부 구현로직, DB 등과 같이 기술적인 사항이 추상화 된다.

 

장점

1. 각 서비가 모듈화되어 있고, 개별적으로 서비스 개발을 빠르게 할 수 있다.

2. 팀 단위로 기술스택을 다르게 가져갈 수 있어, 언어&프레임워크에 종속적이지 않다.

3. 서비스 별 독립적인 배포가 가능.

 

단점

1. 모놀리식에 비해 복잡하다.

2. 서비스가 분산되어 있어 각 서비스의 통신의 구성, 여러 상황에 대한 트랜잭션 처리에 대해서 결정이 필요.

3. 통합 테스트가 어렵다.