From the course: DevOps Foundations: Microservices

What is DevOps?

Let's start with a good working definition of DevOps that will be useful for us as we get into how DevOps and microservices work together. Here goes. DevOps is a set of practices that eliminate siloing between developers and operations staff. Instead of working separately towards conflicting goals, DevOps team combine developers and operators to collaborate on the process of software delivery from concept to production. The Agile movement that started in the early 2000 eventually gave rise to DevOps, which shares several key concepts with Agile. If we look at the Agile Manifesto, we can see common themes, both Agile and DevOps value human interactions, collaboration and adaptability. The relationships between developers and operations teams has always been tense. They tend to have conflicting goals. Developers want to go fast. Operations teams are expected to keep systems stable. DevOps grew out of a need for developers and operators to work together. Instead of engaging in a blame game at each step in the software delivery life cycle, developers would tend to throw apps over the wall to admins, then leave them to their own fates when problems would arise in production. Ops teams had little context for how applications were built, so they had little guidance on how to operate them. DevOps provides a framework for engagement and collaboration between these teams, so they share responsibility for not just the development and not just the operations, but both. Ideally, developers should have some understanding of the infrastructure that runs their applications. Ops staff should have some basic programming knowledge and should use that as a part of their jobs to automate processes like deployment. There are several key principles in DevOps practices: Velocity, culture, continuous improvement, measurement and observability, and automation. High performing teams, as defined by research conducted by DevOps Research and Assessment, are able to move fast without breaking things. Enterprises can have the best of both worlds with on budget, on time delivery of software to production where it can return the investments made in IT. The DevOps principles recognize that no enterprise has infinite resources, so process and system improvements are evergreen processes. Teams are provided the time and resources to make improvements as a method for combating technical debt. The saying in DevOps circles is that you can't improve what you don't measure. This is obviously true, so metrics and measurement are a key practice in DevOps. Automation is a key applied practice in DevOps. DevOps tools and platforms emphasize automation to avoid toil. We'll talk more about toil later in the course using DevOps practices. Companies of every size have broken the zero sum game between developers and administrators. It's now possible, with the right combination of cultural values and technological tools, to go fast and keep systems running with high reliability. This is a good thing because without DevOps, microservices would be difficult to build and maintain. Let's move on and learn more about how to combine them.

Contents