Learning DevOps is a FUN - II
Tags: devops
Published: 2020-06-25 12:43:58

In the previous article of this series, we learnt about what is DevOps and its history. In this article, we will understand DevOps’ background and how it is going to add value in your organization and day to day life. 
In this article, we will be reading about – 
•	Challenges that DevOps solve
•	Pre-DevOps Scenario
•	DevOps Goals 


Challenges That DevOps Solve
Prior to DevOps application development, teams were in charge of gathering business requirements for a software program and writing code. Then a separate QA team tests the program in an isolated environment, if requirements were met, releases the code for operations to deploy. The deployment teams are further fragmented into soiled groups like networking and database. Each time a software program is “thrown over the wall” to an independent team, it adds bottlenecks. The problem with this is when the teams works separately –
•	Dev is often unaware of QA and Ops roadblocks that prevent the program from working as anticipated.
•	QA and Ops are typically working across many features and have a little context of the business purpose and value of the software.
•	Each group has opposing goals that can lead to inefficiency and finger-pointing when something goes wrong.
These are a couple of scenarios which are solved by DevOps, making the whole process seamless from execution to deployment, with the help of the tools.
According to the Xebia Labs – there is this whole periodic tables of DevOps tools, shown as below –

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/kzdlkruv1bol6hjq7ljk.png) 

There is a whole suite of tools available to perform DevOps, you will have to learn about how to use, what tools and when to use them. 

Pre-DevOps Scenario and How DevOps helps
A very common pre-DevOps scenario – the software tea meets prior to starting a new software project. The team includes developers, testers, operations and support professionals. This team plans how to create working software that is ready for deployment. The dev Team that has a goal to ship as many features kicks a new release to QA, then the tester’s goal is to find as many bugs as possible. When the testers bring their findings to Dev, the developers become defensive and blame the testers that are testing the environment for bugs. The testers respond that it isn’t their testing environment, but the developer’s code that is the problem. 
Eventually, the issues get worked out and QA kicks the debugged new releases to Ops. The Ops team’s goal is to limit changes to their system, but they apprehensively release the code and system crashes, and the finger-pointing resumes. Ops says that the Dev provided them faulty artefacts. Dev says everything worked fine in the test environment. The fire drills begin to debug the system and get the production stable. The production environment is not Dev’s and QA’s responsibility, so they keep their hands off while Ops spends all night fixing the production issues.
Now how DevOps helps this – each new code is deployed as the developers complete it. Automation testing ensures that the code is ready to be deployed. After the code passes all the automation testing it is deployed to a small number of users, let’s say the UAT environment. This piece of code is monitored for a short period of time to ensure that there are no unforeseen problems and it definitely has to be stable. This new piece of code is then proliferated to the remaining users once the monitoring shows that it is stable. And the best of all – many of these steps after planning and development are done with no human interactions.
DevOps Goals
According to 2015 State of DevOps report – high performing IT organizations deploy 30x more frequently with 200x shorter lead times; they have 60x fewer failure and recover close to 150x faster.
It is imperative and important that the collaboration between all stakeholder right from the planning through development and delivery and automation of the delivery process. DevOps help in achieving these goals –
•	Achieve faster time to market
•	Lower failure rates of the new ad upcoming releases
•	Shorten lead-time between the fixes
•	Improve mean time to recovery and
•	Most importantly, it helps improve deployment frequency with the help of Continuous -Integration, Delivery and Deployment.
To achieve DevOps Nirvana, you have to identify, where are you on DevOps continuum, DevOps Continuum is basically a helpful way to look at the different aspects of DevOps. The bottom horizontal axis represents what people perceive DevOps to fundamentally be focused on. Some folks adamantly feel that DevOps should focus on culture more than tools while other folks think that tools add value over culture. 
My take is – irrespective of what tools you are using, DevOps is more like a mindset, so we should more focus on developing the DevOps culture.
 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8l6mj7obj5tbzqkdesy3.jpg)

The vertical axis depicts three levels of DevOps delivery chain – Continuous Integration, Continuous Delivery and Continuous Deployment. 
You have to understand these concepts and then implement it in your project, product or organisation. According to a recent poll, participants indicated where their organisation fit on the continuum.
•	55% bottom left
•	26% bottom right
•	14% top left
•	5% top right
Now, you understand that DevOps is basically a blend of culture, tools and maturity that make sense for your organisation and what will make sense most likely evolve over time. The most important thing is to continually strive to break down the walls and bottlenecks between the phases of software delivery by improving collaboration and automation.

Happy Learning!!