Talk:04 Deployment & Release Management Procedure: Difference between revisions
Add topicAppearance
No edit summary |
|||
| Line 1: | Line 1: | ||
== 1 Introduction == | == 1 Introduction == | ||
=== Purpose | === 1.1 Purpose === | ||
Create a clear, repeatable process for deploying and releasing software to production, ensuring teams can follow it. | |||
=== Scope | === 1.2 Scope === | ||
Covers all software projects (web, mobile, backend) across development, staging, and production environments in the company. | |||
=== Key Terms | === 1.3 Key Terms === | ||
* Release: A versioned set of changes (e.g., v1.2.3). | * Release: A versioned set of changes (e.g., v1.2.3). | ||
| Line 20: | Line 20: | ||
== 2. Roles and Responsibilities == | == 2. Roles and Responsibilities == | ||
=== Key Roles | === 2.1 Key Roles === | ||
* Release Manager: Plans and tracks releases, coordinates approvals. | * Release Manager: Plans and tracks releases, coordinates approvals. | ||
| Line 29: | Line 29: | ||
* Product Owner: Approves release scope and timing. | * Product Owner: Approves release scope and timing. | ||
=== Deployment Team Tasks | === 2.2 Deployment Team Tasks === | ||
* Set up and validate servers or cloud environments (e.g., AWS, Azure). | * Set up and validate servers or cloud environments (e.g., AWS, Azure). | ||
| Line 36: | Line 36: | ||
* Execute rollback if deployment fails. | * Execute rollback if deployment fails. | ||
=== Release Management Team Tasks | === 2.3 Release Management Team Tasks === | ||
* Schedule releases in Calendar. | * Schedule releases in Calendar. | ||
| Line 43: | Line 43: | ||
* Update release notes in a shared repo (e.g., GitHub Wiki). | * Update release notes in a shared repo (e.g., GitHub Wiki). | ||
=== Team Collaboration | === 2.4 Team Collaboration === | ||
* Developers push code to Git; QA tests in staging; Ops confirms prod readiness. | * Developers push code to Git; QA tests in staging; Ops confirms prod readiness. | ||
* Daily standups or Slack channels for updates. | * Daily standups or Slack channels for updates. | ||
* | * Escalation Contacts: List names, contacts and emails for Release Manager, Lead, and Product owner for urgent issues. | ||
== 3. Deployment & Release Management Process Overview == | == 3. Deployment & Release Management Process Overview == | ||
=== Core Steps | === 3.1 Core Steps === | ||
* Create a release plan in Jira with scope, timeline, and dependencies. | * Create a release plan in Jira with scope, timeline, and dependencies. | ||
| Line 71: | Line 71: | ||
* Close Jira ticket with logs and release notes. | * Close Jira ticket with logs and release notes. | ||
=== SDLC Fit | === 3.2 SDLC Fit === | ||
* Agile: Deploy after each sprint (e.g., every 2 weeks); link to sprint tickets in Jira. | * Agile: Deploy after each sprint (e.g., every 2 weeks); link to sprint tickets in Jira. | ||
=== Change Tracking | === 3.3 Change Tracking === | ||
* Log all code changes in Git with commit messages (e.g., “Fix #123: login bug”). | * Log all code changes in Git with commit messages (e.g., “Fix #123: login bug”). | ||
| Line 81: | Line 81: | ||
* Use Git tags (e.g., v1.2.3) for release versioning. | * Use Git tags (e.g., v1.2.3) for release versioning. | ||
=== Exceptions | === 3.4 Exceptions === | ||
* Emergency releases: Skip staging, deploy hotfix directly to prod with CTO approval via Slack. | * Emergency releases: Skip staging, deploy hotfix directly to prod with CTO approval via Slack. | ||
| Line 88: | Line 88: | ||
* Notify all teams via Slack #releases within 1 hour of emergency deployment. | * Notify all teams via Slack #releases within 1 hour of emergency deployment. | ||
=== Version Control | === 3.5 Version Control === | ||
* Use Git branches: main for prod, develop for dev, release/v1.2.3 for releases. | * Use Git branches: main for prod, develop for dev, release/v1.2.3 for releases. | ||
| Line 99: | Line 99: | ||
== 4. Release Planning == | == 4. Release Planning == | ||
=== Release Types | === 4.1 Release Types === | ||
* Major: Big major features scheduled quarterly. | * Major: Big major features scheduled quarterly. | ||
| Line 106: | Line 106: | ||
* Emergency: Critical fixes deployed same or next day. | * Emergency: Critical fixes deployed same or next day. | ||
=== Scheduling and communication | === 4.2 Scheduling and communication === | ||
* Create a release calendar in Google Calendar or Jira, shared with all teams. | * Create a release calendar in Google Calendar or Jira, shared with all teams. | ||
| Line 121: | Line 121: | ||
* Notify stakeholders via email about potential user-facing changes. | * Notify stakeholders via email about potential user-facing changes. | ||
=== Release Criteria | === 4.3 Release Criteria === | ||
* Code passes 90%-unit test coverage. | * Code passes 90%-unit test coverage. | ||
| Line 130: | Line 130: | ||
* Documentation for the deliverable is updated and reviewed. | * Documentation for the deliverable is updated and reviewed. | ||
=== Risk Checks | === 4.4 Risk Checks === | ||
* Verify database migrations won’t break existing data (e.g., run in staging first). | * Verify database migrations won’t break existing data (e.g., run in staging first). | ||
| Line 137: | Line 137: | ||
* Confirm no conflicts with other scheduled deployments or maintenance. | * Confirm no conflicts with other scheduled deployments or maintenance. | ||
=== Approvals | === 4.5 Approvals === | ||
* Product Owner approves release scope in Jira ticket (e.g., REL-789). | * Product Owner approves release scope in Jira ticket (e.g., REL-789). | ||
| Line 146: | Line 146: | ||
* Log all approvals in Jira with timestamps and usernames. | * Log all approvals in Jira with timestamps and usernames. | ||
=== Dependencies | === 4.6 Dependencies === | ||
* List external dependencies if any in Jira. | * List external dependencies if any in Jira. | ||
| Line 153: | Line 153: | ||
== 5. Deployment Process == | == 5. Deployment Process == | ||
=== Pre-Deployment Activities: === | === 5.1 Pre-Deployment Activities: === | ||
==== Environment Setup | ==== 5.1.1 Environment Setup ==== | ||
* Check server health (CPU <80%, memory <70%). | * Check server health (CPU <80%, memory <70%). | ||
| Line 162: | Line 162: | ||
* Validate SSL certificates are active. | * Validate SSL certificates are active. | ||
==== Build and Packaging | ==== 5.1.2 Build and Packaging ==== | ||
* Run build scripts to create artifacts. | * Run build scripts to create artifacts. | ||
| Line 172: | Line 172: | ||
* Tag build in Git (e.g., git tag v1.2.3) and push to repo. | * Tag build in Git (e.g., git tag v1.2.3) and push to repo. | ||
==== Checklist | ==== 5.1.3 Checklist ==== | ||
* Confirm prod backups are complete. | * Confirm prod backups are complete. | ||
| Line 182: | Line 182: | ||
* Ensure rollback artifacts are available in Artifactory. | * Ensure rollback artifacts are available in Artifactory. | ||
==== Backups | ==== 5.1.4 Backups ==== | ||
* Create database backups. | * Create database backups. | ||
| Line 190: | Line 190: | ||
* Test and validate restore process in staging to confirm backups are usable. | * Test and validate restore process in staging to confirm backups are usable. | ||
=== Deployment Execution: === | === 5.2 Deployment Execution: === | ||
==== Checklist | ==== 5.2.1 Checklist ==== | ||
* Verify artifact version matches Git tag. | * Verify artifact version matches Git tag. | ||
* Check dependencies are installed. | * Check dependencies are installed. | ||
==== Execution | ==== 5.2.2 Execution ==== | ||
* Run deployment script or manual deployment. | * Run deployment script or manual deployment. | ||
==== Monitoring | ==== 5.2.3 Monitoring ==== | ||
* Watch server logs. | * Watch server logs. | ||
* Monitor CPU, memory, and response times. | * Monitor CPU, memory, and response times. | ||
=== Post-Deployment Activities: === | === 5.3 Post-Deployment Activities: === | ||
==== Verification | ==== 5.3.1 Verification ==== | ||
* Run smoke tests (e.g., login, API health check) in prod within 10 minutes. | * Run smoke tests (e.g., login, API health check) in prod within 10 minutes. | ||
| Line 214: | Line 214: | ||
* Confirm key features work via manual checks or automated scripts. | * Confirm key features work via manual checks or automated scripts. | ||
==== Rollback | ==== 5.3.2 Rollback ==== | ||
* Revert to previous artifact in Artifactory (e.g., app-v1.2.2.jar). | * Revert to previous artifact in Artifactory (e.g., app-v1.2.2.jar). | ||
| Line 223: | Line 223: | ||
* Notify teams if rollback occurs. | * Notify teams if rollback occurs. | ||
==== Notifications | ==== 5.3.3 Notifications ==== | ||
* Email clients with release notes for major releases (e.g., new UI features). | * Email clients with release notes for major releases (e.g., new UI features). | ||
| Line 230: | Line 230: | ||
* Notify stakeholders of any user-facing changes via email. | * Notify stakeholders of any user-facing changes via email. | ||
==== Documentation | ==== 5.3.4 Documentation ==== | ||
* Update release notes in GitHub Wiki with features, fixes, and issues. | * Update release notes in GitHub Wiki with features, fixes, and issues. | ||
* Record new environment settings (e.g., updated API keys) in Confluence. | * Record new environment settings (e.g., updated API keys) in Confluence. | ||
Latest revision as of 11:19, 22 December 2025
1 Introduction[edit | edit source]
1.1 Purpose[edit | edit source]
Create a clear, repeatable process for deploying and releasing software to production, ensuring teams can follow it.
1.2 Scope[edit | edit source]
Covers all software projects (web, mobile, backend) across development, staging, and production environments in the company.
1.3 Key Terms[edit | edit source]
- Release: A versioned set of changes (e.g., v1.2.3).
- Deployment: Moving a release to an environment.
- Rollback: Reverting to the previous working version.
- Artifact: A compiled, versioned package (e.g., .jar, .zip).
- Environment: Dev, staging, or prod setups.
2. Roles and Responsibilities[edit | edit source]
2.1 Key Roles[edit | edit source]
- Release Manager: Plans and tracks releases, coordinates approvals.
- Deployment Engineer: Runs deployments, checks environments.
- QA Lead: Verifies test results before deployment.
- Product Owner: Approves release scope and timing.
2.2 Deployment Team Tasks[edit | edit source]
- Set up and validate servers or cloud environments (e.g., AWS, Azure).
- Run deployment scripts and monitor logs.
- Execute rollback if deployment fails.
2.3 Release Management Team Tasks[edit | edit source]
- Schedule releases in Calendar.
- Collect acceptance from QA and Product Owners.
- Update release notes in a shared repo (e.g., GitHub Wiki).
2.4 Team Collaboration[edit | edit source]
- Developers push code to Git; QA tests in staging; Ops confirms prod readiness.
- Daily standups or Slack channels for updates.
- Escalation Contacts: List names, contacts and emails for Release Manager, Lead, and Product owner for urgent issues.
3. Deployment & Release Management Process Overview[edit | edit source]
3.1 Core Steps[edit | edit source]
- Create a release plan in Jira with scope, timeline, and dependencies.
- Deploy features in staging for QA verification.
- Fix bugs in relative branches.
- Complete integration testing.
- Deploy and demo on Test environment for stakeholders' acceptance.
- On formal acceptance and product owners' approval, prepare for Production deployment.
- Verify functionality, and rollback if issues arise.
- Document every step in Jira
- Close Jira ticket with logs and release notes.
3.2 SDLC Fit[edit | edit source]
- Agile: Deploy after each sprint (e.g., every 2 weeks); link to sprint tickets in Jira.
3.3 Change Tracking[edit | edit source]
- Log all code changes in Git with commit messages (e.g., “Fix #123: login bug”).
- Link commits to Jira tickets for traceability (e.g., JIRA-456).
- Use Git tags (e.g., v1.2.3) for release versioning.
3.4 Exceptions[edit | edit source]
- Emergency releases: Skip staging, deploy hotfix directly to prod with CTO approval via Slack.
- Tag emergency tickets in Jira with “HOTFIX” prefix and log justification.
- Notify all teams via Slack #releases within 1 hour of emergency deployment.
3.5 Version Control[edit | edit source]
- Use Git branches: main for prod, develop for dev, release/v1.2.3 for releases.
- Require pull requests (PRs) with at least 1 reviewer in GitHub
- Include commit messages with Jira ticket IDs (e.g., “JIRA-456: Add payment API”).
- Tag releases in Git (e.g., git tag v1.2.3) and push to repo.
4. Release Planning[edit | edit source]
4.1 Release Types[edit | edit source]
- Major: Big major features scheduled quarterly.
- Minor: Small enhancements or Bug fixes scheduled sprint wise.
- Emergency: Critical fixes deployed same or next day.
4.2 Scheduling and communication[edit | edit source]
- Create a release calendar in Google Calendar or Jira, shared with all teams.
- Avoid deployments during peak usage (e.g., 9 AM–5 PM weekdays for e-commerce apps).
- Set maintenance windows (e.g., Sunday 2 AM–4 AM) for major releases if required.
- Notify teams via email and communication 24 hours before employment.
- Update internal Confluence page with release details
- Include version number, release date, and Jira ticket IDs.
- Notify stakeholders via email about potential user-facing changes.
4.3 Release Criteria[edit | edit source]
- Code passes 90%-unit test coverage.
- Zero critical or high-severity bugs in QA tests, tracked in Jira.
- Performance tests (e.g., JMeter) meet thresholds and latencies.
- Documentation for the deliverable is updated and reviewed.
4.4 Risk Checks[edit | edit source]
- Verify database migrations won’t break existing data (e.g., run in staging first).
- Test rollback scripts in staging to ensure they work.
- Confirm no conflicts with other scheduled deployments or maintenance.
4.5 Approvals[edit | edit source]
- Product Owner approves release scope in Jira ticket (e.g., REL-789).
- QA Lead signs off on tests via Jira comment or email.
- Tech lead approves emergency releases via Email or Teams
- Log all approvals in Jira with timestamps and usernames.
4.6 Dependencies[edit | edit source]
- List external dependencies if any in Jira.
- Check dependency versions in staging before prod.
5. Deployment Process[edit | edit source]
5.1 Pre-Deployment Activities:[edit | edit source]
5.1.1 Environment Setup[edit | edit source]
- Check server health (CPU <80%, memory <70%).
- Verify database connectivity (e.g., MySQL, PostgreSQL) with test queries.
- Validate SSL certificates are active.
5.1.2 Build and Packaging[edit | edit source]
- Run build scripts to create artifacts.
- Create database migration release script.
- Push artifacts to Artifactory with version tags.
- Tag build in Git (e.g., git tag v1.2.3) and push to repo.
5.1.3 Checklist[edit | edit source]
- Confirm prod backups are complete.
- Verify network connectivity.
- Check disk space on prod servers.
- Ensure rollback artifacts are available in Artifactory.
5.1.4 Backups[edit | edit source]
- Create database backups.
- Backup configuration files.
- Test and validate restore process in staging to confirm backups are usable.
5.2 Deployment Execution:[edit | edit source]
5.2.1 Checklist[edit | edit source]
- Verify artifact version matches Git tag.
- Check dependencies are installed.
5.2.2 Execution[edit | edit source]
- Run deployment script or manual deployment.
5.2.3 Monitoring[edit | edit source]
- Watch server logs.
- Monitor CPU, memory, and response times.
5.3 Post-Deployment Activities:[edit | edit source]
5.3.1 Verification[edit | edit source]
- Run smoke tests (e.g., login, API health check) in prod within 10 minutes.
- Check performance (e.g., <200ms response time) manually or in Grafana dashboards.
- Confirm key features work via manual checks or automated scripts.
5.3.2 Rollback[edit | edit source]
- Revert to previous artifact in Artifactory (e.g., app-v1.2.2.jar).
- Restore database from last backup.
- Test rollback in staging first if time permits.
- Notify teams if rollback occurs.
5.3.3 Notifications[edit | edit source]
- Email clients with release notes for major releases (e.g., new UI features).
- Email specific stakeholders for hotfix.
- Notify stakeholders of any user-facing changes via email.
5.3.4 Documentation[edit | edit source]
- Update release notes in GitHub Wiki with features, fixes, and issues.
- Record new environment settings (e.g., updated API keys) in Confluence.