본문 바로가기
SpringBoot Server/API

MicroService Architecture (MSA)이란?

by ssury94 2025. 1. 1.

 

쇼핑몰 홈페이지를 운영한다고 생각해봅시다.

쇼핑몰을 이용할 손님들과 물건을 판매할 판매자, 그리고 그 쇼핑몰을 관리할 관리자가 그 홈페이지를 이용할거에요.

 

각각의 이용자들은 원하는 부분도, 하려는 부분도 다릅니다.

 

손님은 물건을 검색하고, 다른 손님들의 리뷰를 확인한 뒤 좋은 물건을 구입하고, 리뷰를 작성하고싶어할거고

판매자는 물건 정보를 등록하고, 수량 관리 및 주문확인을 하고 싶을것이고

관리자는 손님과 판매자가 쇼핑몰을 잘 이용할 수 있도록 리뷰관리나 통계 등을 관리하고 싶을거에요.

 

이 세 이용자가 이용할 서버를 한꺼번에 개발하는것Monolithic Architecture 라고 합니다.

간단한 Architecture이고 유지 보수가 용이해서 소규모 프로젝트나 신속하게 제작해봐야하는 프로토타입개발에는 적합하죠.

 

하지만 프로젝트가 커지면 커질수록

영향 및 전체 시스템 구조의 파악이 어려워지고,

빌드 시간 및 테스트 시간, 배포시간이 기하급수적으로 늘어나며

서비스를 부분적으로 scale-out하기 힘들어지며, 부분의 장애가 전체 서비스의 장애에 영향을 주게 됩니다.

 

 

 

이 문제를 해결하고자 등장한것이 MicroService Architecture (MSA)입니다.

 

MicroService Architecture (MSA) 정의 및 특징

MSA는 독립적으로 배포 가능한 여러 개의 서비스로 구성된 아키텍처입니다.

각 서비스는 특정 비즈니스 기능을 수행하며, 서로 간의 의존성을 최소화합니다.
MSA는 API를 통해 상호작용하며, 서비스 내부의 구현 세부사항은 외부에 노출되지 않습니다.

각 서비스는 REST API와 같은 경량 통신 방식을 사용하여 다른 서비스와 통신합니다.

 

장점

독립적 배포: 각 서비스는 개별적으로 배포할 수 있어, 전체 시스템 중단 없이 신속한 업데이트가 가능합니다.
확장성: 특정 서비스에 대해 수평적 확장이 용이하여 클라우드 환경에서 적합합니다.
장애 격리: 하나의 서비스에서 장애가 발생해도 전체 시스템에 미치는 영향이 적습니다.

단점

복잡성 증가: 서비스가 많아질수록 아키텍처의 복잡성이 증가합니다.
통신 비용: 서비스 간 호출 시 API를 사용하므로 통신 비용과 지연 시간이 증가할 수 있습니다.
데이터 관리 어려움: 데이터가 여러 서비스에 분산되어 있어 정합성 관리가 어려워질 수 있습니다