5 Principles of Devops in 2020
Its been more than 10 years since devops movement was created by a bunch of technology professionals who started the conversation on how to bring dev and ops together by implementing certain practices, technologies and building a collaborative culture. Devops went through an era of chaos and has started maturing over the last few years. The key principles, practices and technologies involved have also gone an overhaul. How do the key principles of devops look like in 2020, well lets have a look.
I get asked a lot about What are the key principles of Devops ? To me the principles are dynamic and have evolved over time. If I would have to define the key principles of Devops Engineering today, here are my top five pics.
Principle #1 : Revision Control Everything
Revision control is not only the key to a collaborative development, but also has many advantages such as being able to share the code with others, being able to integrate with automation workflow, being able to provide visibility to everyone etc. Revision control offers one of the foundational technologies for devops automation workflows. In today's world, its not just the application source that you find being revision controlled but also the following devops artifacts,
- Infrastructure Provisioning Code e.g. Terraform
- Configuration Management Code e.g. Ansible
- Continuous Integration Pipelines e.g. Jenkinsfiles
- Deployment Code e.g. Spinnaker/Helm
- Containerisation Code e.g. Dockerfiles, Kubernetes Manifests
Principle # 2 Automate Everything
The key is to automate everything that happens after the code is checked into a repository till it is released to the customers. And with the emergence and maturity of of new generation of automation tools which take a declarative approach to define the state of everything its possible to automate almost everything including
- Provisioning of Infrastructure
- Systems and Applications Configurations
- CI Pipelines
- Application Builds
- Container Image Builds
- Deployments / Releases
Principle # 3 Measure and Monitor Everything (Observability Systems)
Earlier, there was only monitoring of metrics e.g. systems cpu, memory, disk performance and utilisation, latency, network bandwidth. With the emergence of micro services, containers, immutable deployments, and sheer scale of infrastructure in play has required us to think about setting up additional observability systems. What are the things to observe in today's world ?
- Metrics : systems, networks, disks, application uptimes/latency etc. (e.g. prometheus)
- Logs : applications, systems and platform logs (e.g. ELK stack)
- Traces: how requests travel within your microservices (e.g. Jaeger)
Principle # 4 Factor in Non Functional Requirements
When you design your application infrastructure, you not only need to think about application functionality, but also the non functional requirements or NFRs. What constitutes a NFRs is everything thats not related to how your application functions and is important towards making it run reliably, meets the traffic demands etc. Following are some of the key NFRs you would have to factor in,
- Availability (leads to Fault Tolerance, Resilience)
- Disaster Recovery (also leads to Fault Tolerance, Resilience)
- Data Placement/ Vicinity (CDNs etc.to make data available closer to your audience)
Principle # 5 Setup Continuous Feedback
One of the key principles of devops engineering is to setup systems which provide continuous feedback. This is what is going to allow you to fail fast, detect the bugs, fix them quick and increase the reliability of the system, and ultimately to be in a position to go out to market fast with least impact on the reliability. Following are the practices which will help you get that instant feedback,
- Automated builds
- Continuous Integration Pipelines
- Project Gating Systems
- Observability systems
Now those are the 5 principle you would want to consider to incorporate into your devops practice this year.
If you like this content and want to stay updated with the latest and greatest of devops engineering principles, practices, technologies, tools, sources and career advise, do consider being part of my private network at https://www.facebook.com/groups/devopstribe.