Continuous deployment (CD) is a practice where software is automatically released to production anytime after being built to ensure it can be released. CD aims to detect bugs early, ensure seamless deployments, and give developers and users a good experience. Foundations of CD include configuration management, continuous integration, continuous testing, and ensuring the software can be deployed reliably to different environments. CD reduces cycle times, enables negligible downtime with frequent releases, and allows for immediate user feedback.
Continuous deployment (CD) is a practice where software is automatically released to production anytime after being built to ensure it can be released. CD aims to detect bugs early, ensure seamless deployments, and give developers and users a good experience. Foundations of CD include configuration management, continuous integration, continuous testing, and ensuring the software can be deployed reliably to different environments. CD reduces cycle times, enables negligible downtime with frequent releases, and allows for immediate user feedback.
Continuous Deployment [CD] is a software development practice,
where software is built in such a way that it can be released automatically to production any time.
CD is a logical extension of Continuous Integration, which together aims at giving developers and end users an incredible experience by:
○ Detecting bugs at an early stage. ○ Ensuring seamless deployments to all environments.
A reliable release is highly at stake when: ○ The software is deployed manually. ○ Development is completed and then deployed to a production-like environment. ○ Lack of proper configuration tools.
Adapt Continuous Deployment for a stable and reliable release.
Why CD?... ○ Reduced cycle time: Reduces the time it takes from the development of code to the changed code being used by users in production. ○ Zero downtime releases: Frequent deployment of changes enables negligible production downtime. ○ High quality: Issues detected early and fixed immediately, ensures the best quality of the end product. ○ Immediate user feedback: Frequent deployment enables quick user feedback.
We need to practice Continuous Delivery in order to do Continuous Deployment but the reverse is not mandated.
Foundations of CD: ○ Configuration Management: It is the practice where every artifact from source code to build executables, test scripts, deployment scripts, and environment configuration details are stored, uniquely identified, retrieved, and modified when needed. It is often used as a synonym for version control. Configuration management enables Reproducibility and Traceability. Environment Configuration
An environment is the: ▪ Set of resources needed for an application to work. ▪ Configuration of those resources.
Attributes that describe an environment are: ▪ Hardware configuration (amount of memory, the number, type of CPUs and so on). ▪ Network infrastructure ▪ Operating environment
▪ Middleware configuration (software such as database servers,
messaging systems, application and web servers).
Integrating Environment Configuration Environment configuration details can be integrated at: ▪ Build time: Build scripts pulls the details and integrates with the build deliverables. ▪ Package creation ▪ Deployment time: As part of the installation, deployment scripts will fetch and pass the required details to the application. ▪ Design the application to pull the details during the run time or start up. Avoid integrating configuration during build or packaging time. If included at this stage: • Same executables cannot be deployed to all environments. • Tested and released software may not be the same. Supply configuration information for different environments using the same source or mechanism. • Only one source to be changed, managed and controlled. • Use registry settings, configuration files, database or an external configuration server like SOAP, REST interface, etc. ○ Continuous Integration ○ Continuous Testing Alpha & Beta testing: Improves usability of the end product.
Alpha: Testing is done in development environment.
Beta: Testing is done in customer environment.
Contract Acceptance testing : Testing is done to ensure criteria and specifications agreed in the contract are met.
Types of AT... Regulation Acceptance testing: Tests if the software complies with the regulations.
Operational Acceptance testing: Tests the operational readiness of the application (such as security, backup, and recovery tests).