A monolith with no contract and heavy payloads
Airbnb started, like most fast-growing companies, with a monolithic Rails application. As the business grew, the plan was to break it apart into a service-oriented architecture — but breaking up a monolith exposes a problem the monolith itself hid: services have to talk to each other, and there was no shared, machine-checkable definition of how.
The old style of communication had three gaps Airbnb names directly. There was no clearly defined and strongly typed service interface and data schema. There was no robust way to generate RPC clients across the different languages the company used. And the payloads themselves were JSON over HTTP — a format the team calls large and inefficient for service-to-service traffic.