MSA란 무엇일까?


MSAMicroService Architecture의 줄임말이다 즉 아주 작은 마이크로 단위의 서비스로 구성된 프레임워크라고 볼 수 있다.

기존에는 하나의 프로젝트에 모든 기능들을 구현해두었다면 여러 개의 작은 프로젝트를 조합하여 하나이 큰 프로젝트와 같이 구성하는 것이다.

MSA의 등장 배경

  • MSA는 언제부터 사용된 개념일까?
  • Monolithic Architecture라는 개념이 있다 쉽게말해 MSA가 등장하기 전 모든 서비스들은 Monolithic Architecture로 구성되어 제공했고 위 설명과 같이 모든 서비스들이 하나의 프로젝트에 통합되어있는 형태를 뜻한다.
  • 당연히 하나의 프로젝트에 모든 서비스가 포함되어있을 경우에 문제점도 존재하며 다음과 같다
    1. 프로젝트가 커지면 커질수록, 영향도 파악 및 전체 시스템구조 파악에 어려움이 있다.
    2. 각 서비스들을 부분적으로 scale-out 하기 힘들어진다.
    3. 부분의 오류가 서비스 전체의 오류로 이어지는 경우가 발생할 수 있다.
    4. 프로젝트 빌드 및 테스트 시간이 길어지고 배포파일 자체의 절대적인 시간이 늘어난다(당연히 용량이 커지기때문이라 생각한다)

이 두가지 Microservices Architecture와 Monolithic Architecture를 그림으로 보자면 아래와 같다.

Figure 1: Architecture differences between traditional monolithic applications and microservices

[이미지출처] (https://www.suse.com/c/rancher_blog/microservices-vs-monolithic-architectures/)

위 단점들을 보완, 해결 하고자 MicroServices Architecture를 사용하기 시작했고 장단점을 정리하자면 다음과 같다.

장점

  1. 각 서비스가 모듈화되어있기 때문에 모듈끼리 RPC 또는 message-driven API 등을 이용하여 통신한다.
  2. 각 서비스에따라 개발하기 때문에 유지보수가 쉽고 팀단위로 적절한 수준에서 기술스택을 선택할 수 있다.
  3. java Spring 기반으로 MSA를 적용하더라도 node.js 모듈과 연동함에 무리가 없다.
  4. 각 서비스별로 독립적인 배포가 가능하며 각서비스별 단위테스트 역시나 가능해진다.

단점

  1. MSA구조는 모놀리식에 비해 상대적으로 복잡하다.
  2. 서비스가 모두 분산되어있고 서비스별 통신이 필요하기에 개발과정에서 내부시스템의 통신을 어떤 방식으로 사용할지 표준을 정의해야 한다.
  3. 서버부하에 따라 transaction을 유지할지 결정하고 구현해야 한다.
  4. 단위테스트에는 장점이 있으나 통합테스트과정이 매우 어렵다.
  5. 또한 운영환경에 배포하는 것 또한 쉽지 않다.( 만들어두었던 모든 서비스들을 묶어서 배포해야 하고 유지보수측면에서 각서비스업데이트마다 배포파일을 교체해주어야 하는 작업이 필요하다 또한 업데이트순간 모든 서비스들이 정상작동하는지를 한번 더 확인해야 하기 때문에)

장점과 단점 모두 실무에서는 도메인에 맞게 활용할 수도 활용하지 않을 수도 있다고 생각한다.

무엇보다 고객의 트랜잭션관리 부분이 가장 어려울 거라 생각이 든다.

오늘은 MSA구조가 무엇인지 알아보았다.

Reference

  1. https://mydream72.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%B3%B4%EB%8B%88-MSA%EB%9E%80
  2. https://hahahoho5915.tistory.com/71

'지식 창고' 카테고리의 다른 글

REST API란?  (0) 2022.09.12
HLS protocol 이란 무엇일까?  (2) 2022.09.11
프레임워크랑 라이브러리는 뭐가 다를까??  (0) 2022.09.03

+ Recent posts