DevOps is a concept, which means it is like a large basket and contains many things including DevOps philosophies, culture, practices and tools. The main goal of DevOps is to accelerate the process from integration, testing, releasing to deployment and infrastructure management. Bass, Weber, and Zhu defined it by:
"DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality. "[1]
With this concept, development team and operation team are not siloed any more. Instead, they are merged and unified on a toolchain level across the following stages shown in the diagram:
Such toolchain involves all kinds of tools that you may already be familiar with:
- Code — Git, Jira, Eclipse
- Build — Maven, Gradle, Ant
- Test — Selenium, JMeter, NUnit, Specflow
- Release — Jenkins
- Deploy — Chef, Ansible
- Operate — Amazon Web Service, Azure
- Monitor — Nagios, Sensu
[1] Bass, Len; Weber, Ingo; Zhu, Liming. DevOps: A Software Architect's Perspective.
