DevOps tutorial—an introduction
There are many different stages, concepts and components in DevOps and this DevOps tutorial is a great way to learn what DevOps is and how it can help improve your software delivery process.
To begin this DevOps tutorial, we will introduce some basic definitions to help you understand what DevOps is and how it relates to your overall software development process.
DevOps is a software development practice that promotes collaboration between development and operations, resulting in faster and more reliable software delivery. Commonly referred to as a culture, DevOps connects people, process, and technology to deliver continuous value.
The software development process can be a highly manual process, resulting in a significant number of code errors. Development and operations teams can often be out of sync, which can slow software delivery and disappoint business stakeholders. DevOps creates efficiency across all tasks involved in the development, deployment and maintenance of software.
Connecting development and operations leads to increased visibility, more accurate requirements, improved communication and faster time to market.
DevOps bridges the gap between development and operations, creating significant efficiencies across the development and deployment of software. DevOps includes a strong emphasis on automation, helping reduce the overall number of errors.
The philosophy of DevOps is to take end-to-end responsibility across all aspects of the project. Unlike more traditional methods of developing software, DevOps bridges the gap between development and operations teams—something that is often missing and can heavily impede the process of software delivery.
Providing a comprehensive framework to develop and release software, DevOps connects development and operations teams—a gap that can create challenges and inefficiencies in software delivery.
Although both DevOps and agile are software development practices, they each have a slightly different focus. DevOps is a culture that focuses on creating efficiency for all stakeholders involved in the development, deployment and maintenance of software. Agile is a lean manufacturing process that helps provide a software development production framework. Agile is often specific to the development team, where the scope of DevOps extends to all stakeholders involved in the production and maintenance of software. DevOps and agile can be used together to create a highly efficient software development environment.
Deepen your DevOps learning with these tasks
Each section in this DevOps tutorial includes a few tasks to help you take steps toward building a DevOps practice. Take a moment to answer the following questions:
- What are some of the challenges you have faced in the development and deployment of software?
- In what areas would you like to see improvements in efficiency as you develop and deploy software?
The fundamentals of a DevOps practice
Next in this DevOps handbook is to gain an understanding of the main concepts used in a DevOps practice. This section will help explain and clarify the main components.
Commonly used in software teams, agile development is a delivery approach that relates to lean manufacturing. The development is completed in short, incremental sprints. Although it is different than DevOps, the two approaches are not mutually exclusive—agile practices and tools can help drive efficiencies within the development team, contributing to the overall DevOps culture.
With a team working together, version control is a crucial part of accurate, efficient software development. A version control system—such as Git—takes a snapshot of your files, letting you permanently go back to any version at any time. With a version control system, you can be confident you will not run into conflicts with the changes you are working on.
Continuous integration is the process of automating builds and testing that occur as the code is completed and committed to the system. Once the code is committed, it follows an automated process that provides validation—and then commits only tested and validated code into the main source code, which is often referred to as the master branch, main or trunk. Continuous integration automates this process, which leads to significant efficiencies. Any bugs are identified early on, prior to merging any code with the master branch.
Continuous delivery is the fundamental practice that occurs within DevOps enabling the delivery of fast, reliable software. While the process is similar to the overarching concept of DevOps, continuous delivery is the framework where every component of code is tested, validated and committed as they are completed, resulting in the ability to deliver software at any time. Continuous integration is a process that is a component of continuous delivery.
Whether on premises or in the cloud, the provisioning and configuration of resources is a key part of environment operations. Through process automation and the use of tools that provide a declarative definition of infrastructure—for example, text-based definition files—teams can deploy and configure resources in a reliable, repeatable way. The text-based definition files can be managed as code with version control, allowing for easy rollback, re-creation and teardown of complex environments. Technologies such as Terraform or Ansible are common solutions for the implementation of infrastructure as code.
The scope of DevOps goes beyond development, maintaining responsibility for the software through delivery, including software performance. The entire process of DevOps creates a feedback loop, ultimately providing data points that can both help improve a future project and validate the decision to deploy the software. Monitoring and logging are key components that support validated learning, which then supports the overall initiative to consistently strive toward greater efficiency in the software development and delivery process.
Throughout the lifecycle, feedback and telemetry data is gathered to help inform decisions for the next cycle. This information is referred to as validated learning. Validated learning helps provide insight into new ways to reduce the amount of time per cycle. The gathered data is then used to find ways to increase automation, improve processes and prepare for deployment more quickly and efficiently.
Deepen your DevOps learning with these tasks
Now that you have learned the key concepts in a DevOps practice, take a moment to answer the following questions:
- What parts of your development process are manual and could benefit from automation?
- Are there opportunities to introduce continuous integration within your team’s build process?
- How is your team managing infrastructure today? Is the process repeatable and reliable or could the process be improved using infrastructure as code?
- What telemetry data would help inform your work?
- What other data points would support your validated learning?
Building your DevOps culture
The next part of this DevOps tutorial is discussing how to build a DevOps culture. As you prepare to bring DevOps into your business, you will likely encounter differences from your current approach to software delivery.
Building a new culture does not happen overnight and is not as simple as buying a new set of tools. To enable your team to learn and practice DevOps, you may need to make changes to your current team structures, workflows and habits.
Deepen your DevOps learning with these tasks
As you consider building a DevOps culture in your business, take a moment to answer the following questions:
- DevOps helps coordinate all stakeholders in the development, delivery and maintenance of software: In your organisation, who will this include? Create a list of all the individuals who will be working together.
- What ways can you increase communication between development and operations? Brainstorm a few ways to improve stakeholder cooperation.
Additional DevOps tutorials
If you want to explore DevOps further, take a deeper dive by trying some of these DevOps tutorials.
Explore these videos to gain a deeper understanding of DevOps beyond this handbook. Learn how to fully integrate DevOps into your software development process.
Introduction to Azure DevOps
Take a tour of the features and capabilities of Azure DevOps with Donovan Brown.
Building and deploying your code with Azure Pipelines
Learn why Azure Pipelines is a great tool to manage continuous integration and continuous deployment (CI/CD) of your code.
Introduction to using HashiCorp Terraform with Azure
Take this quick DevOps tutorial to learn how to get Terraform set up and configured to manage Azure infrastructure as code.
Get started with Azure DevOps
Deliver software faster and more reliably with a modern set of development services. Plan smarter, collaborate better and ship faster—use all the DevOps features, or choose the ones that are right for you.