If you are or you want to be in the DevOps world, you must know about Agile methodology. Not just DevOps, but any software developer or software project manager who develops and manages in a software development life cycle needs to know what exactly Agile methodology is.
What is Agile Methodology?
Agile is a methodology in Software Development Life Cycle (SDLC) model. It has various approaches in the development of software applications with a combination of iterative processes mainly focusing on the smooth and rapid process of development and delivering the software applications effectively and efficiently by providing customer satisfaction. In Agile, the product is broken down into small incremental builds and these builds are provided in iterations. Again all of effective development and deployment processes are possible with collaborative effort of self-organized and cross-functional teams, end users and customers.
In the earlier days, we used to have monolithic applications and all the developers used to work with huge applications altogether and this used to be an issue when they had to make any changes or update the code. There are many companies out there who are still using monolithic applications. Prior to Agile, there was another methodology which was used and that is the Waterfall model. We will not be discussing about Waterfall model now as I will restrict this post to Agile itself.
In order to know what monolithic applications are and microservices are, you should first understand the architecture of applications. I will explain more about monolithic and microservice architectures in my future posts. But for now, I will give a basic idea with their differences.
When there is a huge application and you have all the services embedded in one particular application, hosted and deployed on one huge server, then you call that a monolithic application.
In this modern world, we are using microservice architecture because the applications have become more and more complex and there are a huge number of different services that are being used in these applications in order to perform and scale better.
So let’s say there is an e-commerce website and you are working with a number of software developers and there is a requirement to update a certain service of that particular application. In this case you do not need to update the whole code and apply the whole deployment process, but instead if the microservices are used then you can only work on updating that particular service and deploy only that particular microservice. This makes life easier in terms of software development because you’re not working with the whole application but instead you’re working with exactly what you want to update. So Agile methodology is very beneficial in this kind of an approach where microservices are being used frequently by most of the software companies and developers in the current world.
Advantages / Procedures / Interactions:
The business officials and developers of the product interact daily and pay good attention in designing the product. They all collaborate together and make changes to the product in an effective and efficient way. The software delivery is persistent and tasks are divided into small incremental builds. These are called Sprints. Sprints can be clearly explained as “Set period of time during which certain work has to be completed and made ready for review.” Each sprint begins with a planning meeting. After each sprint begins, the product owner should step back and let the team do their work. Customers will receive the output frequently after each sprint is completed and this keeps the customers satisfied in a timely manner. Once the customers look at the output, they will give feedback with changes in their features, and then it can be fulfilled in the next release of the product.
Agile Principles: (from Agile Manifesto)
1. Customer Satisfaction is the priority through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development.
3. Deliver working software frequently with a preference to the shorter timescale.
4. Cooperative work culture with business people and developers throughout the project.
5. Get jobs done by motivating and giving individuals the environment, trust and support they need.
6. Conveying information in an efficient and effective manner by having face-to-face conversations.
7. Working software is the primary measure of progress.
8. Able to maintain constant pace indefinitely for sustainable development
9. Continuous attention to technical excellence and good design enhances agility
10. Simplicity — the art of maximizing the amount of work not done — is essential. 11. Best architectures, requirements, and designs emerge from self-organizing teams.
12. Regularly, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile Implementation Tools/frameworks:
There are a good number of tools/frameworks to implement Agile methodology. Some of them are
1. Scrum
2. Kanban
3. Lean
4. Crystal
5. Agile Unified Process (AUP)
6. eXtreme Programming (XP)
7. Adaptive Project Framework (APF)
8. Dynamic Systems Development Method (DSDM)
9. Feature Driven Development (FDD) and many more…
We will be discussing more about these tools and frameworks later in the future posts.
As always, please share your thoughts in the comment section below and provide feedback so that better content can be provided in the future. Thank you all…