Professional Documents
Culture Documents
Home Resources FREE EBooks QA Testing Courses Automation Types Of Testing Tutorials
Text Tutorials:
DevOps Tools:
**************************************************
Introduction To DevOps
DevOps is not just about tools but it also includes a set of best practices which enables to bridge the gap between
the development and operations teams in the areas of continuous integration and deployment by using an
integrated set of tools to automate the software delivery.
It is imperative that the developers understand the operations side and vice versa. So the goal of DevOps is
simply to help any organization in the speed of delivering applications to the end users and enabling faster end-
user feedback which is the need for any business today.
So the issue here is that if there is a change in the customer's need at this stage then there is no way to include
and deliver the changed need.
In order to address the issue of adapting to the needs of the customer changes better than in the waterfall method
was Agile adoption. The idea here was to develop a software in smaller sprints or iteration say around 2 to 3
weeks which helped the development teams to work on the end-user feedback and incorporate the changes in the
newer releases.
Hence development and operation teams must have agile in their areas of work and DevOps was born to enable
better collaboration between them.
Agile brings in processes like XP, SCRUM etc. and DevOps brings in practices like Continuous Integration,
Continuous Delivery, Continuous Testing and Continuous Monitoring which we will see in detail as we move
further in this tutorial.
People: It is very important to train and have a highly motivated team of people to be able to effectively
communicate and collaborate through this entire journey of cultural change.
Process: As we are talking about cultural change for DevOps implementation it is very much a necessity to have
practices and strategies which provide value to the customer. A proper way of doing it would be to do an AS-IS
maturity assessment, look at gaps and propose a roadmap for implementation of giving appropriate
recommendations.
I will not be talking in-depth about how I have got about doing these assessments but I will be glad to share any
inputs on the same.
Tools: Finally, it is about using the accelerators by automating the process using standard DevOps tools that are
available today. It could be Open-Source (Jenkins, Git etc.), Commercial (Microsoft TFS, VSTS, IBM Rational, Jira
etc.) or a mix of both.
Components Of DevOps
I hope by now you would have got an idea of what is DevOps.
Let’s now look at the following 4 components of DevOps which form the core from an implementation point of view
and also the organizations have developed good automation frameworks around the same offering it as a service
to their clients.
Continuous Integration
Continuous Testing
Continuous Delivery
Continuous Monitoring
I have truly believed that if a developer has to work in this mode then there should be an execution item like a
Task or a Defect (In Agile it can be a part of User Story) assigned to him to enable him to deliver the work within
the sprint timeframe.
So even before the above-listed steps can be implemented these developer Tasks or Defects should be planned
in a Sprint. So tools like JIRA, IBM Rational Team Concert, Microsoft TFS/VSTS etc. helps to create the Agile
Release / Sprint Plans.
As a developer, you work on the tasks or defects assigned to and check-in the code to a shared repository
multiple times in a day. Similarly the other members of the team also check-in the code to the shared repository.
You will then actually integrate all the work done by the team members in a common build server and perform an
automated build. Doing these integrations and automated builds on a regular basis is called Continuous
Integration.
This practice helps to detect issues very early and also ensures that all the modules which are integrated work as
required. So if you do not follow this approach then the integration of the team's work may happen once in a
month which may be late to find and fix any integration issues.
Continuous Delivery is the next step after Continuous integration. The goal of Continuous Delivery is to push the
application built into production as quickly as possible. During this process, it goes through various stages in the
lifecycle of delivery i.e. QA, Staging, Production environments etc.
This process of regularly delivering the applications built into various stages is known as Continuous Delivery.
Continuous delivery helps in quicker time to market when compared to traditional methods, lesser risk, lowering
the cost by encouraging more automation in the release process and most importantly getting faster feedback
from the end users to produce a quality product.
From my experience, I have seen that this process works fine for any kind of web application development.
I have also done a fair amount of assessments on DevOps implementations for organizations in the
semiconductor business area but due to their existing release cycle this area of Continuous Delivery does not
seem to fit it as it is more of a waterfall process that is being followed and deployments are done as and when
requested for in a customer environment.
In the above diagram, you can look at different environments available and so this provisioning of the
infrastructure for the environments can also be automated during this continuous delivery process.
From the above 2 practices, we came to know that CI and CD help to deploy the application or changes to the
production. This whole process involves proper validation of code and its integration with all the components
involved in it to ensure that the application works as envisaged and is free of bugs or defects.
So Continuous Testing is the process of running various types of automated tests starting with CI process till the
time the application is finally deployed to production.
You can see from the previous diagram that in the Continuous Integration step we integrate all of the developers
work into a common build server and also during this stage the developers would run a certain amount of unit
tests.
Once these integration and tests work without any errors, only then the application or changes are deployed to the
QA environment after applying for these quality gates and approvals.
In the QA environment, the functional tests are run and again based on the approvals it would be deployed to
staging environment which would be on parity like the production systems and acceptance tests run. Once this
activity is completed the application or the changes are finally deployed into the production systems.
So one can note here that continuous testing as an activity starts from the CI stage itself and is a very mandatory
step throughout the continuous delivery process.
As the application or changes are deployed to the production environment the operations team will look to monitor
the application and environment from an up-time, stability, availability point of view. This process is known as
Continuous monitoring.
The operations teams will have their own software’s to monitor the environment but will also need to play their part
to monitor the applications deployed for any issues. For this, they would need to work with the development teams
in order to build certain tools for analyzing the application issues.
So infrastructure, environment, and applications issues are all that monitored in the process of continuous
monitoring.
Summary
In this tutorial, we came to know what exactly the DevOps process is all about including the various components
involved in it. These components help to speed up the application delivery and also save the time to market, which
is the need of business today from a competitive point of view.
In the upcoming series of tutorials in the DevOps segment, you will have a look at the different videos/probable
DevOps tools that the teams can use and also the implementation of DevOps using certain tools for on-premise
and cloud.
And as said and done I have found DevOps implementation as an exciting one, in the way of looking from an
organizational change.
Our upcoming tutorial will explain you all about DevOps and Software Testing.
NEXT Tutorial
Recommended Reading
Eclipse Tutorial
Continuous Delivery in DevOps
Continuous Deployment in DevOps
Continuous Integration in DevOps
Continuous Testing in DevOps
Recap of DevOps Video Tutorials
DevOps Testing Tutorial: How DevOps will Impact QA Testing?
AWS CodeCommit Tutorial for DevOps Implementation in Cloud