5 Key DevOps principles
To realize the full potential of DevOps, teams should follow key DevOps principles
DevOps is more than just development and operations teams working together. It’s more than tools and practices. DevOps is a mindset, a cultural shift, where teams adopt new ways of working.
A DevOps culture means developers get closer to the user by gaining a better understanding of user requirements and needs. Operations teams get involved in the development process and add maintenance requirements and customer needs. It means adhering to the following key principles that help DevOps teams deliver applications and services at a faster pace and higher quality than organizations using the traditional software development model.
The key premise behind DevOps is collaboration. Development and operations teams coalesce into a functional team that communicates, shares feedback, and collaborates throughout the entire development and deployment cycle. Often, this means development and operations teams merge into a single team that works across the entire application lifecycle.
The members of a DevOps team are responsible for ensuring quality deliverables across each facet of the product. This leads to more ‘full stack’ development, where teams own the complete backend-to-frontend responsibilities of a feature or product. Teams will own a feature or project throughout the complete lifecycle from idea to delivery. This enhanced level of investment and attachment from the team leads to higher quality output.
An essential practice of DevOps is to automate as much of the software development lifecycle as possible. This gives developers more time to write code and develop new features. Automation is a key element of a CI/CD pipeline and helps to reduce human errors and increase team productivity. With automated processes, teams achieve continuous improvement with short iteration times, which allows them to quickly respond to customer feedback.
Continuous improvement was established as a staple of agile practices, as well as lean manufacturing and Improvement Kata. It’s the practice of focusing on experimentation, minimizing waste, and optimizing for speed, cost, and ease of delivery. Continuous improvement is also tied to continuous delivery, allowing DevOps teams to continuously push updates that improve the efficiency of software systems. The constant pipeline of new releases means teams consistently push code changes that eliminate waste, improve development efficiency, and bring more customer value.
DevOps teams use short feedback loops with customers and end users to develop products and services centered around user needs. DevOps practices enable rapid collection and response to user feedback through use of real-time live monitoring and rapid deployment. Teams get immediate visibility into how live users interact with a software system and use that insight to develop further improvements.
Create with the end in mind
This principle involves understanding the needs of customers and creating products or services that solve real problems. Teams shouldn’t ‘build in a bubble’, or create software based on assumptions about how consumers will use the software. Rather, DevOps teams should have a holistic understanding of the product, from creation to implementation.
Devops isn't any single person's job. It's everyone's job.
Principal Product Manager, Jira Service Management
Who's doing DevOps?
Chef is the company behind the Chef Automate platform for DevOps workflows. Tens of thousands of developers use Chef to test, automate, and manage infrastructure. At the forefront of the DevOps evolution, the Seattle-based company has released products like Chef, InSpec, Habitat, and Chef Automate to advance new ways of developing and shipping software and applications. To experiment with and refine its own internal DevOps practices, Chef relies on the Atlassian platform.
History of DevOps
The DevOps movement began around 2007 when the IT operations and software development communities raised concerns about the traditional software development model. While agile methodologies were widely adopted by development teams to improve collaboration, among other benefits, the developers who wrote code often worked separately from the operations team that supported the code in production. This resulted in inefficient processes and a general lack of collaboration between these two siloed teams.
The remedy was DevOps, which bridges the gap between these teams so they work cohesively. DevOps brings together the skills, processes, and tools together from both development and operations teams.
Benefits of DevOps
There are three primary categories of benefits for DevOps: technical benefits, cultural benefits, and business benefits. The technical benefits include reduced complexity, continuous delivery, and faster problem resolution. DevOps practitioners typically deploy higher-quality code faster than traditional siloed teams.
The cultural benefits are more productive and efficient teams, and happier customers. On the business end, the benefits include greater collaboration and trust between team members, which results in faster delivery and stable operating environments.
DevOps is a cultural shift where teams embrace a software engineering culture, workflow, and toolset that elevates operational requirements to the same level of importance as architecture, design, and development. When developers who build software also run it, they have a greater understanding of user requirements and needs. The values of a DevOps culture include increased transparency, communication, and collaboration across teams.
When organizations want to implement DevOps, they can turn to a DevOps engineer. This person has a wide-ranging skill set that spans both development and operations, but also the interpersonal skills to bridge divides between siloed teams.
A DevOps engineer is an IT generalist with a wide range of knowledge around day-to-day software development, cloud infrastructure management, system administration, and automation.
Customers expect and demand always-on, always available services. DevOps is well suited to supporting “always-on” software, or software as a service. It reinforces the cycle of continuous deployment, feedback, and maintenance or incident response that teams need to keep always-on services, always on.
Bookmark these resources to learn about types of DevOps teams, or for ongoing updates about DevOps at Atlassian.