DevOps Practices
Continuous integration :
Continuous integration (CI) is a development practice that requires developers to commit code into a shared repository at least daily.
• Each check-in is validated by
– An automated build
– Automated unit, integration and acceptance tests
• Is dependent on consistent coding standards
• Requires subversion version control repositories and CI servers to collect, build and test committed code together
• Runs on production-like environments
• Integrates multiple code branches into a trunk (also known as a master)
• Must pass unit, acceptance and integration tests
• Allows for early detection and quick remediation of errors from code changes before moving to production
Continuous delivery :
Continuous delivery is a methodology that focuses on making sure software is always in a releasable state throughout its lifecycle.
• Takes continuous integration to the next level
• Provides fast, automated feedback on a system’s production-readiness
• Prioritizes keeping software deployable over working on new features
• Relies on a deployment pipeline that enables push-button deployments on demand
• Reduces the cost, time, and risk of delivering incremental change
Continuous testing :
Continuous testing is the process of executing automated tests as part of the deployment pipeline to obtain immediate feedback on the business risks associated with a software release candidate.
• Functional
– Unit tests, API, integration, system testing
• Non-functional
– Performance, security, compliance, capacity
Automated testing is a key aspect of Continuous Integration and Continuous Delivery and encourages a “shift left” testing strategy.
Testing and Deployment Strategies :
• Test driven development (TDD)
• Performance testing
• End-to-end use-case testing
• Security testing
• Manual testing
• Testing in production
“Shifting left” is about building quality into the software development process. When you shift left, fewer things break in production, because any issues are detected and resolved earlier.
Continuous deployment :
Continuous deployment is a set of practices that enable every change that passes automated tests to be automatically deployed to production.
• Removes the manual step in the deployment pipeline
• Results in multiple deployments per day
Continuous deployment may not be practical or possible for companies constrained by regulatory or other requirements.
Release is the process or event of making a feature (or set of features) available to a segment of customers.
Rugged DevOps :
Rugged DevOps is a method that includes security practices as early in the continuous delivery pipeline as possible to increase cybersecurity, speed, and quality of releases beyond what DevOps practices can yield alone.
• Rugged software development is a cultural approach to creating available, survivable, defensible, secure, and resilient software
• Rugged organizations are comfortable with instrumentation, experimentation and experience
• It is not the same as DevSecOps but related
DevSecOps :
The purpose and intent of DevSecOps is to build on the mindset that "everyone is responsible
for security" with the goal of safely distributing security decisions at speed and scale to those
who hold the highest level of context without sacrificing the safety required.
• Introduces security as code
• Embraces the “shift left” testing strategy
• Leverages automation for resilience, testing, detection and audit
ChatOps :
Chat client + chat bots = conversation-driven development, delivery and support.
The transparency of ChatOps shortens feedback loops, improves information sharing, enhances team collaboration and enables cross-training. It can also be used to decrease MTTR .
Kanban :
Kanban is a method of work that pulls the flow of work through a process at a manageable pace.
• Visualizes and manage workflow
• Pulls work for teams when they are ready for it
• Enables people to work collaboratively to improve flow
• Measures team velocity (quantity of work done in an iteration)
• Reduces idle time and waste in a process
• Makes work visible
• Make policies explicit
• Limits work in progress (WIP) to capacity
Comments
Post a Comment