architecting for the cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/adamwiggins... ·...

40
Adam Wiggins QCon 2009 Horizontal Scalability via Transient, Shardable, Share-Nothing Resources Architecting for the Cloud Thursday, November 19, 2009

Upload: others

Post on 23-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Adam WigginsQCon 2009

Horizontal Scalabilityvia Transient, Shardable,Share-Nothing Resources

Architecting for the Cloud

Thursday, November 19, 2009

Page 2: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Thursday, November 19, 2009

Page 3: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Heroku is home to over 40,000 applications

Thursday, November 19, 2009

Page 4: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Automatically scaling apps - without code changes

Thursday, November 19, 2009

Page 5: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Enabling factors:

Thursday, November 19, 2009

Page 6: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Enabling factors:

•Virtualization

Thursday, November 19, 2009

Page 7: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Enabling factors:

•Virtualization•Cloud (virtualization as a service)

Thursday, November 19, 2009

Page 8: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Cloud is about horizontal scalability

Thursday, November 19, 2009

Page 9: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Scale out instead of up to avoid the ceiling of Moore’s law

Thursday, November 19, 2009

Page 10: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Taking advantage of cloud:shardable resources

Thursday, November 19, 2009

Page 11: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Resources, aka software infrastructure:•Database•Caching•HTTP router•Message bus

Thursday, November 19, 2009

Page 12: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

The father of modern shardable resources:

memcached

Thursday, November 19, 2009

Page 13: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

“hashtable in the sky”

Thursday, November 19, 2009

Page 14: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Built by one of the first web-scale produts: LiveJournal

Thursday, November 19, 2009

Page 15: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Facebook:800 memcached servers supplying 28 terrabytes of memory

http://www.facebook.com/note.php?note_id=39391378919

Thursday, November 19, 2009

Page 16: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Pricinples

•Transient•Shardable•Share-nothing

Thursday, November 19, 2009

Page 17: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Any node in the cluster can be lost

Transient

Thursday, November 19, 2009

Page 18: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Client lookup by hashring

Shardable

Thursday, November 19, 2009

Page 19: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Thursday, November 19, 2009

Page 20: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Nodes are unaware of each other

Share nothing

Thursday, November 19, 2009

Page 21: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Is memcached is cheating?

Thursday, November 19, 2009

Page 22: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

CouchDB

Thursday, November 19, 2009

Page 23: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

CouchDB

•Document database

Thursday, November 19, 2009

Page 24: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

CouchDB

•Document database•Eventual consistency

Thursday, November 19, 2009

Page 25: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

CouchDB

•Document database•Eventual consistency •MVCC

Thursday, November 19, 2009

Page 26: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Eventually consistent

Thursday, November 19, 2009

Page 27: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Multiversion concurrency control instead of locking

Thursday, November 19, 2009

Page 28: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Comparable to a distributed source control system

Thursday, November 19, 2009

Page 29: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

No master server

Transient

Thursday, November 19, 2009

Page 30: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Clients can go to any server

Shardable

Thursday, November 19, 2009

Page 31: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Nodes communicate only when asked to replicate

Share nothing

Thursday, November 19, 2009

Page 32: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

CouchDB:The DefinitiveGuide

http://books.couchdb.org/relax/

Thursday, November 19, 2009

Page 33: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Hadoop big data processing

•MapReduce•Cut big data into small chunks•Cut big work into distributable jobs

http://hadoop.apache.org/

Thursday, November 19, 2009

Page 34: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Redis key-value store

•Like memcached with persistence•Shards with hashring•Lists and sets•Extremely fast and lightweight

http://code.google.com/p/redis/

Thursday, November 19, 2009

Page 35: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Varnish http cache

•Like Squid, but horizontally scalable•Combine with ngx_http_upstream_consistent_hash for hashring-style access

http://wiki.nginx.org/NginxHttpUpstreamConsistentHash

http://varnish.projects.linpro.no/

Thursday, November 19, 2009

Page 36: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

RabbitMQ message bus

•Job queueing•Cluster broadcast via exchanges•Cross-language

http://www.rabbitmq.com/

Thursday, November 19, 2009

Page 37: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Erlang functional language

•High concurrency•No mutable variables•Lightweight processes

http://www.erlang.org/

Thursday, November 19, 2009

Page 38: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

Horizontal scalability promises to shatter the glass ceiling of vertical scale

Thursday, November 19, 2009

Page 39: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

...but only if we architect resources to be transient, shardable, and share-nothing

Thursday, November 19, 2009

Page 40: Architecting for the Cloud - jaoo.dkjaoo.dk/dl/qcon-sanfran-2009/slides/AdamWiggins... · Architecting for the Cloud Thursday, November 19, 2009. Thursday, November 19, 2009. Heroku

The End.

Adam Wigginshttp://adam.blog.heroku.com

http://heroku.com

Thursday, November 19, 2009