To kick start digital presence, many companies have invested in monolithic, commercial off- the- shelf applications. While implementing agile, most of them started to implement build, test and deployment automation for these applications to meet the agile release cycles, without reassessing the suitability of their application architecture. Now companies are moving towards architectures that are more flexible, resilient and scalable with a shorter time-to-market. This article explores the critical software development trends that empower companies to remain competitive.
Limitations of the Traditional Technology Stack
Even though this automation in some cases significantly improved time-to-market, fundamental issues are preventing further time-to-market and agility improvement.
Firstly, these monolithic applications have a lot of tightly coupled components. Working in distributed teams is limited by code dependencies. To give some examples: a developer cannot change part of code because another team member is also working on it or when he changes code in one component he needs to update many other, dependent, components as well. Due to this scaling up development soon reaches a limit. This means that an organization is losing its agility and, hence, its ability to compete.
Secondly, for these monolithic systems we often see that the time between writing code and being able to test it is in the magnitude of minutes rather than seconds. This is due to the complexity and technologies used in these applications. Typically, a developer wants to validate what he is doing hundreds of times every day. As one can imagine the lack of iteration speed is a key bottleneck in increasing development productivity.
Another aspect of monolithic systems is that, in general, it is only possible to scale them by creating an extra instance of the entire application, instead of just an instance of the component that is stressed the most. Due to this, scaling these applications is rather expensive in terms of computing resources.
Next to this, these applications are often not very resilient. When one component stops functioning, or is overloaded, the whole application is affected. Leading to a poor user experience.
An Architecture Paradigm Focused on Increasing Productivity and Agility
To overcome the above-mentioned limits, front running companies such as Netflix, LinkedIn, Amazon, Zalando and Google have started to move away from monolithic architectures in favor of so called microservice architectures.
A microservice architecture consists of a set of services that is providing the application functionalities. Each service has a small granularity and the protocols used are lightweight.
For every service one can use the best technology stack for the service it is providing. As the services have a small granularity they can be extremely lightweight, which leads to a very short time between writing code and testing the result, leading to a high development productivity. Next to this, these services are easy to maintain as the scope of a single service is rather small, resulting in low complexity per service. As mentioned before this is key in ensuring maintainability and increasing developer productivity.
As these services are fine grained, scaling your development team into multiple distributed teams works much better than for a monolith. From a performance perspective, each service can be scaled individually. This means that only for the services that are stressed extra instances need to be provided, which results in a far better utilization of resources.
Another trend is to decouple services so they can act autonomously. To do so, a service contains all the data it needs to offer its service to the outside world. Application state is synchronized across services by using an event bus. This results in more robust services and a more responsive architecture as direct dependencies between services are removed.
The characteristics mentioned above make microservices a key enabler for the implementation of proper DevOps and Agile processes. As one can imagine microservices do not come without costs. The complexity of the architecture increases a lot as there are many services one needs to consider. The good news is that the community, including big, front running, companies like Netflix, Google and LinkedIn, has been open sourcing tooling that allows for managing this complexity.
These tools mature further to the extent that microservice architectures become ready to be used by a broader audience. In the next years, we expect to see many companies moving towards a microservice architecture. Companies will start moving out components from their monoliths that are most subject to change within their digital landscape. Later on, legacy backend systems will be rebuilt according to this paradigm. Companies that not make the shift will fall behind the competition as they will not be able to meet the time-to-market, speed of services and productivity of their competitors.
This article is part of the Urgent Future IT Forecast 2017.