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:
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.
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:
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.
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 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.
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:
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 :
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:
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.