7. # your stack matters
* the single most important aspect
* cloud-ready open source libraries
for major platforms
* saves you a lot of development time
* rapid changes
* can lock you in
16. # storage
...but if we have to:
* avoid using HEAD/GET requests to
check for existing files
* store file list in memory instead
* use S3 “PRELOAD_METADATA”
18. # task queuing
use message/task queues for long running operations:
* image resizes
* external api calls
* low priority updates
* intensive calculations
* big data queues
* preparing hot caches
* indexing updates
* logging
19. # task queuing
* organize tasks into different queues
* organize queues into priority workers
* scale workers using AWS auto scaling
- send custom alerts using AWS CloudWatch API
* it’s all about priorities
Amazon
SQS
21. # database
* Amazon RDS does the trick
if you’re on MySQL or Oracle
* shard early
mark down table dependencies from the start, work
around this while you grow
23. # huh?
* it’s your code
* you know the dependencies
* you know it’s breaking points
* it’s your job to deal with
deployment failures
* continuous deployment? yes please!
24. # requirements
* 50+ deployments per day from n devs
* secure
* fast rollbacks on failure
* zero downtime
* dependency handling (restart
services, migrate dbs etc.)
25. # continuous deployment
dev dev git push/pull
repo
dev dev
git pull master
$: fab production deploy
server farm
0.0.0.1 0.0.0.2 0.0.0.3 0.0.0.4
27. pull from master ->
clone previous production for backup ->
run test suite (abort on failure) ->
deploy/compress static files on S3 ->
pre-compile less etc ->
install new dependencies ->
run db migration scripts ->
cleanup ->
rollback if something fails ->
backup live db ->
restart services if required
28. # continuous deployment
assumptions:
* master is always production safe
use pull request for large teams
* bootstrapped pre-configured AMIs
* handle stale servers with care
tools:
39. # conclusion
* use best practices and you’ll be safe
* your stack matters
* Cloud != high availability
* Cloud != high performance
* Cloud != magic (but it’s close)