How Micro Services Framework Promote Agile & DevOps?
Abstract
Due to rapid eruption of new disrupting technologies and changing market demands operations (business) teams expect supporting IT applications should also change with lightening swiftness. Traditional SDLC or hybrid iterative models fail to address this challenge as they all focus on capturing and freezing the requirements upfront. This results in exhaustive requirement specifications given by operations peoples with minimal interaction with development teams that too only at the beginning of the project. That result in large monolith application with multiple functionalities tightly bundled together which cause multiple performances, maintenance, usability issues.
Agile and DevOps methodology addresses frequent changing requirements through small sprint size and increased operations and developer community interaction. Micro services addresses the how part of it, through development of multiple, modular, micro services providing various features of the system
Background
As we know when traditional waterfall model is followed for development of mid-size to large system. Exhaustive requirements are collected first by business people, followed by architecture and design by architects followed by development, testing and deployment by developers, testers and operations people respectively.
In this process as we can notice different stakeholders are involved at different phase of time in the project and there is minimal scope of exhaustive interaction between them. This leads to development of large monolith application after a long lead time.
Long lead time results in
- Outdated product by the time it is released - due to rapidly changing business needs
- High risk till final product is delivered as business peoples have no visibility on how project is progressing
- Exhaustive requirements specifications
- Operations and development team work in silos
- Tight coupling leads to poor maintainability & scalability
- Portability and deployment challenges due to large size
- Sluggish releases
AGILE – DevOps @ Rescue
The challenges mentioned above could be addressed through deployment of agile and DevOps methodologies. As:
- The agile approach sought to remove the overhead and risk of large-scale software development by using smaller work increments, frequent iterations, and prototyping as a means of collaboration with users.
- Agile/DevOps, also led to the popularization of continuous integration (CI) in the software industry, a common practice from extreme programming. CI sought to combine software components as early in the lifecycle as possible in order to minimize the impact of code integration issues.
- Latest models integrated ‘Continuous Deployment’ (CD) as well. Agile’s primary scope was on the development of software, while CD extended that scope to include production deployment, an operations task.
- Organizations found that combining development and operations responsibilities in the same team led to highly effective continuous delivery practices. As collaboration increased between Dev and ops team, so did empathy.
- Developers designed solutions that included an operational perspective from the outset, and operations people used an engineering approach to tackle problems that were previously dealt with procedurally. Greater use of automation in day-to-day tasks resulted in greater system stability and resilience.
- In agile software architecture, we tend to think of something that is built using a collection of small, loosely coupled components/services that collaborate together to satisfy an end-goal. This style of architecture provides agility in a number of ways. Small, loosely coupled components/services can be built, modified and tested in isolation, or even ripped out and replaced depending on how requirements change. This style of architecture also lends itself well to a very flexible and adaptable deployment model, since new components/services can be added and scaled if needed.
Micro Services
Agile says divide large complex work in to small simple tasks – Micro services also focus on breaking large complex system in to small simple cluster of micro services.
Agile stresses on incremental and iterative development – Development of incremental micro services framework with iteration and retrospective of amount of work done complies the same
Agile encourages frequent and exhaustive co-ordination between business people, operations people and developers and while development of micro services framework this can be ensured without any issue.
If we look at agile manifesto in detail we find development of micro services framework easily gels with the same as shown in table below:
But, Are micro services practical?
Yes, they are proven and practical. Companies like companies like Amazon, Netflix, SoundCloud, and Gilt (now part of HBC Digital) encountered an architectural bottleneck when they reached a certain scale.
This barrier motivated them to focus on the architecture and other IT services. In this endeavor, they decomposed their monolithic applications to tiny, modular micro services that interact via Restful API and other network-based messaging protocols.
As we can see in diagram given below using micro services provide:
- Define precise Spring Backlog
- Better and frequent Interaction between operations and development teams
- Reduced risk
- Incremental evolution
- Portable and easy to deploy on different environments (cloud, in premise)
Conclusion
Micro services is a not a theoretical concept but it’s a successful case study that evolved over the period of time.
Through implementation of micro services architecture one can deploy agile and DevOps practices effectively with minimal efforts that leads to fastest development of quality software product and achieve highest customer satisfaction.
Principal Machine Learning Lead @Cleareye.ai Gen AI | NLP | Vision | Recommender Engine | Spark ML Sklearn Pandas Machine Learning | Deep Learning | GNN | Mlflow | Azure ML | Sagemaker | Agentic AI | Langraph
8yNice article