DevOPs
A compound of development (Dev) and operations (Ops), DevOps is the combination, union of people, process, and technology to continually increase an organization’s ability to deliver applications and services or provide value to customers at high velocity. GIS is slowly adopting DevOPs.
DevOPs Practices
- Version Control
- Continuous integration and continuous delivery (CI/CD)
- Agile Software Development
- Configuration Management
- Continuous Monitoring
Continuous Integration and Continuous Delivery (CI/CD)
Continuous integration is a software development practice in which developers regularly merge their code changes into a central repository, after which automated builds and tests are run. The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates.
Continuous delivery is the frequent, automated deployment of new application versions into a production environment. By automating the steps required for deployment, teams reduce issues that may occur upon deployment and enable more frequent updates.
By implementing CI/CD we allow teams to focus on building code and remove the overhead and potential human error in manual, mundane steps resulting in frequent deployment in bits helping teams to be agile, productive and confident.
Configuration Management
Developers and system administrators use code to automate operating system and host configuration, operational tasks, and more. The use of code makes configuration changes repeatable and standardized. It frees developers and systems administrators from manually configuring operating systems, system applications, or server software.
Infrastructure as code
Infrastructure as code is a practice in which infrastructure is provisioned and managed using code and software development techniques, such as version control and continuous integration. The cloud’s API-driven model enables developers and system administrators to interact with infrastructure programmatically, and at scale, instead of needing to manually set up and configure resources.
Infrastructure as code reduce the hassle of infrastructure configuration and prevent environment drift with infrastructure as code (IaC) solutions. Rapidly test new apps in production-like environments.
Practicing infrastructure as code helps teams deploy system resources in a reliable, repeatable, and controlled way. It also automate deployment and reduces the risk of human error, especially for complex large environments
Version Control
Version control is the practice of managing code in versions—tracking revisions and change history to make code easy to review and recover. Systems such as Git which allow multiple users to collaborate in authoring code, help provide provide a clear process to merge code changes that happen in the same files, handle conflicts, and roll back changes to earlier states.
The use of version control is a fundamental DevOps practice, helping development teams work together, divide coding tasks between team members, and store all code for easy recovery if needed.
Agile Software Development
Agile is a software development approach that emphasizes team collaboration, customer and user feedback, and high adaptability to change through short release cycles.
Agile provide continual changes and improvements to customers, collect their feedback, then learn and adjust based on customer wants and needs
Continuous Monitoring
Continuous monitoring means having full, real-time visibility into the performance and health of the entire application stack, from the underlying infrastructure running the application to higher-level software components. This visibility consists of the collection of telemetry and metadata as well as the setting of alerts for predefined conditions which warrant attention from an operator. Telemetry comprises event data and logs collected from various parts of the system, which are stored where they can be analyzed and queried.
High-performing DevOps teams ensure they set actionable, meaningful alerts and collect rich telemetry so they can draw insights from vast amounts of data. These insights help the team mitigate issues in real time and see how to improve the application in future development cycles.