On average, Amazon deploy their changes every 11.6 seconds. How about you?
There is an IT movement, philosophy, set of principles, call it what you like, that aims to speed up your delivery process, with increased quality, so that your external or internal users can feel the benefits of your hard work much sooner. It is called DevOps.
In essence, DevOps is all about blurring the boundaries between two traditionally separate teams, development and operations.
Synergy of Devs and Ops
Adopting DevOps imposes a shift in culture and attitude. In its extreme form, you might not even have discrete development and operations crews; your G.I. Joe IT engineers will do both. In DevOps, the two teams work together to maximize both the efficiency of developers and the robustness of operations. They interact continuously, increase productivity, and improve the output of services they provide to the users. They take full ownership of the overall process irrespective of their formal job descriptions. They focus on users’ needs and how they can help to meet these needs. And it is not just developers and operations: QA and security people are also in the mix, collaborating closely with everyone else . In short, once you take the DevOps path, whatever your organisational charts say, you view the entire development and infrastructure activities as part of your own responsibilities.
Tooling for Success
Another critical aspect of DevOps is the strive to automate processes and do away with manual activities as much as possible. The DevOps teams heavily use tool stacks to operate and evolve their IT systems. With such tools, individual engineers can now, on their own, perform the tasks that are outside of their personal zone of comfort and would have traditionally needed assistance from other teams. Therefore the right tool stack for DevOps is of the highest importance. It is the tools that facilitate and enable the whole cultural change.
Here are some of the main categories of the DevOps tools:
- Software Development Management - IDEs, version control, repositories, libraries, agile facilitators, code inspectors, code review
- Code integration - continuous integration tools, build status
- Testing tools - automated testing at all levels, unit, integration, UI, system, deployment
- Packaging - artifact repository, application pre-deployment staging
- Release management - change management, release approvals, release automation
- Configuration management - infrastructure configuration and management, Infrastructure as Code tools
- Log analytics - log analysis, log real-time monitoring and alerts
- Infrastructure Monitoring - applications performance monitoring, end–user experience
So once you have bonded your teams and implemented the tools, this is what you should expect from your DevOps:
- Higher release frequency
- Higher productivity
- Better quality of deployed releases
- Faster bug-fix deployment
- More rapid and robust fallback and recovery procedures
And yes, Amazon do subscribe to DevOps. If they do it, you should do it too.