Backend Development 19 min read

Domain‑Oriented Microservice Architecture (DOMA) at Uber

This article explains Uber's Domain‑Oriented Microservice Architecture (DOMA), describing why microservices were adopted, how DOMA structures domains, layers, gateways and extensions, the benefits observed, and practical advice for companies of different sizes considering a similar evolution.

Top Architect
Top Architect
Top Architect
Domain‑Oriented Microservice Architecture (DOMA) at Uber

Recent discussions have highlighted the drawbacks of microservice architectures, such as increased system complexity, even though they originally offered benefits like independent deployment, clear ownership, and improved stability.

Uber now runs about 2,200 critical microservices and has been working for two years to reduce this complexity while preserving the advantages of microservices. The company introduces its approach called Domain‑Oriented Microservice Architecture (DOMA).

DOMA groups related microservices into domains , organizes domains into layers that define permissible dependencies, uses a single gateway as the entry point for each domain, and provides extensions (logical and data) to add functionality without modifying core services.

Key motivations for adopting microservices at Uber included reducing availability risk, deployment risk, and improving separation of concerns, ownership, and developer velocity. As the organization grew, the complexity of coordinating many services became a bottleneck, prompting the need for a more structured approach.

DOMA’s layer design separates concerns from high‑level user‑facing services down to infrastructure, allowing lower layers to impact fewer services. Uber defines six layers: Infrastructure, Business, Product, Presentation, Edge, and others, each with decreasing impact radius.

The gateway abstracts the underlying domain services, simplifying upstream dependencies and easing migrations. Extensions enable teams to add logic or data without altering core implementations, supporting both logical plugins and data payloads (e.g., via Protobuf Any or JSON).

Benefits observed include higher system reliability, clearer ownership, faster development cycles, and a reduction in integration touchpoints, cutting onboarding time by 25‑50% and consolidating 2,200 microservices into about 70 domains.

Practical advice is offered for startups, mid‑size, and large companies, emphasizing when to adopt microservices, the importance of layered dependency management, and the value of keeping product logic separate from platform services.

In conclusion, Uber views microservice architecture as a large distributed program and treats DOMA as a way to apply established design principles (DDD, clean architecture, SOA) at scale, inviting others to adopt and provide feedback.

architectureMicroservicesscalabilityDomain-Driven DesignUberservice-oriented
Top Architect
Written by

Top Architect

Top Architect focuses on sharing practical architecture knowledge, covering enterprise, system, website, large‑scale distributed, and high‑availability architectures, plus architecture adjustments using internet technologies. We welcome idea‑driven, sharing‑oriented architects to exchange and learn together.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.