15-cost-controls.md
markdown
sha256:7d5985ef251de9f0154f9b185a75cf36174bf73e0c34f5eca133e7bd20224bf4
Merge branch 'feat/opengraph-repo-cards' into dev
Human
22 days ago
Section 15 — Cost Controls
Companion to
musehub-production-readiness-checklist.md.
Verified today
- Baseline cost is well-documented in
docs/infrastructure.md: ~$35/mo for both environments running (2×t3.small/t3.mediumEC2, 2× Elastic IP, 2× EBS gp3 20GB). This already satisfies "document expected baseline monthly cost." - Tagging is inconsistent and mostly absent:
musehub-prodinstance has only aNametag;musehub-staginghasName+Environmentbut nothing else. Themusehub-releasesS3 bucket has no tags at all (NoSuchTagSet). NoOwner,Managed-by, orCost-centertags exist anywhere. ECR repo tags couldn't be checked (permission denied) — likely the same story. - Account-level budgets, Cost Anomaly Detection, and billing contacts — all blocked, same permissions gap as Sections 2/3/13. Needs Gabriel or the broader-access grant.
- Shared account with Stori (Section 2) means cost attribution between the two projects is not currently possible without consistent tagging — this is the practical reason tagging matters more here than it would in a MuseHub-dedicated account.
Checklist assessment
- [ ] Apply consistent cost-allocation tags. — not done, confirmed inconsistent/absent above
- [ ] Create monthly AWS budgets. — blocked, needs Gabriel/broader access
- [ ] Alert Gabriel and Aaron at multiple thresholds. — N/A until budgets exist
- [ ] Enable Cost Anomaly Detection. — blocked
- [ ] Review NAT Gateway, data-transfer, and logging costs. — N/A for NAT (none exists, Section 5);
logging cost is a real open item given
/musehub/staging's unlimited retention (Section 12) — 1.7GB and growing forever - [x] Set log-retention limits. — tracked as an open item under Section 12, not duplicated here
- [ ] Set backup-retention limits consistent with recovery requirements. — N/A, no backups exist yet (Section 8)
- [ ] Right-size production after load testing. — not done, no load testing has occurred
- [ ] Review idle resources. — not reviewed; worth checking whether staging is stopped when unused per
docs/infrastructure.md's own suggestion ("stop when not in use to reduce cost") — evidence suggests it's left running (log group actively receiving traffic during this session) - [x] Document expected baseline monthly cost. — already done in
docs/infrastructure.md(~$35/mo) - [ ] Document the cost implications of autoscaling. — N/A, no autoscaling exists (Section 5)
- [ ] Configure service quotas and limits deliberately. — not done, same as Section 5's open item
- [ ] Review production cost weekly during the first month. — process doesn't exist yet, deferred to Section 19 (Post-Launch)
- [ ] Add owner and purpose tags to every billable resource. — not done, see tagging findings above
- [ ] Alert on untagged or unexpectedly expensive resources where practical. — not done
The actual work items here
- Apply a consistent tag set (
Application,Environment,Owner,Managed-by,Cost-center) across every resource — cheap to do now, gets much harder to retrofit later, and directly enables cost attribution in the shared Stori/MuseHub account. - Once broader access lands: set up account-level budgets with multi-threshold alerts to both Gabriel and Aaron, and enable Cost Anomaly Detection.
- Decide whether staging should actually be stopped during idle periods per
infrastructure.md's own suggestion, given it appears to be left running continuously today.
File History
1 commit
sha256:be1b2fdf6ab1fc652b3b35a945d0277a36fbf5d96e63692020d36cd7ebe03534
Merge 'docs/security-monitoring-verified' into 'dev' — prop…
Human
2 days ago