Slide 1

Slide 1 text

How to Build a Unified API

Slide 2

Slide 2 text

Simon Wood @hpoom Holiday Extras Image by Barney Livingston - Flickr

Slide 3

Slide 3 text

@hpoom

Slide 4

Slide 4 text

@hpoom Over 40m visits and 500k bookings in the last 5 years Give £20m revenue to hotels each year

Slide 5

Slide 5 text

@hpoom

Slide 6

Slide 6 text

Because of APIs I can tell you... Yesterday I walked 6191 steps FitBit API The music I listen to most is Radiohead Last.fm API It is currently 13ºC in New York Yahoo Weather API The Brewery is located at lat: 51.520475 lon: -0.091471 Google Maps API @hpoom

Slide 7

Slide 7 text

The Future is mobile The Future is social The Future is cloud @hpoom

Slide 8

Slide 8 text

The Future is mobile The Future is social The Future is cloud The Future is APIs @hpoom

Slide 9

Slide 9 text

APIs Mobile Social Cloud @hpoom Diagram by Sam Ramji - http://bit.ly/biz-apis

Slide 10

Slide 10 text

What I am going to cover The Problem Solutions - Good and Bad Considerations Technology How you can do this too @hpoom

Slide 11

Slide 11 text

LET’S TALK ABOUT THE PROBLEM @hpoom

Slide 12

Slide 12 text

Multiple sources of data @hpoom

Slide 13

Slide 13 text

@hpoom

Slide 14

Slide 14 text

Multiple consumers of data @hpoom

Slide 15

Slide 15 text

Shortbreaks traffic breakdown 18 months @hpoom Desktop Tablet Mobile

Slide 16

Slide 16 text

@hpoom

Slide 17

Slide 17 text

De couple @hpoom

Slide 18

Slide 18 text

Hide legacy @hpoom

Slide 19

Slide 19 text

Speed! @hpoom

Slide 20

Slide 20 text

Source: Strangeloop Networks Case Study Amazon 100 milliseconds revenue 1% Mozilla 2.2 seconds downloads 60m per year @hpoom

Slide 21

Slide 21 text

Scaleability @hpoom

Slide 22

Slide 22 text

Be efficient with resource @hpoom

Slide 23

Slide 23 text

SO WHAT IS THE THE SOLUTION @hpoom

Slide 24

Slide 24 text

The Unified Bit @hpoom

Slide 25

Slide 25 text

Website Application Layer Legacy Reservation System @hpoom

Slide 26

Slide 26 text

Website Application Layer & API Legacy Reservation System Affiliates @hpoom

Slide 27

Slide 27 text

Website Application Layer & API Legacy Reservation System Affiliates Hotel System Ticket System @hpoom

Slide 28

Slide 28 text

Website Application Layer & API Legacy Reservation System Affiliates Hotel System Ticket System @hpoom

Slide 29

Slide 29 text

Unified API Website Mobile App Affiliates Smart TV Hotels Tickets Transport Food Multiple consumers of data Multiple sources of data @hpoom

Slide 30

Slide 30 text

Proxy @hpoom

Slide 31

Slide 31 text

Website Application Layer Legacy Reservation System @hpoom

Slide 32

Slide 32 text

Website Application Layer Unified API Legacy Reservation System New System Proxy @hpoom

Slide 33

Slide 33 text

Hierarchical @hpoom

Slide 34

Slide 34 text

Website Application Layer Unified API Legacy Reservation System New System @hpoom

Slide 35

Slide 35 text

Website Application Layer Unified API Product API Content API Price & Availability Name Star Rating Facilities @hpoom

Slide 36

Slide 36 text

Website Application Layer Unified API Product API Content API Hotels Tickets Transport @hpoom

Slide 37

Slide 37 text

Website Application Layer Unified API Product API Content API Hotels Tickets Transport Legacy New Affiliate @hpoom

Slide 38

Slide 38 text

