الملفات
SRE-final-project/ci/README.md

1.5 KiB

Environments: Staging vs Production

In our deployment pipeline, we utilize two main environments: Staging and Production. Understanding the differences between them is crucial for safe software delivery.

1. Staging Environment (staging)

  • Purpose: A pre-production area for QA testing, integration testing, and final review by stakeholders before a release goes live.
  • Data: Uses dummy, sanitized, or replicated data. NEVER connects to the live production database.
  • Access: Restricted to internal team members, developers, and QA testers. Often protected by VPN, IP whitelisting, or Basic Auth.
  • Scale: Typically scaled down (fewer containers, smaller database instances) to save costs, as it doesn't need to handle user traffic.
  • Deployment: Automatic upon merging code to the main branch.

2. Production Environment (production)

  • Purpose: The live environment that real users interact with.
  • Data: Contains live, sensitive, real user data. Strict access controls and backups are enforced.
  • Access: Publicly accessible (for web apps/APIs). Infrastructure access is strictly limited to authorized SREs/DevOps personnel.
  • Scale: Scaled up to handle expected user load, with Auto-Scaling policies enabled to handle traffic spikes.
  • Deployment: Requires a Manual Approval step in the CI/CD pipeline (e.g., in GitHub Actions) to ensure that the code deployed to staging has been properly vetted and approved for live release.