개인 프로젝트/기본 개념 익히기

MSA란 무엇인가?

Jinomad 2020. 6. 18. 14:47

개요

 

MSA는 마이크로 서비스 아키텍처(Micro Service Architecture)의 줄임말입니다. 

 

MSA의 등장 배경을 설명하자면 Monolithic Architecture가 빠질수 없는데요. 

 

Monolithic Architecture는 MSA와 반대되는 개념이라고 할 수 있는데, 간단히 말해서 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태입니다. 

 

소규모 프로젝트에서는 Monolithic Architecture가 훨씬 합리적인데, 그 이유는 간단한 Architecture이고 유지보수가 쉽기 때문이죠.

 

하지만 규모가 커질수록 Monolithic Architecture의 한계가 드러납니다. 

 

그 한계는 다음과 같습니다.

 

 

  • 서비스/프로젝트가 커질수록, 영향도 파악 및 전체 시스템 구조를 파악하기 어렵습니다.
  • 빌드 시간 및 테스트 시간, 배포시간이 기하급수적으로 늘어납니다. 
  • 서비스를 부분적으로 scale-out하기 어렵습니다. (scale-out이란 접속된 서버의 개수를 늘려 처리능력을 향상시키는 것을 의미)
  • 부분의 서비스 장애가 전체의 서비스 장애로 이어지는 경우가 많습니다. 

 

이러한 단점을 보안하기 위해 만든 것이 MSA라고 볼 수 있겠습니다. 

 

 

마이크로서비스(Microservices, MS)의 특징

 

  • 전체 어플리케이션을 특정 목적을 가진 어플리케이션 단위로  나눈다. 나누어진 어플리케이션은 다른 어플리케이션과 약한 결합도와 강한 응집도를 목표로 한다. 
  • 나누어진 어플리케이션을 독립적으로 서비스하더라도 문제가 없다.
  • 잘 정의된 API를 이용하여 어플리케이션 간에 통신한다. 
  • 나누어진 어플리케이션을 독립적으로 배포할 수 있다.

간단하게 설명하자면 같은 기능을 하지만 MSA로 구성된 어플리케이션 'A'와 Monolithic으로 구성된 어플리케이션 'B'가 있다고 가정해보자. 'A'는 유기체처럼 동작하는 작은 어플리케이션들로 이루어져 있고, 'B'는 그 자체로 전체의 기능을 수행하는 하나의 어플리케이션으로 이루어져 있는 것이다. 

 

 

문제점

  • 어플리케이션의 숫자가 늘어날수록 복잡해지며 테스트가 어려워진다.
  • 트렌잭션의 관리가 어렵다.
  • 배포에 대한 자동화가 필수적이다.
  • 각각 어플리케이션의 데이터 무결성을 책임지지 못하기 때문에 소규모 장애 확률이 증가.

 

 

'개인 프로젝트 > 기본 개념 익히기' 카테고리의 다른 글

Git과 Github  (0) 2020.12.05
도메인 시스템(Domain System)이란?  (0) 2020.11.28
AWS란 무엇인가?  (0) 2020.06.20