Tuesday 18 October 2016

What is DevOps? A Beginner’s Guide To Understanding DevOps And Its Evolution

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 areusing 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.
software-development models-what-is-devops
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.
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.
devops-cycle-what-is-devops

Continuous Development:

This is the stage in the DevOps life cycle where the Software is developed continuously. Unlike the Waterfall model the software deliverables are broken down into multiple sprints of short development cycles, developed and then delivered in a very short time. This stage involves the Coding and Building phases and makes use of tools such as Git and SVN for maintaining the different versions of the code, and tools like Ant, Maven, Gradle for building / packaging the code into an executable file that can be forwarded to the QAs for testing.

Continuous Testing:

It is the stage where the developed software is continuously tested for bugs. For Continuous testing testing automation tools like Selenium, JUnit etc are used. These tools enables the QA’s for testing multiple code-bases thoroughly in parallel to ensure that there are no flaws in the functionality. In this phase use of Docker containers for simulating testing environment on the fly, is also a preferred choice. Once the code is tested, it is continuously integrated with the existing code.

Continuous Integration:

This is the stage where the code supporting new functionality is integrated with the existing code. Since there is continuous development of software, the updated code needs to be integrated continuously as well as smoothly with the systems to reflect changes to the end users. The changed code, should also ensure that there are no errors in the runtime environment, allowing us to test the changes and check how it reacts with other changes. Jenkins is a very popular tool used for Continuous Integration. Using Jenkins one can pull the latest code revision from GIT repository and produce a build which can finally be deployed to test or production server. It can be set to trigger a new build automatically as soon as there is change in the GIT repository or can be triggered manually on click of a button.

Continuous Deployment:

It is the stage where the code is deployed to the production environment. Here we ensure that the code is correctly deployed on all the servers. If there is any addition of functionality or a new feature is introduced then one should be ready to welcome greater website traffic. So it is also the responsibility of the SysAdmin to scale up the servers to host more users. Since the new code is deployed on a continuous basis, automation tools play an important role for executing tasks quickly and frequently. Puppet, Chef, SaltStack and Ansible are some popular tools that are used in this stage.

Continuous Monitoring:

This is a very crucial stage in the DevOps life cycle which is aimed at improving the quality of the software by monitoring its performance. This practice involves the participation of the Operations team who will monitor the user activity for bugs / any improper behavior of the system. This can also be achieved by making use of dedicated monitoring tools which will continuously monitor the application performance and highlight issues. Some popular tools used are Nagios, NewRelic and Sensu. These tools help you monitor the application and the servers closely to check the health of the system proactively. They can also improve productivity and increase the reliability of the systems, reducing IT support costs. Any major issues found could be reported to the Development team so that it can be fixed in the continuous development phase.
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.
DevOps-tools-what-is-devops
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.

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.
Facebook-case-study-what-is-devops
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.
dark-launching-methodology-what-is-devops

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.
Facebook-dark-launch-what-is-devops
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.
Here’s a short DevOps tutorial that explains what is DevOps and how Facebook uses DevOps for increased performance.
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.
Now that you have understood what is DevOps, check out the DevOps training by Edureka, a trusted online learning company with a network of more than 250,000 satisfied learners spread across the globe. The Edureka DevOps Certification Training course helps learners gain expertise in various DevOps processes and tools such as Puppet, Jenkins, Nagios and GIT for automating multiple steps in SDLC, Ansible, SaltStack and Chef.
Got a question for us? Please mention it in the comments section and we will get back to you.

13 comments:

  1. Really cool post, highly informative and professionally written and I am glad to be a visitor of this perfect blog, thank you for this rare info!
    Devops Online Training

    ReplyDelete
  2. I really appreciate information shared above. It’s of great help. If someone want to learn Online (Virtual) instructor lead live training in DEVOPS, kindly contact us http://www.maxmunus.com/contact
    MaxMunus Offer World Class Virtual Instructor led training on DEVOPS. We have industry expert trainer. We provide Training Material and Software Support. MaxMunus has successfully conducted 100000+ trainings in India, USA, UK, Australlia, Switzerland, Qatar, Saudi Arabia, Bangladesh, Bahrain and UAE etc.
    For Demo Contact us.
    Saurabh Srivastava
    MaxMunus
    E-mail: saurabh@maxmunus.com
    Skype id: saurabhmaxmunus
    Ph:+91 8553576305 / 080 - 41103383
    http://www.maxmunus.com/


    ReplyDelete
  3. Well it was nice post and very helpful information on DevOps Online Training Hyderabad

    ReplyDelete
  4. Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging…
    Devops Online Training

    ReplyDelete
  5. Everyone wants to get unique place in the IT industry’s for that you need to upgrade your skills, your blog helps me improvise my skill set to get good career, keep sharing your thoughts with us.


    Devops Training in Marathahalli|

    Devops Training in Bangalore|

    ReplyDelete
  6. Excellent information with unique content and it is very useful to know about the information based on blogs . DevOps Course | AWS/Python Training in Bangalore

    ReplyDelete
  7. well! Thanks for providing a good stuff related to DevOps Explination is good, nice Article
    anyone want to learn advance devops tools or devops online training
    DevOps Online Training

    ReplyDelete

  8. Thank you for providing such an awesome article and it is very useful blog for others to read.
    Devops Training in Delhi
    Devops Course in Delhi

    ReplyDelete
  9. i learned a something with this best tutorial pl sql online training

    ReplyDelete
  10. Valuable post useful for everyone.Keep on sharing.
    DevOpS Online Training

    ReplyDelete
  11. Hi wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck.
    DevOps Test Engineering Certification Training

    ReplyDelete
  12. Thanks for sharing this informative article on What is DevOps? A Beginner’s Guide To Understanding DevOps And Its Evolution. If you want to devops services for your project. Please visit us.

    ReplyDelete