DevOps is a software engineering culture and practice that aims at unifying software development (Dev) and software operation (Ops). The main characteristic of the DevOps movement is to strongly advocate automation and monitoring at all steps of software construction, from integration, testing, releasing to deployment and infrastructure management. DevOps aims at shorter development cycles, increased deployment frequency, and more dependable releases, in close alignment with business objectives.
As DevOps is intended to be a cross-functional mode of working, rather than a single DevOps tool there are sets of multiple tools. Such DevOps tools are expected to fit into one or more of these categories, reflective of key aspects of the development and delivery process:
- Code — code development and review, source code management tools, code merging
- Build — continuous integration tools, build status
- Test — continuous testing tools that provide feedback on business risks
- Package — artifact repository, application pre-deployment staging
- Release — change management, release approvals, release automation
- Configure — infrastructure configuration and management, Infrastructure as Code tools
- Monitor — applications performance monitoring, end–user experience
We should also note that there exist different interpretations of the DevOps tool-chain (e.g. Plan, Create, Verify, Package, Release, Configure, and Monitor).
Some categories are more essential in a DevOps tool-chain than others; especially continuous integration (e.g. Jenkins) and infrastructure as code (e.g. Puppet).
The need for DevOps arose from the increasing success of agile software development, as that led to organizations wanting to release their software faster and more frequently. As they sought to overcome the strain this put on their release management processes, they had to adopt patterns such as application release automation, continuous integration tools, and continuous delivery.
Continuous delivery and DevOps have common goals and are often used in conjunction, but there are subtle differences.
While continuous delivery is focused on automating the processes in software delivery, DevOps also focuses on the organization change to support great collaboration between the many functions involved.
DevOps and continuous delivery share a common background in agile methods and lean thinking: small and frequent changes with focused value to the end customer. They are well communicated and collaborated internally, thus helping achieve faster time to market, with reduced risks.
The application of continuous delivery and DevOps to data analytics has been termed DataOps. DataOps seeks to integrate data engineering, data integration, data quality, data security, and data privacy with operations. It applies principles from DevOps, Agile Development and the statistical process control, used in lean manufacturing, to improve the cycle time of extracting value from data analytics.
DevOps is often viewed as an approach to applying systems administration work to cloud technology.
The above is a brief about DevOps. Watch this space for more updates on the latest trends in Technology.