Jump to content

Talk:04 Deployment & Release Management Procedure: Difference between revisions

From HEIN+FRICKE
Artha.kadamb@heinfricke.team (talk | contribs)
Created page with "=== 1 Introduction === ==== '''Purpose''': ==== * Create a clear, repeatable process for deploying and releasing software to production, ensuring teams can follow it. ==== '''Scope''': ==== * Covers all software projects (web, mobile, backend) across development, staging, and production environments in the company. ==== '''Key Terms''': ==== * Release: A versioned set of changes (e.g., v1.2.3). * Deployment: Moving a release to an environment. * Rollback: Rever..."
 
Artha.kadamb@heinfricke.team (talk | contribs)
Line 1: Line 1:
=== 1 Introduction ===
== 1 Introduction ==
 
==== '''Purpose''': ====


=== Purpose: ===
* Create a clear, repeatable process for deploying and releasing software to production, ensuring teams can follow it.  
* Create a clear, repeatable process for deploying and releasing software to production, ensuring teams can follow it.  


==== '''Scope''': ====
=== Scope: ===
 
* Covers all software projects (web, mobile, backend) across development, staging, and production environments in the company.  
* Covers all software projects (web, mobile, backend) across development, staging, and production environments in the company.  


==== '''Key Terms''': ====
=== 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 21: Line 18:
* Environment: Dev, staging, or prod setups.
* Environment: Dev, staging, or prod setups.


=== '''2. Roles and Responsibilities''' ===
== 2. Roles and Responsibilities ==
 
==== '''Key Roles''': ====


=== Key Roles: ===
* Release Manager: Plans and tracks releases, coordinates approvals.  
* Release Manager: Plans and tracks releases, coordinates approvals.  


Line 33: Line 29:
* Product Owner: Approves release scope and timing.  
* Product Owner: Approves release scope and timing.  


==== '''Deployment Team Tasks''': ====
=== 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 41: Line 36:
* Execute rollback if deployment fails.  
* Execute rollback if deployment fails.  


==== '''Release Management Team Tasks''': ====
=== Release Management Team Tasks: ===
 
* Schedule releases in Calendar.  
* Schedule releases in Calendar.  


Line 49: 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''': ====
=== 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.  


Line 57: Line 50:
* '''Escalation Contacts''': List names, contacts and emails for Release Manager, Lead, and Product owner for urgent issues.
* '''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''': ====


=== 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 79: Line 71:
* Close Jira ticket with logs and release notes.  
* Close Jira ticket with logs and release notes.  


==== '''SDLC Fit''': ====
=== 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''': ====
=== 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 91: 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''': ====
=== 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 99: 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''': ====
=== 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 109: Line 97:
* Tag releases in Git (e.g., git tag v1.2.3) and push to repo.  
* Tag releases in Git (e.g., git tag v1.2.3) and push to repo.  


=== '''4. Release Planning''' ===
== 4. Release Planning ==
 
==== '''Release Types''': ====


=== Release Types: ===
* Major: Big major features scheduled quarterly.  
* Major: Big major features scheduled quarterly.  


Line 119: Line 106:
* Emergency: Critical fixes deployed same or next day.  
* Emergency: Critical fixes deployed same or next day.  


==== '''Scheduling and communication''': ====
=== 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 135: Line 121:
* Notify stakeholders via email about potential user-facing changes.  
* Notify stakeholders via email about potential user-facing changes.  


==== '''Release Criteria''': ====
=== Release Criteria: ===
 
* Code passes 90%-unit test coverage.  
* Code passes 90%-unit test coverage.  


Line 145: Line 130:
* Documentation for the deliverable is updated and reviewed.  
* Documentation for the deliverable is updated and reviewed.  


==== '''Risk Checks''': ====
=== 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 153: Line 137:
* Confirm no conflicts with other scheduled deployments or maintenance.  
* Confirm no conflicts with other scheduled deployments or maintenance.  


==== '''Approvals''': ====
=== 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 163: Line 146:
* Log all approvals in Jira with timestamps and usernames.  
* Log all approvals in Jira with timestamps and usernames.  


==== '''Dependencies''': ====
=== Dependencies: ===
 
* List external dependencies if any in Jira.  
* List external dependencies if any in Jira.  


* Check dependency versions in staging before prod.  
* Check dependency versions in staging before prod.  


=== '''5. Deployment Process''' ===
== 5. Deployment Process ==


==== '''Pre-Deployment Activities''': ====
=== Pre-Deployment Activities: ===
 
===== Environment Setup: =====


