APIs and Micro Services – Working together
Last few years, APIs have become important part of the digital strategy for organization. APIs have are mostly been used to provide consistent experience to their customers across all the digital touchpoints. In some cases, APIs are also providing means to extend or build the business models through integrating with new partners. Considering these benefits; it important to have consistent strategies for APIs across the organization.
The key strategies for implementing APIs is – Common API team that works with different channels and back-end applications using Agile methodology and DevOps principals and build a common set of APIthat provide consistent channel using common API platform.
Using this strategy, APIs become glue across the different digital channels and back-end applications. Hence, it becomes important to have a common design guidelines and patterns for implementation of these API.
The implementation pattern for API common used consists of multiple layers –
API Gateway provides a central access for the micro-services. It will help in consolidating services across different endpoints as if they were all coming from a single end point. This layer extends the base functionality implemented by APIs by some cross cutting aspects such as security, monitoring, metering, limiting and analytics. This can be considered as management layer that provides robustness to the APIs.
This is core functionality available in most of the API platforms available from vendors such as Apigee, SOA Software. And, they also provide mechanism to integrate with consuming channels such as Web, Mobile or Call Centers.
The services gateway implements the business APIs by integrating with back-end application or Micro Services. It implements uniform resource strategy with standardized message formats across the APIs. It integrates with backend applications using various adaptors. And, it performs caching, transformation and orchestration across multiple back-end applications to build a consolidated response needed by channels.
This API Gateway and Service Gateway are the primarily owned by common API team.
Micro Services are primarily unit of a business function in an organization. Micro Services decomposition is designed is based Scale cube model and Hexagonal architecture. The hexagonal architecture provide design strategy based on scalability across x, y and z axis in terms of functional decomposition, horizontal scale out and data partitioning The well-designed micro services provide flexibility to construct new APIs easily.
Considering Micro Services implement business functions, these are primarily owned business units. Each business units has autonomy in designing these micro services. However, it is advisable to have common guidelines and standards for implementing these micro services.
In addition to the layered implementations, there are other considerations that are important for successful implementation of API. These considerations are –
Uniform Resource Strategy: API team should define a resource strategy across organization – for example – “/insurer/policy/[id]/renew“. It helps bring clarity in design, implementation and communication across different applications and groups.
API Specification with common message standards: API team should acts a product owner to come up with message standards. It help is clearly defined entity model and also makes easier for applications and channels to integrate.
Versioning: APIs should be designed considering multiple channels; each with their own implementation timelines. Hence, it needs to support multiple versions (at least 3 versions).
Deployment: The primary decision needs to make is – Cloud vs On Premise. This decision is made based on the deployment of the back-end applications and channels. Back-end applications location decides the location of micro services or service gateway. And, Channel Applications location decides the locations for the API Gateway Layer
APIs are important for in order to support multi-channel ever changing business. Their implementation design is very important for their success. The layered implementation pattern with API Gateway, Services Gateways and Micro Services provides flexibility necessary to support ever changing business and robustness to support different requirements from multiple channels.
In addition to the layered pattern, it is important to consider uniform resource strategy, standardized message structures, versions and cloud based deployment for API implementation.