What is DevOps?
The Business Value of DevOps
Who's using DevOps?
The course is part of these learning paths
Modern software systems are becoming increasingly complex, to meet quality, availability, and security demands. And these systems are changing rapidly to keep up with the needs of end-users. With all of the changes, how do you ensure stability, quality, security, and innovation? In this course, we look at how the DevOps philosophy can provide a holistic way to look at software development, deployment, and operations. And we will provide some tenets to help improve quality and stability.
You will gain the following skills by completing this course:
- Learn why automation, culture, and metrics are essential to a successful DevOps project
- Learn how DevOps can positively impact your business's bottom line
- Learn which major companies are successfully utilizing DevOps in their own engineering processes
You should take this course if you are:
- A newcomer to the DevOps or cloud world
- Looking to upgrade your skills from a conventional software development career
This Course Includes
- Expert-guided lectures about DevOps
- 1 hour of high-definition video
- Solid foundational knowledge for your explorations into DevOps
What You'll Learn
|Video lecture||What you'll learn|
|What Is DevOps?||In this lecture series, you'll gain a fundamental understanding of DevOps and why it matters.|
|The Business Value of DevOps||Need to justify the business case for DevOps? This is the lecture series for you.|
|Who's Using DevOps?||Find out who's using DevOps in the enterprise - and why their success matters for your own organization.|
If you have thoughts or suggestions for this course, please contact Cloud Academy at firstname.lastname@example.org.
Welcome back to our Introduction to DevOps course. I'm Ben Lambert and I'll be your instructor for this lecture. In this lecture, we're going to talk about automation and why it's an important part of DevOps. By the end of this lecture, you should be able to identify what automation is and why it's important to a successful DevOps strategy. The dictionary definition for automation is the “technique, method, or system of operating, or controlling a process by highly automatic means as by electronic devices, reducing human intervention to a minimum.”
Now, I know that is horribly dry. But the key point here is reducing human intervention to a minimum. So why is this important? If you've ever had to complete a manual task with a lot of steps, you probably already understand the value in automation. But let's use an example. Say you want to make your grandmother's famous Baked Alaska desert recipe. You've had her Baked Alaska dozens of times, and you know that the end result is amazing. So you dig out the recipe and you give it a look, and then you gather all the ingredients and you follow the instructions carefully. Finally, you're ready to put it into the oven. You wait for a bell to time that the recipe says, and you take a look. Now, what you see before you looks nothing like what your grandmother used to make. You're hopeful that maybe it still tastes good, but it kind of looks like a melting soccer ball. But you cut into it and have a bite, and it tastes as bad as it looks. So what went wrong? Did you not follow the directions? Did you skip steps? Did your grandmother leave something important out of the instructions? Did you get distracted and leave it in the oven for too long? Because of all the variables, there are a lot of potential reasons for this failure.
Now, imagine you could automate the process. Imagine you have a robot that you could teach to bake, so you program him to follow the same set of instructions. Now, your robot won't get distracted and he won't skip any steps unless he's programmed to. He'll follow the directions exactly, and he'll do it consistently. So if the issue was with the recipe, then we'll know, and then we'll adjust the recipe and resolve whatever issues may have caused the problem and that's it. Once the recipe is correct, your robot will make you a consistent perfect Baked Alaska.
All right. Imaginary robot chefs, interesting though they may be, may not seem like they relate to you or to DevOps. So what's the point I'm trying to make here? In our example, there was a lot of potential for human error. As humans, we can get distracted and we can miss steps, especially when it comes to mundane, repetitive tasks, and this is where automation comes in.
Having tried to create that one Baked Alaska and having it come out so poorly, imagine you were asked to make 10 of them for a party. Where manual efforts don't always scale well, automated efforts tend to. Automation provides a level of consistency, predictability, scalability, and quality, just to name a few benefits. Okay. This doesn't quite mean that we're ready to promote the robotocracy just yet. What it does mean is that you should be looking at your entire development, deployment, and operations pipeline and determining where it makes sense to automate.
Automation can help you remove or reduce constraints in the pipeline, while helping ensure quality standards are met. If your manual deployment process takes you four hours, you're limited by the maximum number of deployments you can do in a given day. If your QA team takes a week to test each build, then again you're limited by the maximum number of deployments you can do in a given month. So no matter how fast an individual portion of the pipeline moves, you'll always be constrained by the largest constraint, making optimizations performed at locations other than the constraint useless.
Throughout the development, deployment, and operations pipeline, there are a lot of places to use automation. Starting at the development side of the pipeline, you'll commonly see that after code is committed to a shared repository that it's automatically built. If the build was successful, then the test suite is automatically run, and any failures are reported to the developers so they can fix them right away. These combined tasks are referred to as "continuous integration, " or CI, and are an important first step towards an efficient pipeline. This is where code gets a chance to show that it's production-quality code.
If your code builds and passes all of the tests, then at this point, an artifact should be created and used throughout the rest of the process. An artifact should be some sort of OS installer package for your software. This will enable you to easily install your software in a predictable manner.
Okay. As we move through the pipeline, we come to the deployment section. Here, there are a lot of little things that need to be automated to allow for a push button deployment. Having the ability to pick the environment and version of your software, and then deploy it with the push of a button has a lot of value. The ability to push a button and deploy is called "continuous delivery" or CD and like CI, this is something that we'll learn about more in future courses.
If you remember earlier in this course, I said that DevOps being a philosophy, it allows companies to implement things in the way that best supports them. Well, these are two practices that are very common amongst companies that deploy multiple times per day.
Okay. Let's move into the operations side of the pipeline. There's a lot of automation to be done on the operations side. The need to be able to quickly apply changes in an environment and do it in a predictable and scalable way has led to the creation of what's called "Infrastructure as Code." Infrastructure as Code, or IaC, allows engineers to specify the configuration of servers and infrastructure in code, and then run that code to create or configure an environment. Tools such as Chef, Ansible, Puppet, and SaltStack, among others, are popular in this space. Having your infrastructure as code allows it to be stored in source control and run at any time to recreate an environment. Having a tool like this also allows developers to run it locally to ensure that their development VMs are configured in the same way that production is, at least as best as possible.
So automating infrastructure has become essential, especially at scale. Operations also will want to automate things like log aggregation and log management. This allows for all of the logs across all servers and apps to live in one central location so that it can be parsed by whatever tool is preferred. Monitoring is another common spot where automation is useful. By automating the collection of all stats that help development, security, operations, and QA, and having them all in one central dashboard allows decision makers to make better informed decisions.
Now, these areas for automation aren't an exhaustive list, rather just a good place to start when thinking about how to get the most out of automating your current software pipelines. Automation can help improve the efficiency of your pipeline by making a consistent and predictable process, and help to ensure quality and stability.
If all of this talk of automation seems overwhelming and your current development, deployment, and operations pipeline is a manual, documentation lacking, heart palpitation inducing nightmare, I recommend that you start with something simple. Simple in this context could be running a continuous integration server, such as Jenkins, and its sole job could be to grab any new code commenced from source control and attempt to compile the project. Then, report any instance of the code not compiling to the developers, allowing them to resolve issues quickly.
If you're not using a compiled language, maybe attempting to install any dependencies and running a linter might be a good start. Now, this shouldn't be your stopping point, it's just a nice place to start since you aren't sure where to begin.
Okay. There were two questions we said we'd cover at the start of this lecture. Namely, what is automation and why is it important to DevOps. So we've learned that automation is about reducing human intervention to a minimum, and it's important to DevOps because automation will allow your development, deployment, and operations pipeline to move faster, scale better, and at the same time produce higher-quality software.
Okay. In our next lecture, we're going to discuss what metrics are important to help quantify the success of your DevOps efforts. Okay. Let's get started.
Ben Lambert is a software engineer and was previously the lead author for DevOps and Microsoft Azure training content at Cloud Academy. His courses and learning paths covered Cloud Ecosystem technologies such as DC/OS, configuration management tools, and containers. As a software engineer, Ben’s experience includes building highly available web and mobile apps. When he’s not building software, he’s hiking, camping, or creating video games.