[MSA] 모놀리식 to MSA 전환기 - MSA란

주현·2026년 1월 5일

MSA

목록 보기
1/5

현재 진행중인 대규모 트래픽 선착순 쿠폰 발급 및 주문시스템 개인 프로젝트를 진행하고 있습니다.
해당 프로젝트의 아키텍처는 모놀리식 아키텍처입니다.
해당 프로젝트를 MSA아키텍처로 변환하기 전, MSA에 대해서 작성해보려고 합니다.

개인 프로젝트를 예로 설명을 드리겠습니다.

프로젝트 내 일부 Member,Coupon 등 도메인이 존재합니다.


📌 Monolithic Architecture?

현재 저의 프로젝트나 사용자가 적은 서비스 같은 경우에는 모든 소스 코드가 빌드되고 배포되는 경우가 많습니다.
(옛날에는 MSA로 구성을 한다면, 각 서버당 WAS가 필요할 것이며 라이센스 비용들이 굉장히 크게 작용하여 더더욱 모놀리식 아키텍처로 진행을 했다나..?)

하여튼 이러한 아키텍처를 "모놀리식 아키텍처"라고 합니다.

현재 저의 애플리케이션에는 Member, Coupon.. 등 도메인이 하나의 애플리케이션 안에서 강한 결합을 가지며 존재합니다.
또한 DB같은 경우도 하나의 애플리케이션 안에서 하나의 DB로 관련 도메인의 테이블을 가지고 있습니다.

여기서 중요한 점은
"하나의 애플리케이션 안에서 모든 도메인이 강하게 결합되고, 하나의 DV로 강한 결합을 가진다" 입니다.

이러한 강한 결합은 모놀리식 아키텍처의 단점이 나타나게 됩니다.

📍단점

1️⃣ 특정 도메인의 장애가 전체 서비스에 영향을 미칩니다.

Member, Coupon 도메인이 존재할 경우 "쿠폰 발급" API에 트래픽이 몰려서 장애가 서버에 부하가 발생하여 장애가 발생한다면, 전체 애플리케이션에 장애가 발생하기 때문에 회원 서비스 등에도 장애가 전파됩니다.
쿠폰발급에 트래픽이 몰려서 장애가 발생했는데,회원 관련 기능을 이용하는 사용자까지 서비스를 이용하지 못하게 됩니다.

2️⃣ 빌드, 배포 시간이 길어 생산성이 낮아진다.

다양한 래퍼런스나 측근이 멀티모듈로 전환하면서 느낀 내용이 모놀리식아키텍처는 빌드, 배포시간이 길어 생산성이 낮다는 얘기를 많이 들었습니다.
여러 서비스가 하나의 애플리케이션에 존재하기 때문에 서비스가 확장되면 확장될수록 빌드, 배포시간이 길 수밖에 없습니다.

3️⃣ 각 도메인의 유지보수가 어렵다.

각 도메인들이 서로 하나의 애플리케이션 안에서 강한 결합으로 이루어져 있기떄문에, 쿠폰관련된 서비스를 수정하더라도 이에 연관된 다른 도메인까지 포함해서 고려해야합니다.
그렇기 때문에, 하나의 서비스를 유지보수할때 이에 연관된 도메인 등 고려할 사항이 많아 유지보수가 어렵습니다.

4️⃣ 특정 도메인만 Scale-out 하기가 힘들다.

저의 서비스에서 "쿠폰 발급"에 트래픽이 몰릴 것인데, 이러한 상황에서 scale-out하여 서버를 늘려 트래픽을 분산시켜야합니다.
하지만 Coupon에 관한 서비스만 있는 애플리케이션을 scale-out하는 것이 아닌, 하나의 통합된 애플리케이션을 통쨰로 scale-out 해야하므로 비효율적입니다.

이러한 단점을 해결하기 위해서 MSA 아키텍처가 등장하게 됩니다.


📌 MSA(Micro Service Architecture)?

MSA는 모놀리식 아키텍처와 반대로 여러 도메인(서비스)가 각각 독릭적으로 구성되어있는 구조입니다.

그렇기 떄문에, 도메인 별로 Member application, Coupon application 등으로 나뉘어 개별적으로 개발/빌드,배포가 됩니다.
또한 각 application이 별도의 DB를 가집니다.

📍MSA의 장점

모놀리식 아키텍처에서 나온 단점들이 MSA 아키텍처로 전환시 단점을 보완할 수 있습니다.

1️⃣ 특정 도메인의 장애가 전체 서비스에 전파되지 않습니다.

모놀리식 아키텍처같은 경우에는 특정 도메인의 장애가 서비스 전체에 영향을 미쳤습니다.
하지만 MSA같은 경우엔 도메인 별로 분리되어있기 때문에, 장애가 전파가 되지않습니다.

2️⃣ 각 도메인의 유지보수가 쉽습니다.

모놀리식 아키텍처에서는 도메인 간에 강결합을 가지고 있기 떄문에 유지보수가 어려웠습니다.
MSA 아키텍처는 서비스가 독립적으로 구성되기 때문에, 도메인의 유지보수가 상대적으로 쉬워집니다.

3️⃣ 각 도메인의 유지보수가 어렵다.

모놀리식 아키텍처에서는 기본적으로 빌드 및 배포가 직렬적으로 구성되어 소요기간이 깁니다.
하지만 MSA 아키텍처는 서비스가 독립적으로 구성되기 때문에, 동시에 병렬적으로 서비스 빌드 및 배포가 가능합니다.

4️⃣ 특정 도메인만 Scale-out 하기가 쉽다.

모놀리식 아키텍처는 여러 서비스가 하나의 Application에 존재하기 때문에 특정 도메인의 서버만 수평적 확장이 힘듭니다.
MSA에서는 서비스가 독립적으로 분리되어 있기에 도메인별로 수평적 확장이 쉽습니다.


이렇게 알아봤고 MSA를 구성한다면 더욱 고려해야할 상황이 많습니다.
해당 내용은 여기에 다루지않고 현 모놀리식 아키텍처 프로젝트를 MSA로 전환하는 과정을 작성하겠씁니다.

0개의 댓글