Some of the technologies are
- Containers, like Docker or Kubernetes
- Automation frameworks like Jenkins and Travis CI,
- Continuous integration models (again, Travis CI).
- With containers you can treat configuration like code -- storing the configuration as scripts in a revision control system. So, the container configuration can be static and tracked. This enhances security as well as making the configuration more transparent.
- Netflix’s idea of a Chaos monkey - introducing problems into production systems to test their resilience.
The Devops role, is someone who specializes in these technologies. Also essential is someone who can work with the team and help interface with QA, security, development, operations. The ultimate idea of Devops is embedding someone representing operations in the development team.
So, how does it all come together? Agile methods mean that you have potentially deployable code at the end of a sprint. With Devops that can become actually deployable. But, devops also helps make deploying to production less scary:
- The deployment is automated.
- SDETs have written automated regression tests to check the existing system.
- Containers allow you to run multiple test deploys in parallel, testing multiple configurations.
- Security configuration can be built in to the container scripts.
Since automated tests, deployment and configuration are all code, they can be revised, tested and run automatically often. This allows QA to focus during a sprint on the new functions, including end-to-end and user experience.