How do Microservices Enable Innovation/Progress in the Adoption of Cloud?

Cloud enables scaling as per requirements

Moving business processes to the cloud is one of the major infrastructure changes for the businesses of today. It requires transferring applications to the cloud environment from their legacy environment.

A few years ago, companies that were considering moving workloads to cloud environments were in two minds about the feasibility of the cloud environment. At that time, the bigger question was whether the feasibility factor would force a vast migration from legacy environments to the cloud architecture. However, the cloud migration did not happen on a massive scale as the Y2K migration from one environment to another. Businesses considered it to be too risky and a painful investment to move the workloads. But as time changed, companies have now widely accepted both private and public cloud due to the rising costs and need for continuous, uninterrupted implementation.

Most businesses choose to put new functionality into the cloud environment, usually in a public cloud. This is generally done by purchasing SaaS applications instead of traditional software. The new development is then done in a Platform-as-a-Service (PaaS) cloud environment.  The challenge nowis not data migration but working towards keeping data within premises, and exposing it for better digitalization through cloud-based microservices.

How do microservices fit into this scenario?

Microservices are often confused with the traditional SOA-type services. Though there is a definite overlap, microservices is an architectural pattern in which composite applications are made up of small, independent processes that work in coordination with each other using language-agnostic APIs.

Micro 3This process not only facilitates the migration of applications from legacy to cloud, but also helps overcome challenges posed by regulations such as GDPR which require greater accountability with regard to data storage. In the last seven years, most businesses have deployed 60-80% of their current applications, and they continue to re-implement the applications as the new software versions are launched. 

With no data being stored the microservices layer, there is limited persistence. And thereby, only one source of data instead of multiple sources.

Addressing the challenge of re-engineering the legacy environment

Many third-party service providers admonish that they will have to re-engineer their legacy environment and implement it into the cloud architecture to get the desired end-to-end performance of the applications. While this process is happening in some enterprises, it’s very selective. Most companies prefer to have a cloud-based microservices layer, which allows fulfilling the need to re-implement and enables moving legacy applications only when their underlying functionality alters enough or new versions become available in a SaaS or cloud version.

Another factor that keys into the cloud migration strategy is the limited capital. That’s why business units want new functionality and see little or no gain in investing capital, time and risk against replicating existing functionality that works into a new environment.Micro 2

Therefore, instead of making a significant investment in a quick migration like the Y2K movement, businesses are making considerable investments in APIs and microservices. This aids hybrid environments (combination of legacy and cloud) to work well together.

However, this move doesn’t imply that companies won’t have to redevelop a few of their applications in the cloud. But it gives them the option of selecting which ones they wish to redevelop.

How does moving to cloud increase the efficiency of microservices?

The microservices architecture provides a great deal of benefits such as strong subsystem boundaries, independent implementation, technological diversity, and so on. But it becomes complex with distributed application development. Having said that, it is important to note that running a host of distributed applications at scale is a difficult task, even with proper tools and design. It needs a system that has a stable feature set with a well-known system load. For instance, this system can be simply lifted and shifted onto the cloud and the benefits of cloud computing still remain the same.

Micro 1Moving to the cloud platform helps in managing the health and lifecycle of microservices. Cloud makes it easier by handling much of the operational complexity caused by distributed application development. It makes it easier to scale the application when there is an increased demand, watches out for unhealthy instances, describes services interacting with each other, and more.

A well-deployed cloud infrastructure has a significant impact on the overall performance of the microservices application. In the instances where the microservices are composed using a classic synchronous mechanism (blocking calls, each waiting for downstream calls to return), probable performance problems appear due to the increased call-chain size. A more competent mechanism is to use an asynchronous protocol, such as JMS or any other enterprise-messaging protocol/tool (IBM MQ, MSMQ, and others) to deploy the microservices. With this approach, businesses can ensure that there are no bottlenecks in the final application system since most of the communication is through non-blocking asynchronous calls. Whereas blocking, synchronous calls are restricted to things like user-interactions. A simple rule to abide by is to avoid as many blocking calls as possible.

The implementation of microservices-based API seems to address the loopholes that arise out of monolithic SOAs. But at the same time, it is imperative to have a properly configured cloud deployment and people who can best leverage this new model to realize the complete potential of microservices. Unless this happens, there’s no possibility of exploring the full benefits of the cloud.

About the author

Sai Kumar

Associate Vice President - Digital

As a DevOps evangelist, I advocate the adoption of DevOps to the Development teams. Identify and create a Community of DevOps enthusiasts within the organization. Design and run training programs with the organization to promote and cultivate the habits of CI-CD. Evangelize DevOps both in Person and presenting online to all the visiting customers and value their views in shaping up a DevOps practice within the organization.

More articles by this author