Around ten years ago, Jeff Bezos put out The Amazon API Mandate. He sent an email to every employee:
All teams will henceforth expose their data and functionality through service interfaces.
Teams must communicate with each other through these interfaces.
There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team’s data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.
It doesn’t matter what technology is used. HTTP, Corba, Pubsub, custom protocols — doesn’t matter.
All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.
Anyone who doesn’t do this will be fired.
— JEFF BEZOS
(Bold emphasis mine)
A few years ago, the same mandate has come down at Microsoft. Google has been at it for awhile being a cloud-only company. And Epicor started its API journey with REST.
The important things that APIs do for an organization are:
- Provide a consistent domain language for your organization
- Abstract away the details of the service to make upgrading and converting easier
- Provide SSO and finer-grain security to the services
- Allows different departments to work more in parallel once a common API is agreed upon
- Promote re-use of services instead of implementing the same service several different and incompatible ways
And while this was first invented in the cloud world, the benefits apply equally for on-prem users.