소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태를 모놀리식 아키텍처라고 한다.
간단하며 유지보수가 용이하기 때문에 소규모 프로젝트나 프로토타입 제작에 적합하다.
하지만 일정 규모 이상의 서비스에서 모놀리틱 아키텍처는 한계가 있다.
MSA는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조를 의미한다.
*서비스 지향 아키텍처의 일종인 소프트웨어 개발 기법이다.
하나의 큰 어플리케이션을 여러 개의 작은 서비스로 구성하여 변경과 조합이 가능하다.
서비스나 프로젝트가 크고 복잡하고 장기적으로 운영될수록 MSA의 장점이 드러난다.
서비스 지향 아키텍처(Service Oriented Architecture, SOA)
- 애플리케이션 구성 요소가 통신 프로토콜을 통해 다른 구성 요소에 서비스를 제공하는 접근 방식
- 업무상 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하고, 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축함
각각의 서비스는 자체 프로세스에서 실행이 되고 느슨한 구조로 연결된다.
API를 통해서만 상호작용하며, 서비스의 end-point(접근점)를 API 형태로 외부에 노출한다.
내부의 구현 로직, 아키텍처, 프로그래밍 언어, 데이터베이스와 같은 기술적인 세부 사항은 서비스 API로 철저하게 추상화한다.
애플리케이션은 기술 중립적인 방식을 사용해 서로 데이터를 주고 받으며, 서비스 구현 기술과 독립적이기 때문에 다양한 언어와 기술로 구축될 수 있다.
주로 HTTP, REST, gRPC 등 가벼운 통신 아키텍처 또는 Kafka와 같은 메시지 스트림을 주로 사용한다.
제대로 설계된 마이크로 서비스는 하나의 비즈니스 범위에 맞춰 만들어진다.
하나의 기능만 수행하며, 여러 어플리케이션에서 재사용할 수 있어야 한다.
분산된 서비스마다 독립된 DB를 가진다.
넷플릭스의 마이크로서비스 전환 성공 사례와 넷플릭스 OSS(Open Source Software)라고 불리는 오픈소스 기반의 프레임워크가 좋은 레퍼런스가 되면서 많은 기업이 모놀리식 아키텍처에서 MSA로 전환을 시도하고 있다.
아마존, 이베이와 같은 글로벌 서비스 기업들이 사용할 만큼 강력한 아키텍처이다.
클라우드 기반 환경에 적합한 클라우드 네이티브 특성으로, 도커나 쿠버네티스 등과 같은 컨테이너 기반 플랫폼과 조합이 잘 맞아 함께 발전하고 있다.
https://velog.io/@tedigom/MSA-제대로-이해하기-1-MSA의-기본-개념-3sk28yrv0e
https://hahahoho5915.tistory.com/
https://mozzi-devlog.tistory.com/34
https://www.samsungsds.com/kr/insights/msa_architecture_edm.html
https://velog.io/@mrcocoball2/MSA-알아보기-1.-MSA란-무엇인가