how to build a reliable checkout experience

64
HI!

Upload: pgte

Post on 11-Jan-2017

437 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: How to build a reliable checkout experience

HI!

Page 2: How to build a reliable checkout experience

WHO AM I?

▸Pedro Teixeira

▸@pgte

▸Partner and Chief Futurist @ YLD

▸Node.js Developer

▸Offline-first enthusiast

Page 3: How to build a reliable checkout experience
Page 4: How to build a reliable checkout experience
Page 5: How to build a reliable checkout experience

HOW TO BUILD A RELIABLE CHECKOUT

EXPERIENCE

Page 6: How to build a reliable checkout experience

…USING NODE.JS, POUCHDB AND

REPLICATED TRANSACTION DOCUMENTS

Page 7: How to build a reliable checkout experience

E-COMMERCE

Page 8: How to build a reliable checkout experience

THE CHECKOUT

EXPERIENCE

Page 9: How to build a reliable checkout experience

IS A JOURNEY THAT BEGINS WITH THE OPTIMISTIC

CHECKOUT BUTTON

Page 10: How to build a reliable checkout experience

BUT ONLY REALLY BEGINS WITH THE

CONFIRMATION BUTTON

Page 11: How to build a reliable checkout experience

BEHIND THE SCENES…

Page 12: How to build a reliable checkout experience

WHICH EVENTUALLY END

IN SUCCESS

Page 13: How to build a reliable checkout experience

AND A CONFIRMATION

E-MAIL

Page 14: How to build a reliable checkout experience

WHAT CAN GO

WRONG?

Page 15: How to build a reliable checkout experience

DUPLICATE TRANSACTIONS

Page 16: How to build a reliable checkout experience

UNDEFINED STATE

Page 17: How to build a reliable checkout experience

CLIENT CRASHES

Page 18: How to build a reliable checkout experience

LET’S TALK ABOUT MOBILE

Page 19: How to build a reliable checkout experience
Page 20: How to build a reliable checkout experience

https://youtu.be/aqvz5Oqs238

(LAST SLIDE TAKEN FROM ILYA GRIGORIK’S GOOGLE IO TALK)

Page 21: How to build a reliable checkout experience

MAIN TAKEAWAY IS

DEVELOPING RELIABLE MOBILE APPS IS

PARTICULARLY DIFFICULT

Page 22: How to build a reliable checkout experience

LET’S GRADE HOW APPS DEAL WITH

NETWORKING FAILURES

Page 23: How to build a reliable checkout experience

E NO ERROR HANDLING

Page 24: How to build a reliable checkout experience

D CUSTOMER IS NOTIFIED

OF THE ERROR

Page 25: How to build a reliable checkout experience

C CUSTOMER CAN RECOVER

FROM ERROR

Page 26: How to build a reliable checkout experience

B APP CAN RECOVER FROM SOME SYSTEM ERRORS

Page 27: How to build a reliable checkout experience

A APP CAN RECOVER FROM SOME

SYSTEM AND USER ERRORS

Page 28: How to build a reliable checkout experience

LAST STAGE IS PARTICULARLY

EXPENSIVE

Page 29: How to build a reliable checkout experience

WHY?

Page 30: How to build a reliable checkout experience

LET’S LOOK AT

SYSTEMS ARCHITECTURE

Page 31: How to build a reliable checkout experience
Page 32: How to build a reliable checkout experience
Page 33: How to build a reliable checkout experience
Page 34: How to build a reliable checkout experience
Page 35: How to build a reliable checkout experience

TOO MUCH RESPONSIBILITY

Page 36: How to build a reliable checkout experience

“WORKS ON MY LAPTOP”

Page 37: How to build a reliable checkout experience

BUT WAIT…

Page 38: How to build a reliable checkout experience

ALL WE NEED IS SYNC

Page 39: How to build a reliable checkout experience
Page 40: How to build a reliable checkout experience
Page 41: How to build a reliable checkout experience
Page 42: How to build a reliable checkout experience
Page 43: How to build a reliable checkout experience
Page 44: How to build a reliable checkout experience

ONE DATABASE PER CUSTOMER

Page 45: How to build a reliable checkout experience

ONE DOCUMENT PER TRANSACTION

Page 46: How to build a reliable checkout experience

SYNC PROTOCOL REPLICATES TRANSACTION DOC (BI-DIRECTIONAL)

= OFFLINE TOLERANCE

Page 47: How to build a reliable checkout experience

CLERK REACTS TO TRANSACTION

STATE CHANGES

Page 48: How to build a reliable checkout experience
Page 49: How to build a reliable checkout experience

CLERK INJECTS TRANSACTION STATE

CHANGES WHEN BACK-END EVENT OCCURS

Page 50: How to build a reliable checkout experience

SHOW ME THE CODE!

Page 51: How to build a reliable checkout experience

UI

Page 52: How to build a reliable checkout experience

POUCH-REDUX-MIDDLEWARE

Page 53: How to build a reliable checkout experience
Page 54: How to build a reliable checkout experience

BACK-END

Page 55: How to build a reliable checkout experience

POUCH-CLERK

Page 56: How to build a reliable checkout experience

CLERK

1. STATE TRANSITIONS 2. ASYNC UPDATERS

Page 57: How to build a reliable checkout experience

STATE TRANSITIONS

Page 58: How to build a reliable checkout experience
Page 59: How to build a reliable checkout experience

ASYNC UPDATERS

Page 60: How to build a reliable checkout experience
Page 61: How to build a reliable checkout experience

QUICK DEMO

Page 62: How to build a reliable checkout experience

DEMO IS ALSO OPEN SOURCE

pgte/pouch-clerk-example-app

Page 63: How to build a reliable checkout experience

MORE1. How to Build a Reliable Transaction Experience for your Customers (blog post)

http://blog.yld.io/2016/06/24/how-to-build-a-reliable-transaction-experience-for-your-customers

2. Delivering a better transaction experience by using Replicated Transaction Documents (video)

https://www.youtube.com/watch?v=2yb0tn3Q3Mg

Page 64: How to build a reliable checkout experience

THANK YOU!