- Data transfer costs due to many hops
- Costs/Complexity due to many apps
- consistend naming, tagging
- consistent auth
- consistent rate-limiting + retries
- staging
- health-check-proxy + pingdom
- load-testing
- autoscaling
- Varnish + dynamic backend routing + redirects
- consistent event mechanisms (request/response, sns/sqs, streams)
- Flexible Sampling
- Alerting (cloudwatch/pagerduty)
- root assets suck
- CDN
- Akamai
- AMP
- Invalidations
- E-Tags
- Cache-Tags
- TTL
- Single-Region
- moar monolithic apps
- ECS service discovery to avoid ALBs
- Deployment of pull requests
- embrace trace ids
- consistent use of SSM-Parameter-Store for credentials
- consistent use of ENV/Secrets within apps (SSM vs ENV)
- Central Account for CDN / DNS
- Reserved Instances ⇨ Savings plan
- diverse builds
- crappy deployment
- Logging + Logstash
- Metrics (datadog)
- diverse app setup (http-libs, async, event-driven, ...)
- unified builds (one source set, multi-stage-docker, Makefile)
- Github ⇨ CI ⇨ ECR █ ECR ⇨ CD ⇨ ECS
- Deploy PRs, route/test via HDRs