In this DevOps Tutorial blog I will take you through the following things, which will be the base of the upcoming blogs:
- What led DevOps to come into existence
- Introduction of DevOps
Let’s consider developing software in a traditional way using a Waterfall Model.
In the above diagram you will see the phases it will involve:
- In phase 1 – Complete Requirement is gathered and SRS is developed
- In phase 2 – This System is Planned and Designed using the SRS
- In phase 3 – Implementation of the System takes place
- In phase 4 – System is tested and its quality is assured
- In phase 5 – System is deployed to the end users
- In phase 6 – Regular Maintenance of the system is done
Waterfall Model Challenges
The Water-fall model worked fine and served well for many years however it had some challenges. In the following diagram the challenges of Waterfall Model are highlighted.
In the above diagram you can see that both Development and Operations had challenges in the Waterfall Model. From Developers point of view there were majorly two challenges:
After Development, the code deployment time was huge.
Pressure of work on old, pending and new code was high because development and deployment time was high.
On the other hand, Operations was also not completely satisfied. There were four major challenges they faced as per the above diagram:
It was difficult to maintain ~100% uptime of the production environment.
Infrastructure Automation tools were not very affective.
Number of severs to be monitored keeps on increasing with time and hence the complexity.
It was very difficult to provide feedback and diagnose issue in the product.
In the following diagram proposed solution to the challenges of Waterfall Model are highlighted.
In the above diagram, Probable Solutions for the issues faced by Developers and Operations are highlighted in blue. This sets the guidelines for an Ideal Software Development strategy.
From Developers point of view:
A system which enables code deployment without any delay or wait time.
A system where work happens on the current code itself i.e. development sprints are short and well planned.
From Operations point of view:
System should have at-least 99% uptime.
Tools & systems are there in place for easy administration.
Effective monitoring and feedbacks system should be there.
Better Collaboration between Development & Operations and is common requirement for Developers and Operations team.
I guess it’s time we explore what is DevOps and how it overcomes these challenges. Check out the below video on What is DevOps before you go ahead.
What is DevOps? | DevOps Training – DevOps Introduction & Tools | DevOps Tutorial | Edureka
DevOps integrates developers and operations team to improve collaboration and productivity.
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 infrastructure deployment, to application deployment and finally monitoring & gathering feedback from the end users, then again implementing the changes.
This is a never ending cycle and the logo of DevOps makes perfect sense to me. Just look at the above diagram – What could have been a better symbol than infinity to symbolize DevOps?
Now let us see how DevOps takes care of the challenges faced by Development and Operations. Below table describes how DevOps addresses Dev Challenges.
DevOps Tutorial Table 1 – Above table states how DevOps solves Dev Challenges
Going further, below table describes how DevOps addresses Ops Challenges.
DevOps Tutorial Table 2 – Above table states how DevOps solves Ops Challenges
However, you would still be wondering, how to implement DevOps. To expedite and actualize DevOps process apart from culturally accepting it, one also needs various DevOps tools like Puppet, Jenkins, GIT, Chef, Docker, Selenium, AWS etc to achieve automation at various stages which helps in achieving Continuous Development, Continuous Integration, Continuous Testing, Continuous Deployment, Continuous Monitoring to deliver a quality software to the customer at a very fast pace.
Now take a look at the below DevOps diagram with various DevOps Tools closely and try to decode it.
These tools has been categorized into various stages of DevOps. Hence it is important that I first tell you about DevOps stages and then talk more about DevOps Tools.
DevOps Lifecycle can be broadly broken down into the below DevOps Stages:
- Continuous Development
- Continuous Integration
- Continuous Testing
- Continuous Monitoring
- Virtualization and Containerization
These stages are the building blocks to achieve DevOps as a whole.
The intention of DevOps is to create better-quality software more quickly and with more reliability while causing greater communication and collaboration between teams. This is the key to understanding what is DevOps !
Leading organizations across the world have adopted DevOps methodologies to overhaul their performance, security and team dynamics. With more and more companies jumping on to the DevOps bandwagon, it has emerged as a hot skill to master in 2016. In this blog, let us find out what is DevOps and why is it such a big deal! We will do this by first tracing the evolution of software development methodologies leading to DevOps, then exploring what is DevOps and its life cycle, and finish up by evaluating how top companies such as Facebook are using DevOps to their benefit.
Evolution of Software Development
DevOps evolved from existing software development strategies/methodologies over the years in response to business needs. Let us briefly look at how these models evolved and in which scenarios they would work best.
The slow and cumbersome Waterfall model evolved into Agile which saw development teams working on the software in short sprints lasting not more than two weeks. Having such a short release cycle helped the development team work on client feedback and incorporate it along with bug fixes in the next release. While this Agile SCRUM approach brought agility to development, it was lost on Operations which did not come up to speed with Agile practices. Lack of collaboration between Developers and Operations Engineers still slowed down the development process and releases. DevOps methodology was born out of this need for better collaboration and faster delivery. DevOps enables continuous software delivery with less complex problems to fix and faster resolution of problems.
Now that we have understood the evolution of DevOps, let us look at what is DevOps in detail.
What is DevOps ?
DevOps is a Software Development approach which involves Continuous Development, Continuous Testing, Continuous Integration, Continuous Deployment and Continuous Monitoring of the software throughout its development life cycle. These activities are possible only in DevOps, not Agile or waterfall, and this is why Facebook and other top companies have chosen DevOps as the way forward for their business goals. DevOps is the preferred approach to develop high quality software in shorter development cycles which results in greater customer satisfaction. Check out the below video on What is DevOps before you go ahead.
What is DevOps ? | DevOps Training – DevOps Introduction & Tools | DevOps Tutorial | Edureka
Your understanding of what is DevOps is incomplete without learning about its life cycle. Let us now look at the DevOps life cycle and explore how they are related to the Software Development stages depicted in the diagram below.
These DevOps stages are carried out on loop continuously until the desired product quality is achieved. The diagram given below will show you which tools can be used in which stage of the DevOps life cycle.
Now that we have established the significance of DevOps and learnt about its different stages along with the DevOps tools involved, let us now look at a Facebook case study and understand why they moved from Agile to DevOps. We will do this by taking up the use case of Facebook’s 2011 roll-out of new features that resulted in them reassessing their product delivery and taking on the DevOps approach. But before go through the below video on DevOps Tools.
DevOps Tools | Automation using DevOps Tools | DevOps Training | DevOps Tutorial | Edureka
DevOps Case Study: Facebook
In 2011, Facebook rolled out a slew of new features – timeline, ticker and music functionalities – to its 500 million users spread across the globe. The huge traffic that was generated on Facebook following the release led to a server meltdown. The features that were rolled out garnered mixed response from users which led to inconclusive results of the effectiveness of the new features, leaving them with no actionable insights.
This led to an evaluation and reassessment of strategies, resulting in Facebook coming up with the Dark Launching Technique. Using the DevOps principles, Facebook created the following methodology for the launch of its new releases.
Facebook Dark Launching Technique
Dark launching is the process of gradually rolling out production-ready features to a select set of users before a full release. This allows development teams to get user feedback early on, test bugs, and also stress test infrastructure performance. A direct result of continuous delivery, this method of release helps in faster, more iterative releases that ensure that application performance does not get affected and that the release is well received by customers.
In the Dark Launching technique, features are released to a small user base through a dedicated deployment pipeline. In the below given diagram of Facebook Dark Launch, you can see that that only one deployment pipeline is turned on to deploy the new features to a select set of users. The remaining hundreds of pipelines are all turned off at this point. The specific user base on which the features have been deployed are continuously monitored to collect feedback and identify bugs. These bugs and feedback will be incorporated in development, tested and deployed on the same user base until the features becomes stable. Once stability is achieved, the features will be gradually deployed on other user bases by turning on other deployment pipelines.
Facebook does this by wrapping code in a feature flag or feature toggle which is used to control who gets to see the new feature and when. This exposes pain points and areas of the application’s infrastructure that needs attention prior to the full-fledged launch while still simulating the full effect of launching the code to users. Once the features are stable, they are deployed to the rest of the users over multiple releases.
This way Facebook has a controlled or stable mechanism for developing new functionality to its massive user base. On the contrary if the feature does not get a good response they have an option to rollback on their deployments altogether. This also helps them to prepare their servers for deployment as they can predict the user activity on their website and they can scale up their servers accordingly. The diagram given above depicts how a dark launch takes place at Facebook.
Facebook, Amazon, Netflix and Google, along with many leading tech giants, use dark launches to gradually release and test new features to a small set of their users before releasing to everyone.
The intention of DevOps is to create better-quality software more quickly and with more reliability while inviting greater communication and collaboration between teams. It is also an automation process that allows quick, safe and high quality software development and release while keeping all the stakeholders in the loop. This is the real reason why DevOps is seeing an all-time high adoption leading to increasing career opportunities in DevOps.