SLIDE 1 PAT HELLAND AND ME
HOW TO BUILD STATEFUL DISTRIBUTED APPLICATIONS THAT CAN SCALE ALMOST INFINITELY
SLIDE 2
PAT HELLAND
AND ME
SLIDE 3 SEAN T. ALLEN
VP OF ENGINEERING AT WALLAROO LABS MEMBER OF THE PONY CORE TEAM AUTHOR OF “STORM APPLIED” LOVER OF FRENCH STREET ART @SEANTALLEN @WALLAROOLABS @PONYLANG
SLIDE 4
DATABASES
APPARENTLY, I LIKE TO STICK THEM IN THINGS…
SLIDE 5
SOME AXIOMS…
SLIDE 6
TO SCALE INFINITELY, WE HAVE TO SCALE HORIZONTALLY
SLIDE 7
TO SCALE INFINITELY, WE MUST AVOID COORDINATION
SLIDE 8
DISTRIBUTED TRANSACTIONS ARE A FORM OF COORDINATION
SLIDE 9
THEREFORE… TO SCALE INFINITELY, WE CAN’T USE TRANSACTIONS
SLIDE 10
WELCOME TO DISTRIBUTED SYSTEMS!
O, BY THE WAY, ALL THE RULES HAVE CHANGED
SLIDE 11
WHAT IS SCALING?
SLIDE 12 MORE AND MORE THINGS
BUT, THEY DON’T GET
MORE OF THEM. LOTS MORE.
SLIDE 13 WE SCALE ENTITIES
ENTITIES: LIVE ON A SINGLE MACHINE AND ARE MANIPULATED INDIVIDUALLY
SLIDE 14
WHAT IS AN ENTITY?
SLIDE 15
ENTITIES ARE BOUNDARIES OF ATOMICITY
SLIDE 16 Bob
6 3 5 8
Alice
4 2 7 1
SLIDE 17 Bob
6 3 5 8
Alice
4 2 7 1
SLIDE 18 Bob
6 3 5 8
Alice
4 7 1 2
SLIDE 19 Bob
6 3 5 8
Alice
4 2 7 1
SLIDE 20 Bob
6 3 5 8
Alice
4 2 7 1
SLIDE 21
DENORMALIZE..
ALL THE THINGS!
SLIDE 22
TWO LAYER ARCHITECTURE
SLIDE 23 scale-agnostic scale-aware API
SLIDE 24 scale-agnostic scale-aware API
SLIDE 25 scale-agnostic scale-aware API
SLIDE 26 scale-agnostic scale-aware API
SLIDE 27 scale-agnostic scale-aware API
SLIDE 28 scale-agnostic scale-aware API
SLIDE 29
TO SCALE INFINITELY, YOUR BUSINESS LOGIC HAS TO BE INDEPENDENT OF SCALE
SLIDE 30
WALLAROO
SCALE INDEPENDENT COMPUTING FOR PYTHON
SLIDE 31
AND IT’S NOT A DATABASE
SLIDE 32
ENTITIES
BUT WE CALL THEM… “STATE OBJECTS”
SLIDE 33
TWO LAYER ARCHITECTURE
BUT WE CALL IT… “SCALE INDEPENDENCE”
SLIDE 34 user supplied logic Wallaroo runtime Wallaroo API
SLIDE 35 user supplied logic Wallaroo runtime Wallaroo API
SLIDE 36 user supplied logic Wallaroo runtime Wallaroo API
SLIDE 37 user supplied logic Wallaroo runtime Wallaroo API
SLIDE 38
WHAT’S HARD?
ALL OF IT? YOU’RE BUILDING A DISTRIBUTED SYSTEMS *FRAMEWORK*
SLIDE 39
CAP THEOREM
CONSISTENCY VS AVAILABILITY… YOU CAN’T ESCAPE IT.
SLIDE 40
MESSAGE DELIVERY
AT-MOST-ONCE? AT-LEAST- ONCE? EFFECTIVELY-ONCE? EXACTLY-ONCE?
SLIDE 41
MESSAGE ORDERING
WILL YOU MAINTAIN THE ORDERING AS YOU RECEIVED IT?
SLIDE 42
LOCAL KNOWLEDGE
YOU HAVE TO WORK HARD TO AVOID COORDINATION.
SLIDE 43
PROGRAMMING MODEL
YOU CAN GET WITH THIS, OR YOU CAN GET WITH THAT.
SLIDE 44
PERFORMANCE
IT’S A WORD IN THE DICTIONARY
SLIDE 45
NETWORK OVERHEAD
YOU AREN’T IN LOCAL MEMORY ANYMORE
SLIDE 46
DATA SERIALIZATION
LE SIGH…
SLIDE 47
VERIFICATION
LET’S NOT GO THERE… THAT’S AN ENTIRE LECTURE SERIES.
SLIDE 48
BTW… YOUR MULTI-CORE COMPUTER
IS ALSO A DISTRIBUTED SYSTEM. BUT THAT’S A STORY FOR ANOTHER DAY.
SLIDE 49
LEARN MORE
GITHUB.COM/SEANTALLEN/ PAT-HELLAND-AND-ME