개요
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 |