1---2name: 1513-checklists-84782e5a3description: Checklists & Discovery Questions4---5# Checklists & Discovery Questions67Things MCP documentation doesn't tell you - context-dependent questions, trade-offs, and validation points.89## Architecture Discovery Questions1011Ask these before designing:1213### Tech Stack Context1415- [ ] What language/runtime does the team prefer? (Node, Python, Go, Java, etc.)16- [ ] What IaC tool is the team using? (Terraform, CDK, Serverless, SAM, etc.)17- [ ] Is there an existing project to integrate with?18- [ ] What's the deployment pipeline? (GitHub Actions, GitLab CI, CodePipeline, etc.)19- [ ] Any framework preferences? (Express, FastAPI, NestJS, etc.)2021### Business Context2223- [ ] What problem are we solving?24- [ ] Who are the users? (internal, external, B2B, B2C)25- [ ] What's the expected timeline?26- [ ] What's the budget range?27- [ ] Are there existing systems to integrate with?2829### Non-Functional Requirements3031- [ ] Availability target? (99.9%? 99.99%?)32- [ ] Latency requirements? (p50, p99)33- [ ] Throughput expectations? (RPS, concurrent users)34- [ ] Data retention requirements?35- [ ] Disaster recovery requirements? (RTO, RPO)3637### Constraints3839- [ ] Regulatory compliance? (HIPAA, PCI-DSS, GDPR, LGPD)40- [ ] Data residency requirements? (specific regions)41- [ ] Existing technology mandates?42- [ ] Team skills and experience?43- [ ] Vendor lock-in concerns?4445### Growth & Scale4647- [ ] Expected growth rate?48- [ ] Peak vs average load ratio?49- [ ] Seasonal patterns?50- [ ] Multi-region needs now or future?5152## Pre-Production Checklist5354Before going live:5556### Security5758- [ ] All secrets in Secrets Manager or Parameter Store59- [ ] IAM roles follow least privilege60- [ ] No hardcoded credentials anywhere61- [ ] Encryption at rest enabled (S3, RDS, EBS, DynamoDB)62- [ ] Encryption in transit (TLS 1.2+)63- [ ] VPC endpoints for AWS services (if private)64- [ ] Security groups reviewed (no 0.0.0.0/0 on sensitive ports)65- [ ] WAF configured (if public-facing)66- [ ] CloudTrail enabled67- [ ] GuardDuty enabled6869### Observability7071- [ ] CloudWatch alarms on key metrics72- [ ] Dashboards for operations team73- [ ] Log aggregation configured74- [ ] X-Ray tracing enabled (if applicable)75- [ ] Error alerting to on-call7677### Reliability7879- [ ] Multi-AZ deployment80- [ ] Auto-scaling configured81- [ ] Health checks defined82- [ ] Backups automated and tested83- [ ] Runbooks documented84- [ ] Incident response plan exists8586### Cost8788- [ ] Budget alerts configured89- [ ] Cost allocation tags applied90- [ ] Right-sizing reviewed91- [ ] Reserved capacity evaluated (if steady-state)92- [ ] Unused resources cleaned up9394### Operations9596- [ ] CI/CD pipeline tested97- [ ] Rollback procedure documented98- [ ] Database migration strategy defined99- [ ] Feature flags for risky changes100- [ ] Load testing completed101102## Security Review Checklist103104### IAM105106- [ ] No `*` in resource ARNs (be specific)107- [ ] No `*` in actions (use specific actions)108- [ ] Conditions used where possible (IP, MFA, tags)109- [ ] Service roles scoped to specific resources110- [ ] Cross-account access uses external ID111- [ ] Permission boundaries for delegated admins112113### Network114115- [ ] Private subnets for databases and app servers116- [ ] NAT Gateway for outbound from private subnets117- [ ] VPC Flow Logs enabled118- [ ] Security groups: ingress from specific sources only119- [ ] NACLs as backup layer (if needed)120- [ ] No public IPs unless required121122### Data123124- [ ] PII identified and protected125- [ ] Encryption keys customer-managed (if required)126- [ ] Backup encryption enabled127- [ ] Cross-region replication encrypted128- [ ] S3 Block Public Access enabled129- [ ] S3 bucket policies reviewed130131### Application132133- [ ] Input validation on all user input134- [ ] Output encoding for XSS prevention135- [ ] CORS configured correctly136- [ ] Rate limiting implemented137- [ ] Authentication tokens validated properly138- [ ] Session management secure139140### Logging & Monitoring141142- [ ] No sensitive data in logs143- [ ] Log retention configured144- [ ] Security events trigger alerts145- [ ] Failed login attempts monitored146- [ ] API throttling monitored147148## Cost Optimization Review149150### Compute151152- [ ] Right-sized instances (CPU, memory utilization <70%?)153- [ ] Spot instances for fault-tolerant workloads154- [ ] Savings Plans or Reserved Instances for steady-state155- [ ] Lambda memory optimized (power tuning)156- [ ] Graviton (ARM) considered for compatible workloads157158### Storage159160- [ ] S3 lifecycle policies (transition to IA, Glacier)161- [ ] EBS volumes right-sized162- [ ] Unused EBS snapshots cleaned163- [ ] S3 Intelligent-Tiering for unknown access patterns164165### Database166167- [ ] Right-sized instance class168- [ ] Reserved capacity for production169- [ ] Aurora Serverless v2 for variable workloads170- [ ] DynamoDB on-demand vs provisioned evaluated171- [ ] Read replicas only if needed172173### Network174175- [ ] NAT Gateway usage minimized (expensive!)176- [ ] VPC endpoints for high-volume AWS API calls177- [ ] CloudFront for static content (reduce origin load)178- [ ] Data transfer between regions minimized179180### General181182- [ ] Unused resources identified and removed183- [ ] Cost anomaly detection enabled184- [ ] Tagging strategy for cost allocation185- [ ] Regular cost reviews scheduled186187## Trade-offs to Discuss188189### IaC Tool Selection190191| Factor | Serverless/SST | SAM | CDK | Terraform |192| ---------------- | -------------- | --------- | -------------- | -------------- |193| Setup speed | Fast | Fast | Medium | Medium |194| Learning curve | Low | Low | Medium | Medium |195| Serverless focus | Excellent | Excellent | Good | Good |196| Non-serverless | Limited | Limited | Excellent | Excellent |197| Local dev | Good (SST) | Good | Limited | N/A |198| Multi-cloud | No | No | No | Yes |199| Team adoption | Easy | Easy | Needs training | Needs training |200| AWS support | Community | AWS | AWS | Community |201202### Serverless vs Containers203204| Factor | Serverless | Containers |205| -------------------- | ------------------ | --------------------- |206| Cold start | Yes (can mitigate) | No |207| Max execution | 15 min | Unlimited |208| Cost at low traffic | Lower | Higher (min capacity) |209| Cost at high traffic | Can be higher | Often lower |210| Operational overhead | Lower | Higher |211| Customization | Limited | Full control |212213### SQL vs NoSQL214215| Factor | SQL | NoSQL (DynamoDB) |216| ------------ | ------------------------ | ---------------------- |217| Schema | Fixed, migrations needed | Flexible |218| Queries | Complex joins, ad-hoc | Access pattern focused |219| Transactions | Full ACID | Limited (single table) |220| Scaling | Vertical (limited) | Horizontal (unlimited) |221| Cost model | Per hour | Per request/capacity |222223### Single-Region vs Multi-Region224225| Factor | Single | Multi |226| ---------------- | ---------- | --------------------- |227| Complexity | Low | High |228| Cost | Lower | Higher (2x+ infra) |229| Availability | 99.99% max | 99.999%+ possible |230| Latency | One region | Global low latency |231| Data consistency | Simple | Complex (CAP theorem) |232233### Managed vs Self-Managed234235| Factor | Managed Service | Self-Managed |236| -------------------- | -------------------- | --------------------------- |237| Operational overhead | Low | High |238| Customization | Limited | Full |239| Cost | Predictable, premium | Variable, potentially lower |240| Scaling | Automatic | Manual or custom |241| Updates/Patches | Automatic | Your responsibility |242243## Common Pitfalls244245### Architecture246247- Designing for scale you don't have yet (over-engineering)248- Not designing for the scale you will have (under-engineering)249- Ignoring operational complexity250- Choosing technology based on hype, not fit251252### Security253254- Overly permissive IAM policies "to make it work"255- Forgetting to rotate credentials256- Not enabling encryption "because it's internal"257- Security groups with 0.0.0.0/0 "temporarily"258259### Cost260261- Leaving dev/test resources running262- Not using Savings Plans for production263- NAT Gateway for everything (expensive!)264- Oversized instances "just in case"265266### Operations267268- No runbooks before production269- No alerting until something breaks270- No load testing until launch271- No rollback plan