본문 바로가기
IT 정보

MSA (Micro Service Architecture)의 장점,단점

by 완기 2020. 12. 1.
728x90
반응형

MSA는 작고 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 소프트웨어 개발 기법이다.

 

쇼핑몰로 예를 들면, 

1. 회원에 대한 서비스(가입, 정보 수정 등등)

2. 판매 물건에 대한 서비스 (상품 등록, 리뷰, 재고 등등)

3. 배송에 관련된 서비스 (배송 여부 등)

 

과 같이 서비스를 나누었다고 할 때, 각각의 애플리케이션으로 만든다.

 

각각 다른 DB 스키마를 가지고 있고, 각각 다른 서버 구성을 가지고 있다.

 

이렇게 소프트웨어를 개발하면 각 모듈이 독립적이고 추후에 다른 애플리케이션에서 재사용할 수 있는 재사용성이 증가해 모듈 간 결합도를 낮춰 좋은 소프트웨어를 만들 수 있다.

 

여차하면 다른 모듈로 갈아 끼우면 새로운 소프트웨어가 되는 것이다.

 

그렇다면 여기서 의문 사항이 들 수 있다.

 

모듈 간 통신은 어떻게 하지? 예를 들면, 배송은 회원의 정보와 물건의 정보가 있어야 하고 배송 관련된 정보도 있어야 한다.

 

모듈마다 다른 스키마를 가지고 있어서, 난감할 수 있지만 각 모듈 간 API를 제공하여 통신하도록 정의한다.(퍼사드 패턴)

 

😎퍼사드 패턴 : 모듈간 통신을 위해 각각의 API를 정의하여 개발하는 방법  자세한 설명 보기

 

source : https://medium.com/@shaul1991/%EC%B4%88%EB%B3%B4%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%9D%BC%EC%A7%80-%EB%8C%80%EC%84%B8-msa-%EB%84%88-%EB%AD%90%EB%8B%88-efba5cfafdeb

 

 

MSA와 반대되는 개념이 소규모 프로젝트에 자주 사용되는 모놀리식 개발 방법이 있는데, 

 

모놀리식은 하나의 애플리케이션 안에 DAO와 비즈니스 로직 레이어, UI레이어 등등 포함되어있는 것을 말한다.

 

MSA와 정반대 되는 개발 방법이다. 각각의 개발 방법에는 장단점이 있다.

 


MSA

장점 :

    1. 각 서비스가 모듈화 모듈끼리 RPC, Message-driven 이용하여 통신 -> 각 서비스의 개발 속도 증가

    2. 유지 보수가 쉽다.

    3. 독립적인 서비스로 배포가 빠르고 모놀리식보다 가벼움

    4. 각 서비스에 따라 개별적으로 서버를 나눌 수 있어(scale-out) 메모리 및 cpu관리에 효율적임

 

단점

    1. 복잡하다.

    2. 서비스가 분산되어있어, 개발자는 내부 시스템 통신을 어떻게 할지 정해야 한다.

    3. 통신 장애 및 서버의 부하 등의 문제가 있을 경우, 트랜잭션 유지에 대한 결정을 해야 함.

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

    5. 각자 배포한 서비스에 대해 다른 서비스와 연계가 잘 되는지 확인해야 함

 

 


Monolithic(모놀리식)

장점 : 

    1.MSA에 비해 구조가 간단하다.

    2.쉽게 고가용성 서버 환경을 만들 수 있다(같은 어플리케이션을 하나 더 만듬).

    3.통합 테스트에 용이하다 (MSA는 관련 서비스를 모두 동작시켜야함)

    4.서비스가 통합되어있어 내부 통신 시스템에 대한 고민이 MSA에 비해 적다

    

단점 : 

    1.프로젝트의 규모가 커질수록 어플리케이션의 구동 시간, 빌드,배포 시간이 많이 소요됨

    2.조그마한 수정 사항이 있어도 전체를 다시 빌드하고 배포해야함

    3.많은 양의 코드가 한 프로젝트에 몰려 있어, 모두를 이해할 수 없고,유지 보수가 까다롭다.

    4.일부분의 오류가 전체의 영향을 미칠 수 있다. (Loose Coupling을 하는 이유)

    5.기능별로 알맞는 기술, 언어, 프레임워크를 선택하기 까다롭다.

728x90
728x90

댓글