Building successful Microservices architecture on the back of Agile SDLC
From huge, clunky supercomputers used for the most basic calculations to smartphones that compete with the fastest laptops, technology has truly transformed the way software development is looked at. Much of this change is attributed to evolving customer expectations, as convenience takes centre stage today. Modern software, thus, needs to be developed in a manner that it stands the test of time, while also ensuring customer experiences that are efficient, reliable and lightning fast. As more and more enterprises embrace agility, new age infrastructure will have to be built keeping these consumer needs in mind.
When we talk about modernized infrastructure, one terminology that has been making the rounds within software developers, is microservices (MSA). It’s long surpassed the ‘buzzword’ stage, and almost become synonymous with agility. Service oriented architecture (SoA), which MSA is a subset of, is becoming pretty popular globally. And for good reason. SoA built with microservices is essentially loosely coupled services together, that are independently deployable. This is the biggest advantage MSA has over legacy systems, since legacy systems equates to monolithic architecture, and one unstable monolith is enough to bring the whole infrastructure down. MSA, on the other hand can accumulate various services over time that can be scaled as per the enterprise’s needs.
Everything comes at a price, though, and while all of this sounds great on paper, actually building MSA is a feat in itself. You will either have to migrate from existing monolith architectures, or build it from scratch. Both of which are tricky scenarios, because they entail more than just splitting a monolith into different parts. The focus should lie on the scope of the microservice and the problem it aims to solve, rather than just making the service set smaller. The ideal way to go about this is to start with broad service boundaries and refactor to smaller ones, as per infrastructural needs. Traditional environments may not be the best for such implementations. Organizations can choose to go down the SRP route where there is limited scope for development, but utilizing agile SDLC has umpteen business benefits over this age old approach.
With agile SDLC in the mix, a cyclical progression of working software is maintained in sprints of 2–4 weeks. The whole process is thus more organized, and ensures that configuration problems, if any, are resolved on the way. It adds discipline to design, building capabilities and risk management. Not to forget the quality and speed of delivery, backed by the ‘fail fast, learn faster’ approach, that adds to incremental innovation.
In a constantly evolving digital landscape, agile is the only methodology that goes a step ahead of vertically aligned infrastructure to build something that can truly wow the customer. Functionalities are composed and defined better, holistic API integration takes place, and data & traffic is monitored in real time. This enables enterprises to track the rate of delivery with each sprint, and keep a tab of business requirements, so that you can plan ahead for your customers. MSA supports and manages rapid change. You will, therefore, need a versioning strategy for your services and interfaces in place, to avoid confusion.
While there is no particular pattern for adopting a microservices architecture, this adoption needs to be driven by decision makers for it to be successful. Before taking on the responsibility of integrating agile with microservices, enterprises need to ask themselves what they really need to focus on. Where does the enterprise lie currently on the agile progression curve? What does the existing infrastructure look like? Who is responsible for it? How many teams would be required to drive this transformation?
Answer these questions and half your work is done. If you look at it, Agile and MSA operate on the same principle: be as responsive to customer needs while maintaining high quality software. And they both align with each other. While agile methodologies aim at engineering solutions for bottlenecks in delivery, MSA aims at eliminating infrastructural bottlenecks. In a way, MSA is the best representation of the architectural phase of the agile progression. But this kind of infrastructure does not just come into being. It has to be sought. Building this is quite a challenge, but therein lies all the fun!
-Sumit Motghare is a Team Lead at iauro Systems, Pune