Taming Service-Oriented Architecture Using A Data-Oriented Service Mesh

Introducing Viaduct, Airbnb’s data-oriented service mesh

Adam Miskiewicz
7 min readadvanced
--
View Original

Overview

The article introduces Viaduct, Airbnb's data-oriented service mesh designed to enhance the modularity of microservices-based Service-Oriented Architecture (SOA). It discusses the transition from traditional procedure-oriented designs to a data-oriented approach, emphasizing the benefits of organizing service interactions around data rather than procedures.

What You'll Learn

1

How to implement a data-oriented service mesh using GraphQL

2

Why transitioning from procedure-oriented to data-oriented design is beneficial for SOA

3

How to utilize a central schema to improve data agility in microservices

Prerequisites & Requirements

  • Understanding of Service-Oriented Architecture and microservices
  • Familiarity with GraphQL(optional)

Key Questions Answered

What is Viaduct and how does it improve Service-Oriented Architecture?
Viaduct is a data-oriented service mesh developed by Airbnb that enhances the modularity of microservices by organizing service interactions around data rather than procedures. This approach allows for better abstraction of service dependencies and improved data agility, making it easier to manage complex applications.
How does Viaduct handle service dependencies differently than traditional service meshes?
Unlike traditional service meshes that require data consumers to manage service dependencies, Viaduct abstracts these dependencies away. It allows data consumers to request data without needing to know which specific services provide it, streamlining interactions and reducing complexity.
What are the benefits of using a central schema in Viaduct?
The central schema in Viaduct allows for unified API definitions and database schemas, which can significantly enhance data agility. Changes to the database schema can be propagated to client code with a single update, reducing coordination time among teams and minimizing the risk of inconsistencies.
What role do serverless functions play in Viaduct?
Serverless functions in Viaduct are used to compute derived fields that operate on the data graph without needing to know the underlying services. This helps to keep the service mesh clean and reduces the number of services needed, while also offloading stateless logic to a serverless environment.

Key Statistics & Figures

Core entities in Viaduct
80
Viaduct has grown to include 80 core entities that power 75% of Airbnb's modern API traffic.
Percentage of API traffic powered by Viaduct
75%
This percentage indicates the significant role Viaduct plays in handling API requests at Airbnb.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

API
Graphql
Used to build the data-oriented service mesh called Viaduct.
Backend
Graphql-java
The underlying framework for Viaduct.

Key Actionable Insights

1
Transitioning to a data-oriented service mesh can streamline your microservices architecture.
By adopting a data-oriented approach like Viaduct, organizations can reduce the complexity of service dependencies, making it easier to manage and scale their applications.
2
Utilizing a central schema can significantly improve data agility.
This allows teams to make changes to the database schema that automatically reflect in APIs, reducing the time needed for coordination and implementation across multiple services.
3
Incorporating serverless functions can enhance the efficiency of your architecture.
By offloading stateless logic to serverless environments, you can simplify your service mesh and focus on core functionalities without the overhead of managing additional services.

Common Pitfalls

1
Failing to abstract service dependencies can lead to a tangled architecture.
When data consumers are required to manage their own service dependencies, it can create a complex and hard-to-maintain system. Transitioning to a data-oriented model helps mitigate this issue.

Related Concepts

Service-oriented Architecture
Microservices
Graphql
Data Agility