==== Environment Setup: ====
* Check server health (CPU <80%, memory <70%).
* Check server health (CPU <80%, memory <70%).


Line 181: Line 162:
* Validate SSL certificates are active.
* Validate SSL certificates are active.


==== '''Build and Packaging''': ====
==== Build and Packaging: ====


* Run build scripts to create artifacts.
* Run build scripts to create artifacts.
Line 191: 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''': ====
==== Checklist: ====


* Confirm prod backups are complete.
* Confirm prod backups are complete.
Line 201: Line 182:
* Ensure rollback artifacts are available in Artifactory.  
* Ensure rollback artifacts are available in Artifactory.  


==== '''Backups''': ====
==== Backups: ====


* Create database backups.
* Create database backups.
Line 209: 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''': ====
=== Deployment Execution: ===
 
===== Checklist: =====


==== Checklist: ====
* Verify artifact version matches Git tag.
* Verify artifact version matches Git tag.


* Check dependencies are installed.
* Check dependencies are installed.


==== '''Execution''' ====
==== Execution: ====
 
* Run deployment script or manual deployment.  
* Run deployment script or manual deployment.  


==== '''Monitoring''': ====
==== Monitoring: ====
 
* Watch server logs.
* Watch server logs.


* Monitor CPU, memory, and response times.
* Monitor CPU, memory, and response times.


==== '''Post-Deployment Activities''': ====
=== Post-Deployment Activities: ===
 
===== '''Verification''': =====


==== 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 237: Line 214:
* Confirm key features work via manual checks or automated scripts.
* Confirm key features work via manual checks or automated scripts.


===== '''Rollback''': =====
==== 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 247: Line 223:
* Notify teams if rollback occurs.
* Notify teams if rollback occurs.


===== '''Notifications''': =====
==== 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 255: Line 230:
* Notify stakeholders of any user-facing changes via email.
* Notify stakeholders of any user-facing changes via email.


===== '''Documentation''': =====
==== 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.

Revision as of 10:18, 22 December 2025

1 Introduction

Purpose:

  • Create a clear, repeatable process for deploying and releasing software to production, ensuring teams can follow it.

Scope:

  • Covers all software projects (web, mobile, backend) across development, staging, and production environments in the company.

Key Terms:

  • 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

Key Roles:

  • 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.

Deployment Team Tasks:

  • Set up and validate servers or cloud environments (e.g., AWS, Azure).
  • Run deployment scripts and monitor logs.
  • Execute rollback if deployment fails.

Release Management Team Tasks:

  • Schedule releases in Calendar.
  • Collect acceptance from QA and Product Owners.
  • Update release notes in a shared repo (e.g., GitHub Wiki).

Team Collaboration:

  • 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

Core Steps:

  • 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.

SDLC Fit:

  • Agile: Deploy after each sprint (e.g., every 2 weeks); link to sprint tickets in Jira.

Change Tracking:

  • 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.

Exceptions:

  • 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.

Version Control:

  • 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

Release Types:

  • Major: Big major features scheduled quarterly.
  • Minor: Small enhancements or Bug fixes scheduled sprint wise.
  • Emergency: Critical fixes deployed same or next day.

Scheduling and communication:

  • 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.

Release Criteria:

  • 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.

Risk Checks:

  • 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.

Approvals:

  • 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.

Dependencies:

  • List external dependencies if any in Jira.
  • Check dependency versions in staging before prod.

5. Deployment Process

Pre-Deployment Activities:

Environment Setup:

  • Check server health (CPU <80%, memory <70%).
  • Verify database connectivity (e.g., MySQL, PostgreSQL) with test queries.
  • Validate SSL certificates are active.

Build and Packaging:

  • 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.

Checklist:

  • Confirm prod backups are complete.
  • Verify network connectivity.
  • Check disk space on prod servers.
  • Ensure rollback artifacts are available in Artifactory.

Backups:

  • Create database backups.
  • Backup configuration files.
  • Test and validate restore process in staging to confirm backups are usable.

Deployment Execution:

Checklist:

  • Verify artifact version matches Git tag.
  • Check dependencies are installed.

Execution:

  • Run deployment script or manual deployment.

Monitoring:

  • Watch server logs.
  • Monitor CPU, memory, and response times.

Post-Deployment Activities:

Verification:

  • 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.

Rollback:

  • 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.

Notifications:

  • 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.

Documentation:

  • Update release notes in GitHub Wiki with features, fixes, and issues.
  • Record new environment settings (e.g., updated API keys) in Confluence.