Type “DevOps Best Practices” into your favorite search engine and behold the plethora of definitions, methodologies, best practices, tips, how-to guides, reports, tools, and of course services from hundreds of resources that go back 4-5 years. When I sat down to write this post I figured I would see what the “Internet” says it is to help me come up with some content. Being completely overwhelmed I decided to correlate the most recent information from some of the most notable players including Microsoft, Amazon, Google, IBM, Forrester Research and Gartner. Lets start out with the definition of DevOps
What is DevOps?
- … a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes.
- … provides a proven set of practices that enable organizations to deliver applications more quickly to better connect with customers while simultaneously reducing both cost and risk.
- … is a perspective that requires cultural change, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of an integrated approach.
- … a term that primarily focuses on improved collaboration, communication, and integration between software developers and IT operations.
- … the cultural aspect of concentrating on business results rather than technical details.
That was a trick question because the answer is all of the above plus much more. So lets correlate the answers. DevOps can be defined as:
A set of practices within the business, development, and information technology departments that concentrates on a customer centric, streamlined delivery of software with low risk and low cost.
At its very core DevOps requires a cultural shift in order to be successful. It requires discipline, collaboration, cross-functionality and ownership of all relevant IT stakeholders, such as application development, test, information security, enterprise architecture, database administration, and system administration.
A Few Best Practices
Here a few concepts that float to the top from a technology and process perspective. They can be categorized by this simple statement: Automated Everything Through:
- Continuous Delivery
A series of practices designed to ensure that code can be rapidly and safely deployed to production by delivering every change to a production-like environment and ensuring business applications and services function as expected through rigorous automated testing. If something fails it can be rolled back to a previous working version.
- Continuous Deployment
Is the next step of Continuous Delivery: Every change that passes the automated tests is deployed to production automatically. Numerous models include this step in Continuous Delivery.
- Continuous Integration
A process of continuously building the application as code changes to quickly identify any error or integration issue. Include automated build and testing. Numerous models include this step in Continuous Delivery.
- Continuous Improvement
Continuous improvement, sometimes called continual improvement, is the ongoing improvement of products, services or processes through incremental and breakthrough improvements. The cloud will always move forward and so should your applications.
- Deploy Infrastructure as Code
A fundamental principle of DevOps is to treat infrastructure the same way developers treat code. Application code has a defined format and syntax. If the code is not written according to the rules of the programming language, applications cannot be created.
All configurations should be defined in a declarative way and stored in a version management system, just like application code. Infrastructure provisioning, orchestration, and deployment should support the use of the “infrastructure code.”
IaC is ideal for creating development, staging and production environments. They can be created and torn down with a few button clicks. Blue-Green style deployments for application role outs including automated role-backs are made easy, repeatable, and cost effective with IaC.
What about the Tools?
Its interesting that most of the resources I referenced never mentioned tools. Its strictly a business level concept.
It is my opinion that the tools part of the equation is most straight forward. There are hundreds if not thousands of open source, and commercial tools, and services readily available for immediate deployment. Check the references below for the details.
Defining DevOps best practices is somewhat of an ever changing moving target. This subject is heavily debated, and refined as the industry matures. What seems evident is that things are moving faster with no end in sight.
What will be interesting to watch is how Serverless Computing will transform DevOps. Perhaps it will be succeeded by NoOps.
NoOps (no operations) is the concept that an IT environment can become so automated and abstracted from the underlying infrastructure that there is no need for a dedicated team to manage software in-house.
Serverless computing is gaining momentum with support by Microsoft Azure’s Functions, Amazon Web Services Lambda, IBM’s OpenWhisk, and Google’s Cloud Functions.
Its a good time to be a developer.