Slide 1

Slide 1 text

WE KNOW AND LOVE DATA CORRUPTING ARCHITECTURES

Slide 2

Slide 2 text

VP OF ENGINEERING @ WALLAROO LABS MEMBER OF THE PONY CORE TEAM AUTHOR OF “STORM APPLIED” SPOILED BOSTON SPORTS FAN @SEANTALLEN @WALLAROOLABS @PONYLANG @NHLBRUINS SEAN T. ALLEN

Slide 3

Slide 3 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE A TALK ABOUT SCALING

Slide 4

Slide 4 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE A TALK ABOUT “STATELESS”

Slide 5

Slide 5 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THIS AN OVERVIEW TALK

Slide 6

Slide 6 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE TODAY’S TOPICS INCLUDE… ▸ Data corruption ▸ Concurrency ▸ Data races ▸ Shared values ▸ Atomic operations

Slide 7

Slide 7 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE GITHUB.COM/SEANTALLEN/DATA- CORRUPTING-ARCHITECTURES

Slide 8

Slide 8 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE GENERALIZATIONS AHEAD

Slide 9

Slide 9 text

OUR MOST POPULAR ARCHITECTURES CAN BE TRACED TO WEB APPPLICATIONS. Sean T. Allen DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE

Slide 10

Slide 10 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE DATABASE WEB APP

Slide 11

Slide 11 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE A BIT MORE DETAILED… REQUEST to the APPLICATION on to the DATABASE back to the APPLICATION and out as a RESPONSE

Slide 12

Slide 12 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE WE COULD GET MORE DETAILED STILL… REQUEST to the APPLICATION on to the DATABASE back to the APPLICATION and out as a RESPONSE (WEB BROWSER) to the (WEB SERVER + DEVELOPER CODE) on to the DATABASE back to the (WEB SERVER + DEVELOPER CODE) and out as a (WEB BROWSER)

Slide 13

Slide 13 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE OUR SIMPLE WEB APP IS A DISTRIBUTED SYSTEM

Slide 14

Slide 14 text

DISTRIBUTED SYSTEMS AREN’T HARD. THEY’RE EASY*. Sean T. Allen DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE * sometimes

Slide 15

Slide 15 text

DISTRIBUTED SYSTEMS AREN’T HARD. THEY’RE EASY*. CONCURRENCY IS THE HARD PART. Sean T. Allen DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE * sometimes

Slide 16

Slide 16 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE SOME JUSTIFICATION AHEAD

Slide 17

Slide 17 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE DATABASE WEB APP

Slide 18

Slide 18 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE DATABASE WEB APP

Slide 19

Slide 19 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE DATABASE WEB APP

Slide 20

Slide 20 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE AN EXAMPLE APPLICATION

Slide 21

Slide 21 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THE PAGES SERVED COUNTER ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return new value to the user

Slide 22

Slide 22 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THE PAGES SERVED COUNTER ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return original value to the user SPOT THE DATA CORRUPTION?

Slide 23

Slide 23 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THE PAGES SERVED COUNTER ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return new value to the user

Slide 24

Slide 24 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THE PAGES SERVED COUNTER ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return original value to the user LET’S ADD SOME CONCURRENCY

Slide 25

Slide 25 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THE PAGES SERVED COUNTER ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return new value to the user ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return new value to the user

Slide 26

Slide 26 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THE PAGES SERVED COUNTER ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return original value to the user ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return original value to the user WHAT’S THE FINAL VALUE? 1? 2?

Slide 27

Slide 27 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE WE DON’T KNOW

Slide 28

Slide 28 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THE PAGES SERVED COUNTER ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return new value to the user ‣ Read current value from the database ‣ Add one to update it ‣ Write new value to the database ‣ Return new value to the user

Slide 29

Slide 29 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Read current value from the database 0 ‣ Read current value from the database 0 ‣ Add one to update it 1 ‣ Add one to update it 1 ‣ Write new value to the database 1 ‣ Write new value to the database 1 ‣ Return new value to the user 1 ‣ Return new value to the user 1 Request A Request B

Slide 30

Slide 30 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Read current value from the database 0 ‣ Add one to update it 1 ‣ Write new value to the database 1 ‣ Return new value to the user 1 ‣ Read current value from the database 1 ‣ Add one to update it 2 ‣ Write new value to the database 2 ‣ Return new value to the user 2 Request A Request B

Slide 31

Slide 31 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Read current value from the database 0 ‣ Add one to update it 1 ‣ Write new value to the database 1 ‣ Read current value from the database 1 ‣ Return new value to the user 1 ‣ Add one to update it 2 ‣ Write new value to the database 2 ‣ Return new value to the user 2 Request A Request B

Slide 32

Slide 32 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Read current value from the database 0 ‣ Add one to update it 1 ‣ Write new value to the database 1 ‣ Read current value from the database 1 ‣ Return new value to the user 1 ‣ Add one to update it 2 ‣ Write new value to the database 2 ‣ Return new value to the user 2 Request A Request B

Slide 33

