environment-matrix-devstgprod
Environment standards for development, staging, and production: parity principles, data and access policies, configuration boundaries, and deployment controls
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Environment Matrix: Dev/Stg/Prod
Overview
มาตรฐานการจัดการ environments (development, staging, production) รวมถึง configs, data policies, access controls ที่แตกต่างกันแต่ละ environment
Why This Matters
- Parity: Environments ใกล้เคียงกัน ลด "works on my machine"
- Safety: Production protected, staging for testing
- Clarity: รู้ว่า environment ไหนทำอะไรได้
- Compliance: Proper access controls
Core Concepts
1. Parity (เหมือนกันเท่าที่จำเป็น)
- staging ควร “production-like” ในเรื่อง topology, config shape, observability, and deployment flow
- ต่างเฉพาะสิ่งที่จำเป็นต่อความปลอดภัย/ต้นทุน (scale, data, access)
2. Data Policy
- dev: seed/mock ได้ แต่ต้องป้องกันการใช้ข้อมูลจริงโดยไม่ตั้งใจ
- staging: sanitized copy หรือ synthetic data (ห้าม PII ถ้าไม่จำเป็น)
- prod: real data + audit + retention policy
3. Access & Change Control
- prod ต้องมี least privilege, approvals, และ audit trail
- staging ใช้สำหรับ validation และ rehearsal ของ deployments/rollbacks
Environment Matrix
| Aspect | Development | Staging | Production |
|---|---|---|---|
| Purpose | Local dev, experiments | Pre-prod testing | Live users |
| Data | Seed/mock | Sanitized copy | Real |
| Scale | Minimal | Production-like | Full |
| Access | All devs | Restricted | Very restricted |
| Logging | Verbose | Standard | Standard + audit |
| Feature flags | All enabled | Selective | Controlled rollout |
| Secrets | Local vault | Staging vault | Prod vault |
| Domain | localhost | staging.example.com | example.com |
Quick Start
- ตั้ง
APP_ENV=development|staging|production|testเป็น source-of-truth - สร้าง “config matrix” ที่ keys เหมือนกันทุก env (ต่างเฉพาะค่า)
- แยก secrets ออกจาก config และใช้ secret manager ต่อ env
- ทำ access control matrix และกำหนดว่า “ใครทำอะไรได้” ต่อ env
Config Per Environment
// config/environments.ts
export const environments = {
development: {
apiUrl: 'http://localhost:3000',
database: 'dev_db',
logLevel: 'debug',
features: { all: true },
},
staging: {
apiUrl: 'https://staging-api.example.com',
database: 'staging_db',
logLevel: 'info',
features: { experimental: true },
},
production: {
apiUrl: 'https://api.example.com',
database: 'prod_db',
logLevel: 'warn',
features: { stable: true },
},
};
Access Control Matrix
| Role | Dev | Staging | Production |
|---|---|---|---|
| Developer | Full | Read + Deploy | Read logs only |
| Tech Lead | Full | Full | Read + Deploy |
| SRE/DevOps | Full | Full | Full |
| QA | Read | Full | Read only |
Production Checklist
- staging deploy flow เหมือน production (ต่างเฉพาะ scale/data/access)
- data policy ชัดเจน (sanitized, retention, PII handling)
- secrets แยกตาม env (ไม่มี reuse ข้าม env)
- prod มี approvals + audit logs สำหรับ deploy/config changes
- feature flags rollout rules ต่างกันชัดเจนระหว่าง envs
Anti-patterns
- Staging != Prod: staging ใช้งานจริงไม่ได้ ทำให้ bug หลุด prod
- Sharing secrets: ใช้ secret เดียวกันทุก env (risk สูงมาก)
- Real data in dev/staging: PII leak และ compliance risk
- No ownership: ไม่มีคนรับผิดชอบ access/policies ของแต่ละ env
Integration Points
- CI/CD environments (GitHub Environments, approvals, secrets)
- Secret managers and IAM
- Observability (separate tenants/projects per env)
- Data pipelines (masking/sanitization jobs)
Further Reading
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!