Agile to Devops
Why so many companies are following Agile Model?
In the past development companies use to flow waterfall model. The Major drawback of using this model is you first define the outcome according to customer needs, and then the development process runs until a “finished” product is released. The biggest problem with this approach is that the customer’s needs usually change during the development phase. Thus, you end up delivering software that doesn’t meet the revised needs, or you spend a lot of time and money in changing plans midway.
So, this problem gives the birth of Agile model. In this model develop software in small iterations and be thus able to adapt to the changing customer needs better than in Waterfall. However, this model has its hitches as well, such as
Completed software components are not compatible which each other
The budget goals and deadlines are often missed.
New features break old functions.
What is Devops? (Development + Operation)
To make things clear?—?DevOps is a methodology. The idea of this methodology is to create a new mind-set. A mind-set when developers and operations combine their efforts to achieve a common goal.
DevOps is a cultural change that allows you to break down the barrier between the development team and operations team. Instead of having two siloed teams, DevOps focuses on bringing the operations lifecycle into the same agile experience as the development teams. When adopting the DevOps philosophy, a single DevOps team will remain responsible for a product for the entire lifecycle of the product.
DevOps is the catalyst to start this cultural shift and bring the full IT team into the agile mindset. All to improve the deployment frequency, allowing a faster time to market, a lower failure rate of new releases, shortened lead time between fixes, and faster mean time recovery (disaster recovery)
Agile to Devops
some more challenges are coming such as the development team could be roughly divided
into developers?—?people who knew how to write code, and operations. For those
who still wonder?—?who on earth are those operations:
They are administrators?—?sysadmins, network admins, database admins, and all other people who know the infrastructure.
So… The operations were interested in keeping things stable to minimize the chance of software conflicts. While developers mostly cared about new features, new versions, and well, yes bug fixes. The main problem with all the above was the lack of cooperation and communication. As a result, the software couldn’t be delivered at a desired fast pace.
To overcome with these challenges, you get DevOps. With Devops developers and operations, merge them into a single team, and drive them with the idea of mutual support. DevOps methodology allows delivering software frequently with minor iterable changes.
Why the need and benefit of devops ?
The Need of devops because according to the DevOps culture, a single group of Engineers (developers, system admins, QA’s. Testers etc turned into DevOps Engineers) has end to end responsibility of the Application (Software) right from gathering the requirement to development, to testing, to automate infrastructure deployment, to automate application deployment and finally monitoring & gathering feedback from the end users, then again implementing the changes.
It all depends on the scale of the project. If your objective is to launch a minimum viable product(MVP) to test your idea, most likely you can live without DevOps practices. If your software has already reached several releases, and it’s time to start thinking about scale and competitiveness?—?think of DevOps.
Except for the cultural component DevOps methodology became possible thanks to the following approaches:
Infrastructure as code is an approach when servers can be configured automatically. The idea here is to imagine your server infrastructure more like an abstract concept. It’s easy enough as a lot of today’s servers are cloud-based. Next step is to simply describe the configuration of your servers in a configuration file. The benefits here are the following: you can configure any number of servers really fast, all the configurations are documented with the same code.
Micro-service architecture is an approach in software development when the application is divided into loosely coupled parts. Imagine you have a modern social media messaging app with chats, stories, voice calls, bots and so on. All these can be developed like independent mini applications. This approach makes it easier to maintain, test, and reuse parts of the application. On the other hand, the development process becomes more complicated because code consists of more parts. Developers should think of communication between services within applications.
DevOps loves automation. Automation is demanded by modern insanely fast operating software development industry. Dozens of continuously integrated builds are queued for a deployment….daily. There is no way you can manually test them all. Same applies to server configuration.
DevOps utilize the arsenal of tools. Most of DevOps aspects won’t be possible without tools like Jenkins, Ansible, Docker or Puppet. Still, the tools only facilitate the process and allow to achieve the goal.
Benefit of devops
A faster time to market
A lower failure rate of new releases
Shortened lead time between fixes
Faster recovery time (if a new release crashes)
Let’s Take an Example
To visualize the agile to devops or we can say need of devops even we are following agile model.
I will take a sample web application which is build in java language and this application is in microservices base architecture.
As we can see below image of sample application which is divided into three micro-services
Now when we follow Agile what will happen
Three different developing team who are developing for these three services will check-in their code on repository like
After check-in code, IT operation will start pulling code, compile code, manually deploy the build, and QA team start their automation test or manual test.
What will cause this?
- Just delaying in the release. Which is major drawback for any developing company even if we are following agile
- No roll back
- No continues monitoring, getting error logs.
- If deployment failed due to human error then again it will take lot time for deployment where testing team will have to wait for latest build.
- Sometime Developer need some configuration changes in their Dev, Stage & Production Environment. Which will be come over head for IT operation Team as they will take a lot time on manually making changes. And that will hold development, testing and most important Is release.
- So, even if we are following agile model somewhere with gap between development and IT operation software release are still seen slow.
Now, to overcome with this problem. Introduce devops in your environment.
This solution will give the speed for release with bug and zero down time pain areas.
The Continuous Integration (CI) / Continuous Development (CD) and also Continuous deployment, versioning, continuous monitoring, tools like Ansible, puppet, chief etc help to automate the system config which speed up your releases.
With the help of agile to devops 2-3 releases in week is possible and development companies always good in market. Through devops it has been observed that shipment of new release always cost lesser than simply following agile. Because the main reason is that more the time it takes for releasing more will be costly and we know that with agile to devops it will took very less time for release that is why it is cost effective way to have agile with devops.
Let’s take an example with devops having same microservices base web application, this example will give a visualization how devops help agile and the companies should introduce to have healthy development and releases process.
When the development team who are developing for these three services will check-in their code on repository like git, svn`, perforce etc. And Devops, we will introduce CI/CD in application that will automate the code pull, compile build, unit test, deploy on stage, start all smoke, regression, acceptation etc test, which will reduce the time for any manual process and quickly the software will be release without any bug, if any of the job will fail in the pipeline it will stop from shipment of release.
Even if after the deployment on production environment, the application crashes then it will automatically roll back to older version of build application with any down time.
To elaborate CI/CD, we have made practical video which can visualize how devops can help your organization.
- Once effectively underway, DevOps should give you
- Developers focused on metrics required by Ops team.
- Ops team has greater clarity on infrastructure needs.
- Automation of deployments.
- Close monitoring of the Dev – Test – Prod pipeline with immediate feedback.
- Alleviated silos and communication gaps between software engineers, QA, IT, and other parts of the business.
Author : Rishabh Gupta