Internet, data, portable devices and business models of everything-as-a-service are driving the digital transformation globally. New companies are being built and old ones are being destroyed faster than ever before. In this age, one of the key determinant factors of the success of a company, newer and older alike, is:
- How good the customer's experience of the product and the service is.
- How quickly a company can respond to the rapidly changing customer demands.
Therefore, it becomes essential for the companies to have a high level of efficiency and agility in their day to day business operations while still maintaining a focus on innovation and long-term strategic goals. Such business objectives may seem contradictory at first glance, but deep down they have become the inherent characteristic of today's successful internet companies.One of the key enablers of this sort of agility is the underlying IT infrastructure of an organization. By incorporating agility into the IT systems, application development and deployment and technology adoption; organizations can expect to respond quickly and innovate at speed never realized before. However, this task is not as easy as it seems. To understand the depth and the complexity of the problem, lets us go back in time.
The need for Microservices
Large global organizations started building their vast IT systems in the 1960s based on the technologies available in the era. However, the rate of the growth of technology (Moore’s law) was always greater than the organization's promptness to adopt them. The period 1965 -1985 was characterized by poor software quality, bugs and crashes, inefficient software, over budget, over time, and unmanageable codes. This compelled businesses to adopt a controlling approach through a tightly coupled architecture called monolithic architecture, where software development and deployment was highly centralized.
Monolithic software is designed to be self-contained and the components of the application (e.g. interfaces, business logic and databases) are tightly coupled. For the code to be executed or compiled, each component and its associated components must be present and connected.
However, the weaknesses of this approach became evident as customers started dictating the product features and the services offered by businesses. Since the components of an application were tightly coupled, a small code change in one component required the whole application to be redeployed and therefore had a significant outage time, with a negative impact on business operations and customer satisfaction. The monolithic nature ensured that these applications remained:
- Risky to expand
- Not very scalable
- Not very responsive for the end user
Therefore, businesses had to look for another more effective way of application development and deployment as IT became an enabler of business capabilities. From the early 90s onward, monolithic architecture gave way to the service-oriented architecture (SOA) - where applications were loosely coupled. This is the precursor to the today’s buzzword: microservice architecture.
What is Microservice Architecture
A microservice is a tightly scoped, strongly encapsulated, loosely coupled, independently deployable and independently scalable application component. A traditional monolith can be separated into more than one microservice with each microservice serving a particular purpose. Usually, a microservice has its own database and it interacts with other microservices through application programming interfaces (APIs).
Advantages of microservices
Advantages of Microservices include high scalability, high responsiveness to the end user, ease of development and deployment, and a minimum or no outage time. Internet-native companies such as Amazon, Google, Netflix, and Twitter sniffed out the potential of microservices early-on and became pioneers in the field. To no surprise, these companies are far ahead of their competitors in terms of customer centricity and revenue growth. The benefits of microservices are essentially accrued on the four dimensions: agility, efficiency, resilience, and revenue.
- Agility: by breaking down application functions to a near-atomic level, development teams only need to update the relevant bits of code and not worry about integration. Development time comes down to weeks and days from months.
- Efficiency: a thoughtful approach to microservices results in far more efficient use of code and underlying infrastructure.
- Resiliency: the dispersion of functionality across services means no single point of failure. An application performs much better with minimal downtime and can scale seamlessly.
- Revenue: faster iterations and less downtime adds to efficient business operations and ultimately to more revenue. Also, user retention and user engagement increase as the product continuously improves, increasing the customer lifetime value.
Drawbacks of microservices
As always, for every exciting upside, there is a downside. The peculiar characteristic of microservice that gives it many advantages also bring a lot of complexities to the businesses, for example:
- Tedious planning and design of applications
- Enhanced system complexity because of the large number of service components and points of interactions between them, increasing operational monitoring challenges
- Performance and network latency issues
- Security and operations arising due to the larger interface available for outside attacks
- Managing diverse technologies and integration challenges
- Leading organizational transformation through the development of modular agile teams
The role of enterprise architects in Microservice Adoption
An enterprise architect (EA) takes a company's business strategy and defines an IT systems architecture to support that strategy. An EA makes decisions regarding enterprise architecture artifact designs, principles, and implementation. He also drives the virtual team of solution, domain, application and infrastructure architects, resolving architecture disputes. Since 50 percent of IT projects typically do not achieve their stated goals, EAs ensure a company's technology objectives are aligned to its business goals.
The EA role becomes more important as companies adopt microservices architecture. An EA must be able to see whether the application has been built with quality and with reuse in mind. They don't need to know how to program, but they need to be able to recognize patterns and discover the use cases of emerging technologies for their businesses. An enterprise architect can help the enterprise in the following way in the adoption of microservies :
- Application portfolio prioritization for the transition from monoliths to microservices
Before the company starts venturing into microservices, it is important to think about which monoliths you want to disassemble. A phased approach would always be better as the lessons learned in earlier phases would be crucial for later phases. Enterprises will also have to think about what short-term gains they are willing to trade off for the long-term gains, as some of the operational activities may be affected or a higher investment may be required initially.
- Lean operational management of microservices
Since a monolith will be broken into many microservices, EAs will now have more service components to monitor. An EA will also have to identify the dependencies between different service components and identify failure points. All this requires real-time visualization capabilities to maintain an effective oversight. Since microservices are usually deployed through containers, it is important that the operations team evolves to handle orchestration, which typically means managing swarms of containers and monitoring their runtime behaviors.
- Ensuring Integration of microservices with critical legacy monolithic applications
Since companies usually do not convert all their monoliths to microservices at once, one must make sure that the earlier built microservices are able to interact with other legacy components. For this, it is imperative to have integration interfaces which allow this sort of integration. EAs can help in the planning and design of such integration networks.
To be successful on the above fronts, enterprise architects usually follow a phased strategic approach like the one detailed below. Enterprise architecture management tools such as LeanIX come in handy while working through these different phases:
This phase involves articulating the business benefits of microservices and building a business case. This is critical to get the necessary investments and budget allocations.
In this phase, enterprise architects do the assessment of the overall architecture. This involves the assessment of the current state, transition state and future state using frameworks such as technology choices, governance etc. Application portfolio prioritization is an important part of this phase.
This phase involves building the base capabilities needed for Microservices. Base capabilities means choosing the right technology stack, building platform capability, setting guidelines and preparing playbooks etc.
The final phase involves bringing in strong management & monitoring capabilities for microservices. Interdependency visualization, early warning messages and quick identification of failure points are some of the capabilities that the LeanIX enterprise architecture management tool can help with, taking away the substantial overhead of operational management of microservices from service owners to allow them to focus on their core domain.
Microservices architecture has the potential to revolutionize an organization's IT landscape to support business capabilities. It has been successfully adopted by the internet-native companies and has been proven to be of great benefit. However, companies in traditional industries are yet to adopt them at a scale they should. Microservices increases the agility, efficiency, and resilience of an organization's operational capabilities which transforms into higher revenue and lowers costs for an organization. Enterprise architects can act as the main driver in strategizing and overlooking the transformation of the IT landscape of their organization through microservices while leveraging the enterprise architecture management tools.
What major role have you played in the adoption of microservices at your company? Leave a comment below, we would love to hear what you have to say.