1.4.5 마이크로서비스 아키텍처와 SOA
“마이크로서비스 아키텍처는 SOA(Service Oriented Architecture, 서비스 지향 아키텍처)와 별반 다를 것이 없다. 전혀 새로운 것이 아니다.”라고들 합니다. 고수준에서 바라보면 SOA와 마이크로서비스, 두 아키텍처 모두 시스템을 여러 서비스로 구성하는 아키텍처 스타일입니다. 하지만 좀 더 깊이 들어가면 근본적인 차이점이 있습니다(표 1-1).
▼ 표 1-1 SOA와 마이크로서비스 비교
구분 |
SOA |
마이크로서비스 |
서비스 간 통신 |
SOAP, WS* 표준처럼 무거운 프로토콜을 응용한 엔터프라이즈 서비스 버스 중심의 스마트 파이프(smart pipe) |
REST나 gRPC처럼 가벼운 프로토콜을 응용한 메시지 브로커 또는 서비스 간 통신 중심의 덤 파이프(dumb pipe) |
데이터 |
전역 데이터 모델 및 공유 DB |
서비스 개별 데이터 모델 및 DB |
주요 사례 |
대규모 모놀리식 애플리케이션 |
소규모 서비스 |
일반적으로 SOA, 마이크로서비스 아키텍처는 사용하는 기술 스택이 다릅니다. SOA 애플리케이션은 SOAP 및 WS* 표준 등 무거운 기술을 주로 쓰고, 서비스를 통합하는 비즈니스와 메시지 처리 로직이 포함된 ESB라는 스마트 파이프(smart pipe)를 활용합니다. 마이크로서비스 애플리케이션은 대개 가벼운 오픈 소스 기술을 사용하며, 메시지 브로커(message broker, 중계기)나 REST 또는 gRPC처럼 가벼운 프로토콜 위주의 덤 파이프(dumb pipe)를 통해 서비스 간 통신을 합니다.8
8 단순히 데이터가 드나드는 통로(dumb pipe)에 그치지 않고 여러 가지 부가 기능을 가미하여 활용성을 높이는 개념을 말합니다.