MSA
란 Micro Service Architecture
의 약자로 규모가 큰 어플리케이션을 여러개의 작은 어플리케이션으로 나눠놓는 아키택쳐이다.
다시 말하자면 전체 어플리케이션을 특정 목적을 가진 작은 어플리케이션의 단위로 나누는 것이다. 나누어진 어플리케이션끼리는 약한 결합도와 강한 응집도를 가져야한다.
우선 MSA의 장단점을 편하게 설명하기 위해서 반대되는 개념인 Monolithic Architecture
와 비교해서 정리하겠다.
여기서 Monolithic Architecture
란, 소프트웨어의 모든 구성요소가 하나의 소프트웨어에 모여있는 방식이다.
scale out
이 불가능하다장점
scale out
이 가능하다.단점
Monolithic Architecture
같은 경우 다른 기능을 쉽게 호출할 수 있어서 속도가 빠르다. 하지만 MSA
의 경우 서비스 간에 네트워크 통신을 주고 받아야한다.MSA
의 대표적인 사례로는 우버가 있다. 우버는 원래 Monolithic Architecture
로 만들어졌다. 처음에는 하나의 프로젝트로 개발하는 것이 편했고 여러가지 이슈가 발생하더라도 쉽게 처리할 수 있었지만 점점 프로젝트의 규모가 커지면서 확장성과 지속적인 연동 문제에 직면하게 됐다.
그래서 우버는 MSA
를 도입하게 됐다.
API 게이트웨이를 만들어서 승객관리, 운전자관리, 운행관리 등 모든 내부 요쳥을 연결했다.
각각의 서비스를 분리시켜 배포 가능하고 독립적으로 기능을 수행한다.