Definition
Application deployment is the combination of all the processes that make software available for use. This includes installation, running, configuration, testing and adjustments to the software. It is an important step in the software development lifecycle.
Application Deployment Process
The Application Deployment Process involves nine main steps:
- Plan: This is where development and operation teams contribute their input towards the overall goals. It is also where the deployment schedule is mapped out.
- Build and release automation: Human error, which leads to software issues, must be reduced as much as possible through automation.
- Develop continuous integration/continuous delivery (CI/CD): This means reducing the number of changes in each application update and pointing out future breakdowns.
- Create and test scripts: Involves running test scripts on production backup to identify environmental changes and discrepancies prior to final release.
- Identify key metrics: Ensure your team knows all about performance indicators across all applications.
- Test: Use synthetic transaction checks and double-check if the main components of an application, like the sign-in page, are working fine.
- Develop deployment tracking: Install and authorize tracking systems for ops teams to monitor rollouts and address errors.
- Notify Users and Colleagues: Keep the stakeholders informed about the deployment process to help manage expectations and resolve issues.
- Monitor and Iterate: Continuous monitoring and correction are crucial to software success after deployment.
Application Deployment Issues
- Compatibility issues: The application may encounter problems with some systems or devices.
- Configuration discrepancies: Disparities between the staging and production environment may result in unexpected problems when releasing code.
- User disruptions: The deployment might lead to multiple errors without a proper strategy, resulting in disruptions.
- Security risks: The incorrect handling of deployment can increase vulnerabilities to malware.
- Data loss: Lack of effective deployment strategies can lead to complete data loss.
- Version control challenges: The absence of a desirable deployment strategy could make version control a real problem in managing and tracking different software builds.
Application Deployment Methodologies
- Recreate: Upon termination of Version A, Version B is deployed.
- Ramped: Version is faced out, and Version B is slowly rolled out.
- Shadow: Version A and B work together where B receives real-world traffic without impacting response.
- Blue/Green deployment: Version B is rolled out with Version A, but traffic is later switched to B.
- A/B testing: Version B is sent to a sub-category of users under particular conditions.
- Canary: Version B is rolled out to a subset of users and then proceeds to full release.