The world of enterprise software development came of age with the emergence of ‘single purpose’ software applications aligned to a specific business function. It started with accounting programmes in finance, but with time, many areas such as manufacturing, supply chain and inventory management were also able to benefit from the emergence of purpose-built applications.
Monolithic structures like ERPs, for instance, were designed to increase efficiency by transmitting information across business functions. Problems started creeping in, however, when businesses customised these applications to cater to their own unique requirements. More often than not, increased customisation rendered these applications slow and clunky since they were too rigid to scale, making frequent iterations difficult. The IT department that was supposed to incite productivity became the reason for falling behind.
From a software lifecycle management perspective, monoliths carry larger risk than smaller applications. Implementing, updating and maintaining these applications can be a daunting task since there are so many moving parts that require constant attention. So how can businesses overcome this? The answer – microservices.
Rewiring software architectures
In short, the microservices approach to software development means building applications with lots of smaller, modular parts – allowing enterprises to create software that’s more agile and independently scalable. For example, if a business is shifting a monolith application to the cloud, it means relocating the same clunky software architecture on a separate system, along with all the shortfalls. This is why it’s important to build nimble and agile applications that can engage customers quickly and meet demands as soon as they appear.
A recent Camunda survey reveals that 63 per cent of companies are currently using microservices architecture. A further 60 per cent are doing so to attain faster turn-around times for new services and products, and 54 per cent to drive digital transformation and next-gen applications. What’s more, it’s easy to see why. Microservices allow companies to deploy application functionalities as discreet lightweight services, which interact with businesses through application programme interfaces (APIs). This allows businesses to deliver small application changes incrementally while speeding up delivery and reducing service disruptions, since if something needs changing, one ‘module’ can be removed rather than having to rewire the whole application. Considering that mobile and other digital applications are extremely dynamic and require frequent updates, microservices prove to be extremely effective there too.
This said, microservices architecture doesn’t entail combining several software components together. Rather, it involves the seamless integration of independent application functionalities that can communicate with each other through APIs. These interfaces allow enterprises to escape monoliths, as they serve as a ´contract’ between microservices.
To simplify their transition from a monolithic to microservices architecture, enterprises need a roadmap in place, specifically an ‘A-B-C’ approach:
- Abstract: Creating a layer of abstraction (or API layer) to access the capabilities required to service the customers, employees, partners, and machines
- Build: Aligning these capabilities to improve user experience, while separating the experience from how systems are architected
- Change: Breaking down the back-end services to more manageable microservices
The challenges that come with adoption – and how to overcome them
This simplified path to adoption may mean microservices is poised to become the default model of software lifecycle management going forward. However, according to a survey from Lightstep, a whopping 99 per cent of organisations have reported challenges when adopting microservices.
For one, for microservices to perform at its full potential in terms of speed and consistency, continuous integration, testing, and delivery processes are required. One way to overcome this would be to deploy a service virtualisation strategy. This can help developers and testers to quickly simulate testing environments (even if the production environment is complex), reduce dependencies and allow ease of integration.
Also, with a microservices architecture that’s driven by APIs, organisations might have to keep track of hundreds of services running simultaneously. In such circumstances, monitoring even the smallest of changes in an application is tough, which is why developers should embed telemetry and analytics into the platform to simplify operations and change management.
Finally, it’s vital that every team involved in the microservices value chain takes responsibility for securing the services. Ensuring that calls are always routed through a secure service API gateway helps establish consistent security policies. In short, teams developing microservices should care just as much about ensuring quality, operating and securing the software as much as developing it.
Time for change
Software architecture design might not appeal to all decision-makers across the board, but whether they like it or not, software applications now lie at the core of how a business operates. Their nimbleness, overall performance and resilience directly impacts business agility and ultimately revenue.
Microservices represent a radical shift in how organisations approach application development while moving to a software-centric model. If one’s thing’s for sure, it’s that it’s time for businesses to start exploring its potential to redefine the services they deliver to their customers.
Ananth Subramanya, VP Digital and Analytics, HCL Technologies