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 EngineeringViaduct 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.
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.
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.