docs/1-introduction/1.1-devops-defined.md | ||||
---|---|---|---|---|
|
Let's see what the experts have to say. Be sure to follow the links to get more context from the sources.
DevOps (a portmanteau of software development and server operations) represents the integration between software development and operations engineering that has become increasingly necessary with the emergence of cloud computing. In essence, the jobs are no longer mutually exclusive- developers need more operations-based knowledge in order to understand how their application will be deployed, test locally and preemptively address potential security risks, while systems administrators need to know developer-based materials in order to design infrastructure optimally to fit an application’s needs without wasting capacity and to troubleshoot issues with the increasingly complex software cycle. Additionally, site reliability engineering and many modern security roles require a background with a balance between development and operations.
- OSU DevOps Bootcamp (Note: original content has changed) A cultural and professional movement, focused on how we build and operate high velocity organizations, born from the experiences of its practitioners.
- chef/devops-kungfu The term “DevOps” typically refers to the emerging professional movement that advocates a collaborative working relationship between Development and IT Operations, resulting in the fast flow of planned work (i.e., high deploy rates), while simultaneously increasing the reliability, stability, resilience and security of the production environment.
- Gene Kim Highly effective, daily collaboration between software developers and IT operations people to produce relevant, working systems
- Matthew Skelton DevOps is about using automation as a tool to align incentives and increase collaboration across all of the teams involved in the software delivery life cycle in order to deliver software better, more quickly, and with less stress.
Now that we have some idea what DevOps means let's look at some important concepts. This list is not comprehensive but should help you get started.
In order to build and operate the kinds of complex, distributed systems required for modern software development, we need to emphasize effectiveness over efficiency for technical teams. Delivering changes rapidly, reliably, and repeatedly is not possible if we aim to minimize ‘costs’ at specific points of the value chain, as this kind of efficiency usually ends up causing unnecessary constraints. Instead, we should focus on the flow and completion of work in progress. Change Request tickets should not sit in a queue for days, we should not separate ‘testing’ as something that happens only ‘after development’, and changes should not sit waiting weeks and weeks for the Staging or Pre-Production environment to be available.
-
Systems Thinking: Learn how everything is interconnected, from concept to customer.
-
Amplifying Feedback Loops: Cut the time between action and reaction, failure and success.
-
Culture of Continuous Experimentation and Learning: Recognize that failure is important data about how and where to improve.
Read The Three Ways: The Principles Underpinning DevOps
-
Culture: It’s about how people relate and work, which is not something you can buy.
-
Automation: Faster, less error-prone processes help amplify feedback loops.
-
Measurement: You can’t get where you want to be until you know where you are.
-
Sharing: Effective teamwork ignores organizational boundaries.
-
Inclusivity: Everyone is responsible for (and benefits from) these practices.
-
Complex Systems: Iteration is imperative to maintain a grasp on complexity.
-
Empathy: Real collaboration requires an understanding of another person’s point of view.
Read DevOps keeps it cool with ICE
We will spend a lot of time talking about tools and technology but it cannot be stressed enough the importance of a culture that supports inclusion and empathy.
Watch this KubeCon 2019 keynote in which Kelsey Hightower reflects on his experiences in the Kubernetes community.
As DevOps evolves and grows, various tools have been developed to aid the collaborative and development processes. Having a strong toolset along with the knowledge of tools can be the difference between a mediocre engineer and a great one.
Look through The DevOps Roadmap to get an idea of a modern toolset used by DevOps engineers, many of which will be touched on throughout the bootcamp.
Describe DevOps in your own words with your peers.