In this video, learn how to take a fundamentally different approach to building distributed systems whether in the data center or in the cloud.
- In the system administration world, automation isn't new, but DevOps talks about a profoundly different level of automation. We refer to this as infrastructure as code. - It's a completely programmatic approach to infrastructure, that allows us to leverage development practices for our systems. - One effect of splitting the Dev and Ops tribes apart has been that the best practices of one tribe really didn't carry across to the other. - Yeah, a simple example is the use of source control. A development shop that doesn't keep their code in source control, would widely be considered insane. - Insane in the membrane? - Insane in the brain. But, a large number of operations teams don't use source control at all. Even for their scripts or other code. - Yeah, and that's just wrong. But what if we could treat our systems like code? - Yeah, we'd develop them in an IDE, run their unit and integration tests as part of a continuous integration pipeline, deploy them. - Yeah, and even have them make decisions at runtime based on their state. - That's what infrastructure as code is about. Tools exist to configure servers from the bare metal up completely automatically. And with virtual servers, cloud servers or containers, everything can be created, changed and destroyed programmatically. - Yeah, let's give an example of infrastructure as code. Let's take a look at Amazon Web Services. You can completely describe your systems using a JSON format called CloudFormation. - You then have an asset in source control that everyone can look at, that's a guaranteed accurate reflection of your systems. - It brings confidence that your Dev, Staging and Production environments are identical because they were created from the same specification. - Get away from setting anything up manually. Even UI is your enemy. Define your infrastructure in a model, or drive it via code that exercises a rest API. - And now we can put it in source control, run it through a CI pipeline to test it, and then deploy it. - Only the most cowboy of environments would ever have a developer log in and change code in production. - Yeah, we really just don't do that anymore. - It's an anti-pattern, so why do it with your systems? - The biggest challenge in infrastructure as code is changing mindsets. It's a new field, so people can't just rely on the old habits or publish best practices on respected sites like infrastructures.org. - I was project managing a major network upgrade in an enterprise IT shop involving a dozen teams. The technical plan, as it was presented to me was we'll take down the apps, then the databases, then the servers, then the SAN and the network. Change out the network gear and then bring everything back up in reverse order. Then the developers will test their apps to see if everything's fine. So I asked them a lot can go wrong, that's going to be very hard to diagnose at the application level. How do each of you plan to test your level before passing it onto the next team? And I got a lot of blank looks. It wasn't their fault. The idea of testing your infrastructure was so rare that they just didn't even think of it. So I told them, think about it. We're not going to go forward until each level can tell me how they're going to test. And after they thought about it, they had great ideas. The Unix administrator said, "What if we roll out a script to all our servers, that'll do a ping sweep and see all what each server can connect to and then after the upgrade, we'll do the same thing indifferent." Brilliant. - Yeah, you know, changing your infrastructure engineers way of thinking as the key to treating infrastructure as code. Tools themselves just won't do it. - We're all having to deal with greater challenges than the single rack in a closet of days passed. - Distributed systems, web scale systems, microservice architectures, virtualization, cloud, null containers, they're all increasing in complexity. - Trying to keep up with that complexity manually is somewhere between inefficient and impossible. Even traditional automation has trouble keeping up. So switching to an approach that assumes systems are a femoral is important. - You'll hear the phrase, cattle, not pets applied to servers in the infrastructure as code world. - That's right, servers are not something to be handcrafted and named and manually kept up anymore. There are hard to be processed in mass. - Just a couple of final points regarding designing infrastructure as code solutions. You know, Ops people are used to solving problems with Ops tools and developers are used to solving problems by writing code. As you bring both of these disciplines together, you have the opportunity to bring the best solution to the table. - Next, let's talk about one of the most widespread infrastructure as code practices, configuration management.
In this course, well-known DevOps practitioners Ernest Mueller and James Wickett provide an overview of the DevOps movement, focusing on the core value of CAMS (culture, automation, measurement, and sharing). They cover the various methodologies and tools an organization can adopt to transition into DevOps, looking at both agile and lean project management principles and how old-school principles like ITIL, ITSM, and SDLC fit within DevOps.
The course concludes with a discussion of the three main tenants of DevOps—infrastructure automation, continuous delivery, and reliability engineering—as well as some additional resources and a brief look into what the future holds as organizations transition from the cloud to serverless architectures.
- What is DevOps?
- Understanding DevOps core values and principles
- Choosing DevOps tools
- Creating a positive DevOps culture
- Understanding agile and lean
- Building a continuous delivery pipeline
- Building reliable systems
- Looking into the future of DevOps