Uber: 글로벌 모빌리티 서비스의 민첩성 확보 – MSA와 DDD 혁신 사례
Uber는 전 세계 모빌리티 시장을 선도하는 기업으로, 서비스 확장과 복잡성 증가에 따라 아키텍처의 대대적인 혁신이 필요했습니다.
초기에는 단일 모놀리식 시스템으로 출발했지만, 글로벌 확장과 다양한 서비스의 등장으로 인해 마이크로서비스 아키텍처(MSA)와 도메인 주도 설계(DDD)를 적극적으로 도입하게 되었습니다.
변화의 배경: 모놀리식의 한계와 MSA 도입
초기 구조
Uber는 처음에 하나의 거대한 코드베이스(모놀리식)로 운영됐습니다.
이 구조는 빠른 MVP 개발에는 적합했지만, 서비스가 성장하고 기능이 다양해지면서 변경과 확장에 한계가 명확해졌습니다.
MSA 도입
서비스별로 독립적인 마이크로서비스로 분리하면서, 각 기능(예: 결제, 매칭, 지도 등)을 별도의 팀이 관리·운영할 수 있게 했습니다.
그러나 수천 개의 마이크로서비스가 생기면서, 오히려 의존성 관리, 시스템 복잡성, 서비스 간 협업 등 새로운 문제가 발생했습니다.
혁신의 핵심: Domain-Oriented Microservice Architecture(DOMA)
Uber는 기존 MSA의 복잡성을 해결하기 위해 Domain-Oriented Microservice Architecture(DOMA)라는 새로운 패러다임을 도입했습니다.
DOMA의 주요 원칙
도메인 중심 그룹화:
관련된 마이크로서비스를 논리적으로 묶어 ‘도메인’ 단위로 관리합니다.
예를 들어, ‘지도’, ‘요금’, ‘매칭’ 등 각 도메인이 수십 개의 마이크로서비스를 포함할 수 있습니다.계층적 설계(Layered Design):
도메인을 레이어로 묶어, 각 레이어 내에서만 의존성이 허용되도록 설계합니다.
Uber는 인프라, 비즈니스, 제품, 프레젠테이션, 엣지 등 5개의 레이어를 두고 있습니다.도메인 게이트웨이(Gateway):
각 도메인에 단일 진입점(Gateway)을 두어, 외부에서는 복잡한 내부 구조를 몰라도 하나의 인터페이스만 사용하면 되도록 했습니다.
이를 통해 서비스 변경이나 마이그레이션 시 영향 범위를 최소화할 수 있습니다.확장(Extension) 메커니즘:
도메인별로 플러그인, 데이터 확장 등 다양한 방식으로 기능을 유연하게 확장할 수 있도록 했습니다.
이는 새로운 비즈니스 요구나 기능 추가에 빠르게 대응할 수 있게 해줍니다.
DOMA 도입의 효과
복잡성 감소:
2200개 이상의 마이크로서비스를 70개 도메인으로 통합, 관리 포인트와 의존성이 대폭 줄었습니다.개발 생산성 및 온보딩 속도 향상:
새로운 기능 추가나 서비스 온보딩 시간이 25~50% 단축되었습니다.
예를 들어, 플랫폼 확장에 필요한 시간이 3일에서 3시간으로 줄어든 사례도 있습니다.유지보수와 확장성 강화:
도메인 게이트웨이 덕분에, 내부 서비스의 변경이나 플랫폼 리팩터링 시에도 외부 영향 없이 안정적으로 마이그레이션이 가능해졌습니다.새로운 비즈니스 라인 대응력 강화:
새로운 서비스나 제품 출시 시, 기존 도메인 구조를 확장하거나 재사용하는 것이 훨씬 쉬워졌습니다.
Uber 사례를 통해 얻을 수 있는 인사이트
- 복잡한 시스템은 도메인 중심으로 구조화하라
- 단순히 마이크로서비스로 쪼개는 것만으로는 복잡성 문제가 해결되지 않습니다.
- DDD의 Bounded Context와 도메인 중심 그룹화를 통해, 각 영역의 책임과 경계를 명확히 해야 합니다.
- 계층적 설계와 게이트웨이로 의존성을 통제하라
- 레이어와 게이트웨이 설계를 통해, 서비스 간 의존성을 체계적으로 관리하고, 변화에 강한 구조를 만들 수 있습니다.
- 확장성과 유연성을 동시에 추구하라
- Extension 메커니즘 등 유연한 확장 방식을 도입하면, 새로운 요구와 변화에 빠르게 대응할 수 있습니다.
- 조직 규모와 복잡도에 따라 아키텍처 전략을 달리하라
- Uber의 DOMA 사례는 대규모 조직에 특히 효과적이지만, 작은 조직에서는 오히려 복잡성만 늘릴 수 있습니다.
- 조직의 성장 단계와 비즈니스 특성을 고려해 점진적으로 도입하는 것이 중요합니다.
- 아키텍처 혁신은 개발자 경험과 비즈니스 민첩성을 동시에 높인다
- Uber는 DOMA 도입으로 개발자 온보딩, 협업, 신규 서비스 출시 등 모든 면에서 민첩성을 크게 높였습니다.
- 이는 곧 시장 변화에 빠르게 대응할 수 있는 경쟁력으로 이어집니다.
참고
- Uber Blog – Introducing Domain-Oriented Microservice Architecture
[ClickIT – System Design Uber Uber Architecture Diagram](https://www.clickittech.com/software-architecture/uber-system-design/) - GeekNews – Uber의 Domain-Oriented Microservice Architecture
- LinkedIn – How DDD Improved Uber’s Platform
이 글은 Uber의 실제 경험을 바탕으로, 대규모 서비스에서 MSA와 DDD가 어떤 방식으로 결합되어 혁신을 이끌어내는지 구체적으로 보여줍니다.
자신의 조직 규모와 상황에 맞는 아키텍처 전략을 고민할 때, Uber의 사례와 원칙을 참고하면 큰 도움이 될 것입니다.