List of DevOps practices
According to the IT Pro Guy, the following constitute fundamental DevOps practices:
- Infrastructure as Code (IaC) - is the practice in which the techniques, processes, and tool sets used in software development are leveraged to manage the deployment and configuration of systems, applications, and middleware. A significant number of testing and deployment defects occur when developers’ environments defining the application and underlying infrastructure differ from testing and production environments. Standardizing these environment definitions, putting them under version control, and deploying and configuring the infrastructure and application automatically from the code in version control, yields immediate benefits in consistency, time savings, error rates, and auditability.
- Continuous Integration (CI) - is the practice of merging all working copies of developers code with a shared mainline, producing a new build upon code check-in. Ideally CI also involves libraries of Integration or unit tests, also automatically triggered based on new code being checked into source control. Once automated Integration tests are successfully completed a known good build of the software is produced.
- Automated Testing - is the practice where various tests such as load, functional, integration, and unit tests happen automatically either after you check in code (i.e. attached to CI) or some other means to fire off one or more tests automatically against a specific build or app.
- Application Performance Monitoring/Management (APM) - is the practice of having visibility into key metrics about your application as well as alerts and logging about the health of your applications.
- Continuous Deployment (CD) - is the practice that usually comes after CI and can be implemented to push a new known good build to a single environment either automatically or via automation capabilities that an authorized user can schedule.
- Release Management - is the practice which provides the ability to automate deployment of new applications as well as changes to applications across managed environments. Release Management facilitates packaging these changes into known, documented releases that are deployed via workflow through pipelines of ordered release stages (Release/Deployment Pipelines). The pipelines enable approvals, traceability and rollback if required. Lastly, roles, responsibilities and access levels for various artifacts and actions can also be managed through Release Management.