165. SOA vs MSA 차이점

핵심 인사이트: 둘 다 거대한 시스템을 잘게 쪼개는 것은 똑같다. 하지만 SOA는 회사 전체 부서가 공용으로 쓰는 '중앙 버스(ESB)'라는 관에 얽매여 있어서 하나가 터지면 다 같이 죽지만, MSA는 중앙 통제 없이 각자 알아서 살아남는 '독립된 용병'들의 집합이다.

Ⅰ. SOA와 MSA의 공통점

서비스 지향 아키텍처(SOA)와 마이크로서비스 아키텍처(MSA)는 모두 거대한 모놀리식(Monolithic) 시스템의 한계를 극복하기 위해, 시스템을 작고 독립적인 서비스 단위로 분해하여 결합도를 낮추고자(Loose Coupling) 하는 아키텍처 철학을 공유합니다. 사실 MSA는 "SOA가 클라우드 시대에 맞게 제대로 진화한 형태(SOA 2.0)"라고 볼 수 있습니다.

Ⅱ. 핵심 아키텍처 차이점 (ESB의 존재 유무)

[ SOA (Service Oriented Architecture) ]
┌────────┐   ┌────────┐   ┌────────┐
│ 인사팀 │   │ 영업팀 │   │ 재무팀 │ ◀ 전사적 수준의 재사용 목적
└───┬────┘   └───┬────┘   └───┬────┘
    │            │            │
════▼════════════▼════════════▼════ ◀ 무겁고 강력한 ESB (Enterprise Service Bus)
    (SOAP, XML, 복잡한 라우팅/변환 수행)
    
========================================================================

[ MSA (Microservices Architecture) ]
┌────────┐      ┌────────┐      ┌────────┐
│ 상품   │ ◀─▶ │ 주문   │ ◀─▶ │ 리뷰   │ ◀ 특정 애플리케이션(App) 내부의 분해
│ 서비스 │      │ 서비스 │      │ 서비스 │
└────────┘      └────────┘      └────────┘
      (가벼운 REST API 또는 비동기 메시지 큐 통신)

Ⅲ. SOA와 MSA의 상세 비교

구분SOA (서비스 지향 아키텍처)MSA (마이크로서비스 아키텍처)
목적 / 범위전사적(Enterprise) 수준에서 여러 시스템 간의 재사용성 극대화단일 애플리케이션(App) 내부를 더 작게 쪼개어 독립 배포/확장 극대화
통신 방식무겁고 복잡한 중앙 미들웨어인 ESB(Enterprise Service Bus) 를 통한 SOAP/XML 통신가벼운 REST API(HTTP/JSON) 나 Kafka 같은 비동기 메시지 브로커 사용
파이프 철학Smart Pipe, Dumb Endpoint: 중앙 ESB가 라우팅, 변환 등 모든 똑똑한 짓을 다 함Dumb Pipe, Smart Endpoint: 통신은 단순 전달만 하고, 라우직은 개별 서비스 안에서 처리
데이터베이스전사적으로 통합된 거대 DB(단일 DB) 를 공유하는 경우가 많음각 서비스가 무조건 자신만의 독립적인 DB를 가져야 함 (가장 큰 차이)

Ⅳ. SOA가 몰락하고 MSA가 뜬 이유

SOA는 모든 서비스가 ESB라는 거대한 미들웨어 파이프에 연결되다 보니, ESB 서버 하나가 죽거나 느려지면 회사 전체 시스템이 마비되는 치명적인 단점(SPOF)을 드러냈습니다. 또한, DB를 공유했기에 한 서비스에서 테이블 구조를 바꾸면 다른 시스템들도 줄줄이 에러가 났습니다. 반면 MSA는 ESB를 폐기하고, DB마저 갈기갈기 찢어버림으로써 완벽한 '독립 생존'과 '무중단 배포'를 실현했습니다.

📢 섹션 요약 비유: SOA는 여러 공장(서비스)이 거대한 중앙 컨베이어 벨트(ESB) 하나에 매달려 일하는 구조라, 벨트가 고장 나면 전 공장이 스톱됩니다. MSA는 중앙 벨트를 없애고, 공장마다 알아서 퀵 오토바이(REST API)를 불러 물건을 주고받는 구조라, 한 공장이 불타도 다른 공장은 알아서 잘 굴러갑니다.