MSA(MicroService Architecture)

종원유·2022년 7월 8일
0

MSA

목록 보기
1/5
post-thumbnail

이번 포스트는 MSA(MicroService Architecture)에 대해 정리하는 포스트이다.

최근 클라우드, 컨테이너 시장이 급격히 성장하며, 마이크로서비스가 각광받고 있다.

MSA(MicroService Architecture)?

Architecture의 등장배경

80년대 초, 큰 규모의 시스템을 설계할 때 직면할 수 있는 공통 문제를 해결하기 위해서 아키텍처나 패턴의 필요성이 대두되었다.
가장 처음 등장한 용어는 소프트웨어 아키텍처(Software Architecture)이고, 그 후로 모놀리식 아키텍처, SOA, MSA등 아키텍처 용어들이 탄생 했습니다. 그 중 MSA와 가장 대조 되는 것이 모놀리식 아키텍처(Monolithic Architecture) 입니다.

Monolithic Architecture

MSA가 각광받기 시작하면서, 기존의 아키텍처를 지칭하는 의미로 생겨난 단어이다.
모든 모듈은 하나의 서비스 내부에 종속되어있고, 서비스 자체에 집중할 수 있는 구조로 되어있다.
웹 개발을 예로들면, 웹 프로그램을 개발하기 위해서 모듈별로 개발을 하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물로 패키징 하여 배포되는 형태를 말한다.
이런 어플리케이션을 모놀리식 어플리케이션이라 하며, 웹의 경우 WAR 파일로 빌드되어, WAS에 배포하는 형태를 말한다.
이는 개발, 빌드 배포에 용이하지만, 프로젝트의 규모가 커질수록 수정 및 업그레이드가 어려워진다.

그림 참조 : https://gruuuuu.github.io/cloud/architecture-microservice/#1-overview

장점

  • 단순한 구조(Simple)
    - 개발, 빌드, 배포, 테스트가 용이하며 빌드된 WAR 파일을 WAS 올리기만 하면 된다.
  • 개발환경과 방법의 통일성
  • 배포가 간편하다.
  • End To End 테스트가 쉬워진다.

단점

  • 프로젝트의 규모가 커질수록 복잡도가 심각하게 증가한다.
  • 코드 전체를 이해하기 힘들다.
  • 빌드시간의 증가(CI/CD 불가능)
    - 모든 모듈이 하나의 프로세스에서 동작하기 때문에, 하나의 모듈이 수정되어도 서버를 내렸다 올려야 하는 불편함이 있다.
  • 새로운 기술을 적용하려면 프로젝트를 다 뜯어고쳐야할 수 있다.

이러한 기존 아키텍처의 단점을 보완하고자 나온 여러 아키텍처가 MSA(MicroService Architecture)이다.

MicroService Architecture

작은 서비스 여러 개가 모여서 하나의 시스템을 제공하는 아키텍처

MSA의 각 서비스는 작고 독립적이며 느슨하게 결합되어 있다.
덕분에 서비스들을 독립적으로 배포할 수 있고, 전체 프로그램을 빌드하여 재배치하지 않고, 기존 서비스들을 일부만 업데이트 할 수 있다.
이렇게 서비스들이 독립적이라는 특징 덕에 클라우드와 컨테이너와 잘 어울리는 아키텍처이다.

그림 참조 : https://gruuuuu.github.io/cloud/architecture-microservice/#1-overview

장점

  • 전체 프로그램을 다시 배포하지 않고도 업데이트가 가능하다.
  • 독립적으로 개발이 가능하다.
  • 서비스 하나가 다운되더라도 전체 서비스에 영향을 끼치지 않는다.
  • 서비스를 독립적으로 확장가능하고, 리소스의 유연한 운용이 가능하다.

단점

  • 서비스간 통신방법이 필요(LB)하고 복잡하다.
  • 서비스끼리의 테스트가 어렵다.
  • 복잡하고 독립된 구조로 인해 통합적인 유지관리가 어려워질 수 있다.

그렇다면 왜 MSA가 각광받고 있을까?

클라우드 환경과 잘 맞기 때문이다.
Monolithic 구조는 각각의 모듈들이 합쳐져 큰 덩어리로 시스템이 구축되어 있기 때문에,
사용량이 적은 모듈을 삭제한다고 하더라도 전체 시스템의 스펙은 변하지 않는다.
따라서 사용량 단위로 과금을 해야하는 cloud 환경에서 비효율적이다.

반면, MicroService 구조는 서비스 단위로 기능을 분리해서 구축할 수 있기 때문에, 사용하지 않는 기능 또는 사용량이 적은 기능을 축소해서 효율화 시킬 수 있다.
클라우드에서 비용적인 측면에서는 MSA가 단연 돋보인다 할 수 있다.
하지만 그에 따른 세부 서비스들이 늘어나면서 관리 포인트가 늘어난다는 단점도 있다.
그럼에도 서비스들의 재사용성, 클라우드 환경에 친화적이라는 장점때문에 핫한 아키텍처이다.

profile
개발자 호소인

0개의 댓글