The microservices architecture is gaining momentum as an effective approach for building products or applications out of a functionally decomposed set of services. A microservices architecture allows for rapid scalability by deploying new features in the form of containers.
Business-to-consumer (B2C) companies are fast adopting hybrid strategies by adding business-to-business (B2B) logic to leverage marketability and relevance to their customers. The architectures are evolving with provisions to support third-party software as a service (SaaS) offerings dynamically so that service providers from different domains can collaborate to offer consumers an assortment of services.
Products providing last-mile services delivered by network equipment makers, commerce portals and others are competing to deliver value-added services, plugins and add-ons in addition to regular services by enabling the application programming interfaces (APIs) of their products for consumption by third-party SaaS vendors.
Today, applications are primarily monolithic client-server-based systems. Though many companies like to externalize their APIs, their legacy products and applications have not been built for this purpose. As such, a typical approach for these companies is to adopt the microservices model, build an adaptation layer and make sure the services comply with standard protocols.
The service adaptation layer is key to the solution since it enables the externalization of legacy services. The externalization should be adopted with the four capabilities below utilizing a microservice architecture, which best suits these capabilities and any customization requirements.
- RESTful compliance
- RESTful constrains data and functionality as resources and provides self-descriptive interface formats for accessing the resources using uniform resource identifiers.
- Customized around the business core
- Externalizing only secured and non-intrusive value-based services with monitoring support while restricting access to the rest of the services.
- The externalization should support adding scaled SaaS offerings with changes limited to the layer and agnostic to the core product.
- Packaging memory footprint
- The memory requirements of each offering and the impact on the overall memory and performance footprint must be evaluated while hosting third-party SaaS offerings and related services
Since adaptation layers are a type of integration layer for applications, they should comply with industry protocols and standards.
Strategy for Microservices Implementation
As companies zero in on the service adapter layer, implementation of a microservices architecture approach needs to include the following capabilities:
- Easily deployable package with a small memory footprint
- Faster application initialization to load new container instances
- Agile and continuous development using common tools like Jenkins, Gradle and Swagger
- Authentication and security in features and services using tools such as Tyk
Some of the new frameworks that have these capabilities include Spring Boot, Spark, Play Framework, Dropwizard, Apache Camel, Mule ESB and others in Java.
Another consideration when exposing API endpoints through a microservices approach is integration compatibility with legacy products and systems. This service-oriented consideration requires frameworks that can implement enterprise-level integration and aggregation. A few examples include Apache Camel, Mule, Kafka and Zookeeper.
Strategy for Microservice Deployment
After the package is built, the next step in the approach is the deployment of microservices. The widely recommended approach is to deploy in a SaaS/PaaS mode as it provides the following built-in features:
- Containerization (virtual machines, Dockers, etc.)
- Orchestration of containerized services
- Storage of configurations and application information
- Tracking, health monitoring and high availability
- Logs, reports, etc.
When a legacy system is made deployable as a service, a few additional capabilities need to be considered such as scalability to support consumers and traffic load and automation for the deployment pipeline.
A number of services and platforms are available that take care of deployment and scale, which lets companies focus on application development. A few of these services include:
- AWS Elastic Beanstalk. The market leader offering ease of deploying and scalable web applications and services developed in multiple languages
- Red Hat’s OpenShift. Allows developers to develop, host and scale applications in a cloud environment
- Google’s App Engine. Enables companies to deploy services and applications without the need to understand how to build or scale the underlying infrastructure.
Other offerings include Kontena, Heroku and AppScale.
These offerings enable companies to deploy and run their legacy products as microservice solutions by providing runtime platforms (PaaS and SaaS) and integration with the API manager platform.
Microservices and API Management Platforms
As a product is deployed with microservices, its interfaces should be externalized as APIs and managed using an API management suite.
Such packaging of the interfaces offers a number of advantages, such as standardization and faster time-to-market as third-party API gateways. The API manager solution should have the following features:
- Security to protect the backend services from unmanaged and intrusive consumer offerings
- Authentication and authorization for consumers to utilize the exposed APIs based on specific access policies; Tyk, Apigee and Kong are three API management platforms
- Monitoring for a health check, usage behavior reporting and debugging
These capabilities are essential elements of API gateway solutions. (See Figure 1.) Additional features for specific or custom scenarios include caching, which avoids repeated microservice use, and service measurement, such as reporting API usage in real-time on the dashboard.
Figure 1. Elements of an API Gateway Solution
These features provide an end-to-end management platform without departing from the legacy infrastructure to run microservices.
Role of Design and Engineering Firms
Design and engineering firms can be crucial partners in helping to migrate legacy architectures to microservices-oriented SaaS offerings, as the process requires meticulous attention to address the inherent challenges, refactoring of services and security requirements of the platform and careful analysis of available frameworks and tools for implementation.
Third-party design and engineering firms bring strategic capabilities to the table that avoid pitfalls caused by incorrect selection decisions and implementation. Their expertise includes:
- Analysis of modules in legacy architectures and identification of current and future service offerings that can be externalized.
- Implementation of wrappers and adaptation layers into legacy systems to provide scale and modularity.
- Support for the automation of continuous development, integration and deployment to enable a DevOps environment for efficient monitoring and improvements.
- A microservices architecture selectively enables interfaces from legacy systems that do not expose those interfaces natively.
- The selection of the right framework or tools depends on context and scenarios specific to the core domain of the company.
- The major challenge is to set up an environment to develop the microservices for continuous integration and make them readily available for deployment.
With a combined 50 years of deep expertise and experience, Aricent and our design arm, frog, is the partner of choice in the migration from legacy monolithic frameworks to the optimized selection and implementation of microservices.
Find out how we can help your company move to a microservices architecture at future speed.