DevOps

DevOps (a clipped compound of "software DEVelopment" and "information technology OPerationS") is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment where building, testing, and releasing software can happen rapidly, frequently, and more reliably.

In traditional, functionally-separated organizations, there is rarely a cross-departmental integration of these functions with IT operations. But DevOps promotes a set of processes and methods for thinking about communication and collaboration – between departments of development, QA (quality assurance), and IT operations. In some organizations, this collaboration involves embedding IT operations specialists within software development teams, thus forming a cross-functional team – this may also be combined with matrix management.

DevOps Components

Because DevOps is a cultural shift and collaboration (between development, operations and testing), there is no single "DevOps tool": it is 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 key aspects of the software development and delivery process:

  • 1.  Code : Code development and review, version control tools, code merging
  • 2.  Build : Continuous integration tools, build status
  • 3.  Test : Test and results determine performance
  • 4.  Package : Artifact repository, application pre-deployment staging
  • 5.  Release : Change management, release approvals, release automation
  • 6.  Configure : Infrastructure configuration and management, Infrastructure as Code tools
  • 7.  Monitor : Applications performance monitoring, end–user experience

Though there are many tools available, certain categories of them are essential in the DevOps toolchain setup for use in an organization. Some attempts to identify those basic tools can be found in the existing literature.

Tools such as Docker (containerization), Jenkins (continuous integration), Puppet (Infrastructure as Code) and Vagrant (virtualization platform)—among many others—are often used and frequently referenced in DevOps tooling discussions.




Further references:
AWS DevOps
DevOps - Wikipedia