Slide 33 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Read current value from the database 0 ‣ Add one to update it 1 ‣ Write new value to the database 1 ‣ Read current value from the database 1 ‣ Return new value to the user 1 ‣ Add one to update it 2 ‣ Write new value to the database 2 ‣ Return new value to the user 2 Request A Request B

Slide 34

Slide 34 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE WE’RE EXPERIENCING A DATA RACE

Slide 35

Slide 35 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE RECIPE FOR A DATA RACE ▸ A shared value ▸ Concurrency ▸ At least one writer changing the shared value ▸ Non-atomic operations

Slide 36

Slide 36 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE OUR DATABASE IS A SHARED VALUE

Slide 37

Slide 37 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE CONCURRENCY: WE HAVE TWO REQUESTS

Slide 38

Slide 38 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE WHOLE LOTTA WRITING GOING ON

Slide 39

Slide 39 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE OUR INCREMENTING ISN’T ATOMIC

Slide 40

Slide 40 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE AN OPERATION IS ATOMIC IF IT’S ISOLATED FROM OTHER OPERATIONS HAPPENING AT THE SAME TIME.

Slide 41

Slide 41 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Read current value from the database 0 ‣ Read current value from the database 0 ‣ Add one to update it 1 ‣ Add one to update it 1 ‣ Write new value to the database 1 ‣ Write new value to the database 1 ‣ Return new value to the user 1 ‣ Return new value to the user 1 Request A Request B

Slide 42

Slide 42 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Read current value from the database 0 ‣ Read current value from the database 0 ‣ Add one to update it 1 ‣ Add one to update it 1 ‣ Write new value to the database 1 ‣ Write new value to the database 1 ‣ Return new value to the user 1 ‣ Return new value to the user 1 Request A Request B

Slide 43

Slide 43 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Increment current value 1 ‣ Increment current value 2 ‣ Read new value 2 ‣ Read new value 2 ‣ Return new value to the user 2 ‣ Return new value to the user 2 Request A Request B

Slide 44

Slide 44 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ‣ Increment current value 1 ‣ Increment current value 2 ‣ Read new value 2 ‣ Read new value 2 ‣ Return new value to the user 2 ‣ Return new value to the user 2 Request A Request B

Slide 45

Slide 45 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE MORE CONCURRENCY MORE PROBLEMS

Slide 46

Slide 46 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 47

Slide 47 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 48

Slide 48 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 49

Slide 49 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 50

Slide 50 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE DATABASE VALUE IS 1

Slide 51

Slide 51 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 52

Slide 52 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 53

Slide 53 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 54

Slide 54 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE DATABASE VALUE INCREASED TO 2

Slide 55

Slide 55 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 56

Slide 56 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE 0 0 1 1 1 2 Request A Request B Request C

Slide 57

Slide 57 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE DATABASE VALUE DECREASED TO 1

Slide 58

Slide 58 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE WE’RE EXPERIENCING LAST WRITE WINS

Slide 59

Slide 59 text

LAST WRITE WINS MEANS “SOME WRITES LOSE”. Sean Cribbs & Russell Brown DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE

Slide 60

Slide 60 text

LAST WRITE WINS IS A FANCY NAME FOR “LET’S CORRUPT SOME DATA”. Sean T. Allen DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE

Slide 61

Slide 61 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE OUR MOST POPULAR ARCHITECTURES FOR SCALING

Slide 62

Slide 62 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE THESE PROBLEMS ARE EVERYWHERE

Slide 63

Slide 63 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE “SERVERLESS”

Slide 64

Slide 64 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE “FUNCTIONS AS SERVICE”

Slide 65

Slide 65 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE “STATELESS”

Slide 66

Slide 66 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE “SHARED NOTHING”

Slide 67

Slide 67 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ALL FEATURE DATABASE AS A SHARED VALUE AND CONCURRENT WRITES

Slide 68

Slide 68 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE ALL HAVE DATA CORRUPTION BAKED INTO THE CORE ARCHITECTURE

Slide 69

Slide 69 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE WHAT CAN WE DO?

Slide 70

Slide 70 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE RECIPE FOR A DATA RACE: CHANGE AT LEAST ONE ▸ A shared value ▸ Concurrency ▸ At least one writer changing the shared value ▸ Non-atomic operations

Slide 71

Slide 71 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE STORED PROCEDURES AND TRANSACTIONS

Slide 72

Slide 72 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE DISTRIBUTED TRANSACTIONS

Slide 73

Slide 73 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE SYNCHRONIZE DATA ACCESS

Slide 74

Slide 74 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE CONSENSUS ALGORITHMS

Slide 75

Slide 75 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE CONCURRENCY FRIENDLY DATA STRUCTURES

Slide 76

Slide 76 text

DATA CORRUPTING ARCHITECTURES WE KNOW AND LOVE COMMUNICATE OPERATIONS NOT
 VALUES

Slide 77

Slide 77 text

GITHUB.COM/ SEANTALLEN/DATA- CORRUPTING- ARCHITECTURES LEARN MORE