Overview#DevOps is a software engineering culture and practice that aims at unifying Development Team (Dev) and software Operations Team (Ops)
DevOps main characteristic is to strongly advocate automation and monitoring at all steps of Software Development Life Cycle Continuous Development, Continuous testing, Continuous Delivery and infrastructure management .
DevOps aims at establishing a culture and environment where building, testing, and releasing software can happen rapidly, frequently, and more reliably.
DevOps toolchain#DevOps is a cultural shift and collaboration between development, operations and testing, there is no single DevOps tool, rather a set or “DevOps toolchain” consisting of multiple tools.
Generally, DevOps tools fit into one or more of these categories, which is reflective of the Software Development Life Cycle:
- Code – Continuous Development and review, version control tools, code merging
- Build – Continuous integration tools, build status
- Test – Continuous testing and results determine performance
- Package – Artifact repository, application pre-deployment staging (Containerization)
- Release – Change management, release approvals, Continuous Delivery
- Configure – Infrastructure configuration and management, Infrastructure as Code tools (Container Orchestration)
- Metric Analysis - Application Monitoring and User Experience monitoring
DevOps and Responsive Organizations#Responsive Organizations employ Agile techniques and use Continuous Improvement/Continuous Development tools to meld application development, testing, refreshes and quality assurance into an integrated framework
Most of those Responsive Organizations also have simultaneously discovered the power of Containerization methods such as Docker. A Docker container consists of a complete file system that contains everything, including the code, runtime, system tools and system libraries, which an application needs to run.
These capabilities not only makes it easier to package application code to make it more portable, but it also enables Information Technology organizations to adopt a microservices approach to Information Technology that makes applications more robust and flexible.