[Team Project] MSA 란?

YunKwang-You·2021년 10월 20일
8

Team Project

목록 보기
1/2

Cloud Native 환경에 대해 조사하다가, MSA라는 구조를 발견했고, 여러 글을 찾아보게 되었다.

MSA(Micro Service Architecture)


작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다. 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둔다.

그렇다면 MSA의 등장 배경은 어떻게 될까? MSA 이전 Monolithic Architecture에 대해 알아보자.

Monolithic Architecture

Monolithic Architecture란, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태이다.

아직까지는 많은 소프트웨어가 Monolithic 형태로 구현되어 있고, 소규모 프로젝트에는 Monolithic Architecture가 훨씬 합리적이다. 간단한 Architecture이고, 유지보수가 용이하기 때문

하지만 일정 규모 이상의 서비스, 혹은 수백명의 개발자가 투입되는 프로젝트에서 Monolithic Architecture은 뚜렷한 한계를 보인다.

따라서 이를 독립적 기능으로 나누어 배포할 수 있는 MSA로 극복하고자 하였다.

MSA를 사용하면
1. 서비스 별 개별 배포가 가능하다.
2. 요구사항을 신속하게 반영하여 빠르게 배포할 수 있다.
3. 특정 서비스에 대한 확장성이 용이하다.
4. 장애가 전체 서비스로 확장될 가능성이 적다.

이외에도, 신기술의 적용이 유연하고, 서비스를 polyglot하게 개발/운영 할 수 있다는 장점이 있다.

이러한 MSA는 추상적인 개념으로서 단위 모듈이라고 생각하면 될 것 같다. 단위를 나누자, 개발한다면 함수로 나누자, 그 날의 할 일을 세분화하자.

profile
Network Infra Engineer

0개의 댓글