**SOA(Service-Oriented Architecture, 서비스 지향 아키텍처)**와 마이크로서비스는 모두 시스템을 서비스로 분해하지만, 세분성(granularity), 데이터 소유권, 서비스 간 통신 방식에서 차이가 있습니다.
**SOA(Service-Oriented Architecture, 서비스 지향 아키텍처)**와 마이크로서비스는 모두 시스템을 서비스로 분해하지만, 세분성(granularity), 데이터 소유권, 서비스 간 통신 방식에서 차이가 있습니다.
| 측면 | SOA | 마이크로서비스 |
|---|
| 세분성 | 거친 단위 | 세밀한 단위 |
| 통신 | 종종 ESB를 통함 | 경량(REST/gRPC/메시징) |
| 데이터 | 자주 공유됨 | 서비스당 데이터베이스 |
| 거버넌스 | 중앙집중식 | 분산식 |
| 프로토콜 | 종종 SOAP/XML | 보통 HTTP/JSON, gRPC |
SOA ─▶ Service A ─▶ [ Enterprise Service Bus ] ─▶ Service B
(똑똑한 파이프, 중앙 오케스트레이션, 공유 스키마)
Microservices ─▶ Service A ──(직접 REST/gRPC/event)──▶ Service B
("smart endpoints, dumb pipes" — 로직은 서비스 안에 존재)
마이크로서비스는 "smart endpoints, dumb pipes"(똑똑한 엔드포인트, 멍청한 파이프) 원칙을 따릅니다. 지능은 서비스 안에 존재하고 전송 계층은 단순하게 유지됩니다. SOA는 종종 ESB에 로직을 중앙집중화합니다.
ESB 스타일의 병목을 다시 도입하지 마세요. 무거운 중앙 버스는 마이크로서비스를 단계만 늘어난 SOA로 되돌려 놓습니다.
그 차이는 대부분 탈중앙화에 관한 것입니다. 마이크로서비스는 데이터 소유권과 로직을 각 서비스로 밀어 넣어, 많은 SOA 배포를 괴롭혔던 중앙 병목을 피합니다.
이를 이해하면 마이크로서비스라는 이름 아래 실수로 SOA의 결합도를 다시 만들어내는 일을 막을 수 있습니다.