This is a complete DevOps tutorial series of 25+ text and video tutorials covering all the aspects of the DevOps like What is DevOps, DevOps principles, and its Architect.
List of Tutorials in DevOps Training Series:
#1) Introduction to DevOps (This Tutorial)
DevOps VIDEO Tutorials:
#3) Video Tutorial 1: DevOps background, definition, value, benefits, habits and best practices
- Part 1 Block 1 – Demystifying DevOps
#4) Video tutorial 2: DevOps practices based on the Agile Principles, source control, and DevOps Automation
This video tutorial is divided into 6 blocks:
- Part 2 Block 1 – DevOps Practice based on Agile Manifesto
- Part 2 Block 2 – Source and Version Control in DevOps
- Part 2 Block 3 – Automation in DevOps
- Part 2 Block 4 – Small increments of Deliveries in DevOps
- Part 2 Block 5 – Collaboration in DevOps Teams
- Part 2 Block 6 – How to Develop Collaboration in DevOps Teams
#5) Video tutorial 3: DevOps processes Continuous Integration, Continuous testing, and Continuous Delivery
This video tutorial is divided into 4 blocks:
- Part 3 Block 1 – Continuous Integration in DevOps
- Part 3 Block 2 – Continuous Delivery in DevOps
- Part 3 Block 3 – Continuous Deployment in DevOps
- Part 3 Block 4 – Continuous Testing in DevOps
#6) Video tutorial 4: DevOps Configuration Management and live application performance monitoring
This video tutorial is divided into 3 blocks:
- Part 4 Block 1 – Configuration Management in DevOps Practices
- Part 4 Block 2 – Release Management in DevOps
- Part 4 Block 3 – Application Performance Monitoring in DevOps
#7) Video tutorial 5: Recap of the entire course.
- Part 5 Block 1 – Recap of DevOps Video Tutorials
Microsoft VSTS Tutorial:
AWS DevOps Tools:
Ansible for DevOps:
Let's start with the first tutorial in this series.
What You Will Learn:
Introduction to DevOps
DevOps is not just about tools but it also includes a set of best practices that 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.
Overview of Agile and DevOps
There is no difference between Agile and DevOps. Instead, they complement each other. Let’s start by looking at the Waterfall model where all the requirements are frozen, and design & development are done one after the other until a stable product is available.
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.
Is DevOps only about Tools?
In a way, you may argue that to implement DevOps you need tools. It is true but tools are only accelerators.
But actually, it is about the following 3 aspects:
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.
Let’s now take a look at each of these components in detail.
#1) Continuous Integration
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.
Sample Continuous Integration workflow:
#2) Continuous Delivery
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.
Sample Continuous Delivery Workflow:
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.
#3) Continuous Testing
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.
Sample Testing workflow in the continuous delivery process:
#4) Continuous Monitoring
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.
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.