Perficient’s integration practice is over 15 years old so we have been through the rise of proprietary integration brokers, the hype cycle of SOA, and the hyper growth of APIs and the rising popularity of microservices. These approaches and technologies are related with the common goal of systems interoperability and share a common lineage and evolution of technology and architecture.
SOA has been successful by bringing a focus to standards-based interoperability but often had cost overruns when approached with a heavy top-down methodology. APIs have popularized a more bottom-up approach to interoperability focused on a more lightweight and developer focused governance model and simple semantics. Microservices has introduced an architected way to package and deploy services using containers that scale easily with cloud computing including the popular API interface.
One could at a high level argue that these approaches to interoperability have different goals in that SOA is about reuse, APIs are about integration and microservices are about scale. But, the goals can be complementary across each style, for example it would be great if APIs are reusable with little redundancy and there is often need for SOA services to scale.
It is actually possible to have the best of all three approaches by treating APIs as a program and targeting a set of strategic APIs for reuse. And, obviously the companies that where successful with SOA and have a set of enterprise services can quite easily create a lightweight API façade and add a developer portal API portal to an existing SOA governance framework. Microservices architecture decisions should be made based on the scalability and operational requirements of the system.
Combining the best of all these approaches is attractive since SOA has proven benefits if practiced pragmatically, APIs are the best way to provide integration for mobility and web and microservices make best use of cloud elasticity. APIs without some governance leads to a proliferation of disparate APIs that over time becomes a nasty point-to-point spaghetti architecture. And the APIs exposed by microservices certainly need a well-defined and reusable interface.
Perficient often approaches APIs as a program to increase API reuse, speed web, cloud and mobile development and reduce the total number of APIs by creating reusable common APIs in a SOA style. At a high-level Perficient’s approach to API architecture, development and management addresses the following goals:
- Use a lightweight, developer-centric governance model via API management including descriptive metadata, samples and forums to promote reuse
- Minimize “snowflake” (one of a kind) APIs by creating API design standards such as resource naming, security, a JSON style guide, etc.
- Promote API flexibility and reuse using message-oriented semantics and hypermedia controls
Reusable APIs and API management provides the following benefits:
- Reduced complexity and provides architecturally consistent, reusable and intuitive APIs
- Creates a scalable, secure and robust runtime environment for APIs
- Provides a platform for mobile backend as a service to speed mobile development and improve performance
- Reduced testing, maintenance and development costs by reducing or eliminating API breaking changes
- Increased focus on design and innovation by reusing APIs versus code from scratch
- Creates a consistent user experience
- Improves design quality
- Lowers cost of ownership
It is possible to have the best of SOA, APIs and microservices but it will not happen by accident. There needs to be some formality in the approach to running an API program and managing APIs.