Menu
๐Ÿ Airbnb EngineeringยทSeptember 17, 2025

Viaduct Modernization: Evolving Airbnb's Data-Oriented Service Mesh Architecture

Airbnb's Viaduct, a data-oriented service mesh, has undergone significant modernization to address architectural integrity and developer experience challenges. This evolution involved simplifying its API, formalizing modularity, and re-architecting its internal engine to improve performance, maintainability, and scalability while supporting gradual migration. The article details the shift from a reactive, bottom-up approach to a more principled, layered design.

Read original on Airbnb Engineering

Viaduct is Airbnb's internally developed data-oriented service mesh, designed to provide a unified GraphQL API across various domains. Unlike traditional GraphQL setups that act as thin layers over microservices, Viaduct encourages hosting business logic directly within the mesh, functioning as a serverless platform. This architectural choice aims to reduce operational overhead, centralize data access, and enhance developer experience by abstracting away underlying service complexities.

Core Architectural Principles

  • Central Schema: A single, integrated GraphQL schema connecting all company domains, developed decentralizely but forming a highly connected graph.
  • Hosted Business Logic: Encourages teams to embed their business logic directly within Viaduct, leveraging a serverless platform to minimize operational burden.
  • Re-entrancy: Logic hosted on Viaduct can compose with other Viaduct-hosted logic by issuing GraphQL fragments and queries, crucial for modularity in a large codebase and avoiding monolith hazards.

Challenges and the Viaduct Modern Initiative

Over time, Viaduct's bottom-up, reactive evolution led to a complex developer API with multiple ways to achieve similar tasks and a lack of architectural integrity due to loose interfaces. This made changes difficult and disruptive. The "Viaduct Modern" initiative was launched to address these issues through a ground-up overhaul of both the developer-facing API and the execution engine.

Key Modernization Pillars

  • Tenant API Simplification: Reduced the complex 8-mechanism API to just two, unified resolver types (node and field resolvers), driven by schema definition for a simpler developer experience.
  • Tenant Modularity: Formalized "tenant modules" as units of schema and code owned by single teams, promoting composition via GraphQL fragments/queries instead of direct code dependencies. This enhances isolation and maintainability.
  • Framework Modularity: Created strong abstraction boundaries between Viaduct's layers (execution engine, tenant API, hosted application code). The engine now uses a dynamically-typed GraphQL representation, while the tenant API provides statically typed wrappers, allowing independent evolution of the engine (performance, reliability) and API (developer experience).
โ„น๏ธ

Gradual Migration Strategy

A crucial design decision for Viaduct Modern was enabling gradual migration. Airbnb shipped both the new Modern API and the existing Classic API side-by-side on top of the new engine. This allowed teams to immediately benefit from engine improvements while slowly adopting the new API, avoiding a disruptive "big bang" migration.

service meshGraphQLAPI gatewaydistributed architecturescalabilitydeveloper experiencerefactoringmonorepo

Comments

Loading comments...