Developers and system administrators use code to automate the operating system and host configuration, operational tasks, and more. Using the code makes configuration changes repeatable and standardized. Thanks to these traditional software development practices, developers and systems administrators no longer need to manually configure operating systems, system applications, or server software.
Continuous integration and continuous delivery (CI/CD)
Configuration management represents managing application resources, including servers, databases, and virtual machines. Thanks to configuration management tools, teams can deliver changes in a steady, structured way, decreasing the risks of modifying system configuration. Teams use configuration management tools in tracking the system’s state and helping to avoid configuration drift - when a system resource’s configuration reclines over time from the desired state. Both system definition and configuration are easy to automate, which is helpful for teams operating complex environments at scale.
Managing code in versions allows the DevOps team to track revisions and change history, making code easy to review and recover. This practice is usually applied using version control systems such as Git so multiple developers can collaborate in authoring code. These systems provide a clear view of the merging process, changes that happen in files, handling conflicts, and rolling back changes. Version control is a crucial DevOps practice, helping development teams work together, split coding tasks between team members, and store all code for easy recovery. Version control also plays a role in other practices such as continuous integration and infrastructure as code.
Agile software development
Agile development is an approach that focuses on team collaboration, user feedback, and high adaptability. Teams that practice Agile software development lifecycle roll out continual updates and changes to customers, receive feedback, then readjust based on customers’ wants and needs. Agile is essentially different from other traditional frameworks, such as Waterfall, with its long release cycles and consecutive phases. Kanban and Scrum are two popular frameworks linked to Agile.
Infrastructure as Code
Infrastructure as code is a practice in which infrastructure is managed using code and software development techniques, such as version control and continuous integration. The cloud’s API-driven model lets developers and system administrators interact with infrastructure automatically and at scale instead of manually setting up and configuring resources. Being defined by code, infrastructure and servers can quickly be deployed using patterns updated with the latest patches and versions.
Policy as Code
DevOps teams can monitor and implement compliance dynamically and at scale when infrastructure and its configuration are codified with the cloud. Infrastructure that is described by code can therefore be tracked, validated, and reconfigured automatically. This makes it easier for teams to handle changes over resources and ensure that security measures are properly applied. This allows agile teams within an organization to move at a higher pace since non-compliant resources can be automatically flagged or even automatically rolled back into compliance.
Monitoring and Logging
DevOps teams monitor metrics and logs to see how application performance impacts the experience of their product’s final user. By collecting, sorting, and then analyzing data and logs generated by applications and infrastructure, teams understand how changes or updates impact users and look into the root of problems or unexpected changes. The importance of active monitoring constantly increases as services must be available 24/7 and as application and infrastructure update frequency rises.