Jump to content

Talk:04 Deployment & Release Management Procedure

Add topic
From HEIN+FRICKE

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.