Micro-service architecture Idea by Fred George - http://bit.ly/fred-george @hpoom

Slide 39

Slide 39 text

Traditional Enterprise Architecture Micro Service Architecture Diagram by James Hughes - http://bit.ly/micro-service @hpoom

Slide 40

Slide 40 text

Website Application Layer Unified API Content API @hpoom

Slide 41

Slide 41 text

Authentication @hpoom

Slide 42

Slide 42 text

Unified API Website Mobile App Affiliates Smart TV Hotels Tickets Transport Food Auth Use OAuth 2.0 @hpoom

Slide 43

Slide 43 text

Standardise your payloads @hpoom

Slide 44

Slide 44 text

PUBLIC SERVICE ANNOUNCEMENT @hpoom This is THE correct way to write numeric dates 2013-10-25 Source XKCD - http://bit.ly/iso-date

Slide 45

Slide 45 text

Checksum tricks @hpoom MD5 ("Checksum tricks") = 1aef67e94cf84d9c4200e24cbdc9f93d

Slide 46

Slide 46 text

Cache & async requests @hpoom

Slide 47

Slide 47 text

Unified API Website Mobile App Affiliates Smart TV Hotels Tickets Transport Food Async Total request time is only as slow as the slowest provider 1.2s 0.8s 1.1s 0.6s @hpoom

Slide 48

Slide 48 text

Unified API Website Mobile App Affiliates Smart TV Hotels Tickets Transport Food Cache Cache Cache Cache Cache If we hit the top cache respond in 0.04s @hpoom

Slide 49

Slide 49 text

In summary Solutions Unified API Standard Payloads Micro Services Proxy Cache & Async Hierarchical Problems Multi Data Sources Multi Consumers Decouple Hide Legacy Speed Scaleability @hpoom

Slide 50

Slide 50 text

SOME CONSIDERATIONS @hpoom

Slide 51

Slide 51 text

Open & Commercial @hpoom

Slide 52

Slide 52 text

The right way to rate limit @hpoom

Slide 53

Slide 53 text

Unlimited pools of talent @hpoom Chris Jason, ESPN - http://bit.ly/espnapi

Slide 54

Slide 54 text

Debugging & Logs @hpoom

Slide 55

Slide 55 text

Our log data in loggly @hpoom

Slide 56

Slide 56 text

300k unique payloads 3GB JSON logged daily @hpoom

Slide 57

Slide 57 text

WHAT TECHNOLOGY? @hpoom

Slide 58

Slide 58 text

We use... @hpoom express web application framework for node

Slide 59

Slide 59 text

Yesterday’s Standard SOAP XML Today’s Standard REST JSON Keep it simple! @hpoom

Slide 60

Slide 60 text

@hpoom

Slide 61

Slide 61 text

Language does not matter @hpoom

Slide 62

Slide 62 text

WHERE TO START? @hpoom

Slide 63

Slide 63 text

What do you hate? @hpoom

Slide 64

Slide 64 text

Where are you going? @hpoom

Slide 65

Slide 65 text

Which public APIs could you consume? @hpoom

Slide 66

Slide 66 text

Who needs access? @hpoom

Slide 67

Slide 67 text

Good docs @hpoom Pusher Blog - http://bit.ly/devapidocs

Slide 68

Slide 68 text

TAKE AWAYS @hpoom

Slide 69

Slide 69 text

Consume your own APIs @hpoom uses to build Source Zach Holman - http://bit.ly/githubdogfood uses to build

Slide 70

Slide 70 text

@hpoom “You wouldn't really think that an online bookstore needs to be an extensible, programmable platform. Would you?” Steve Yegge Source Steve Yegge - http://bit.ly/yegge

Slide 71

Slide 71 text

The future of web apps is Unified APIs @hpoom

Slide 72

Slide 72 text

Thanks http://bit.ly/unifiedapi @hpoom We’re hiring - http://bit.ly/hx-sb twitter + github Simon Wood