Avoiding API Waterfalls

32
founder & CEO of Apiary Jakub Nesetril AVOIDING WATERFALLS Tuesday, December 4, 12

Transcript of Avoiding API Waterfalls

Page 1: Avoiding API Waterfalls

founder & CEO of ApiaryJakub Nesetril

AVOIDING WATERFALLS

Tuesday, December 4, 12

Page 2: Avoiding API Waterfalls

GitHub for APIsapiary.io

Tuesday, December 4, 12

Page 3: Avoiding API Waterfalls

WHY WE DO THINGS

• documentation and tooling, not architecture

• man-years of API infrastructure work

• companies & teams re-inventing the wheel

Tuesday, December 4, 12

Page 4: Avoiding API Waterfalls

3 PROBLEMS

Tuesday, December 4, 12

Page 5: Avoiding API Waterfalls

API DESIGN

Tuesday, December 4, 12

Page 6: Avoiding API Waterfalls

WE START WITH WHITEBOARD

Tuesday, December 4, 12

Page 7: Avoiding API Waterfalls

THEN CODE THE DESIGN

Tuesday, December 4, 12

Page 8: Avoiding API Waterfalls

OFFER IT TO CUSTOMERS

Tuesday, December 4, 12

Page 9: Avoiding API Waterfalls

AND ALL FAILS, BADLY

Tuesday, December 4, 12

Page 10: Avoiding API Waterfalls

WHERE DID WE GO WRONG?

Tuesday, December 4, 12

Page 11: Avoiding API Waterfalls

WATERFALL PROCESS

Tuesday, December 4, 12

Page 12: Avoiding API Waterfalls

API DESIGNREIMAGINED

HOW CAN WE GO AGILE?

Tuesday, December 4, 12

Page 13: Avoiding API Waterfalls

MAKE A DESIGN FIRST

Tuesday, December 4, 12

Page 14: Avoiding API Waterfalls

HOST: http://api.twitter.com/ --- Twitter API 3.0 ------Welcome to our API. Comments support Markdown syntax---

-- Retrieve Tweets --GET /tweets> Accept: application/json< 200< Content-Type: application/json{ "items": [ { "url": "/feed", "range":"2ZY48XPZ", "quantity": 1, "name": "New socks", "price": 1.25 }] }

BUT WRITE IT DOWN FOR ALL TO USE

Tuesday, December 4, 12

Page 15: Avoiding API Waterfalls

OFFER A MOCK SERVER

Tuesday, December 4, 12

Page 16: Avoiding API Waterfalls

INVOLVE THE CUSTOMER

Tuesday, December 4, 12

Page 17: Avoiding API Waterfalls

CODE WITH SPEC TESTS

Tuesday, December 4, 12

Page 18: Avoiding API Waterfalls

apiary.io

Mock > Use > Implement

Tuesday, December 4, 12

Page 19: Avoiding API Waterfalls

DOCUMENTATION

Tuesday, December 4, 12

Page 20: Avoiding API Waterfalls

#2: DOCUMENTATION

• how do I make an HTTP call?

• try to follow documentation but API behaves differently

• is it invalid? is it outdated? am I doing it wrong?

Tuesday, December 4, 12

Page 21: Avoiding API Waterfalls

DOCUMENTATIONREIMAGINED

Tuesday, December 4, 12

Page 22: Avoiding API Waterfalls

DOCUMENTATION

• includes runnable code examples (NOT API console)

• is backed up by automated tests (never out of date)

Tuesday, December 4, 12

Page 23: Avoiding API Waterfalls

Tuesday, December 4, 12

Page 24: Avoiding API Waterfalls

SUPPORT

Tuesday, December 4, 12

Page 25: Avoiding API Waterfalls

#3: SUPPORT

• my API calls are failing, no idea why

• contacting customer support (that caters to shoe customers)

• bumping my head against first-tier support for days until I get connected to developers

• by that time, debug information is lost, logs are rotated, new product version is deployed…

Tuesday, December 4, 12

Page 26: Avoiding API Waterfalls

SUPPORTREIMAGINED

Tuesday, December 4, 12

Page 27: Avoiding API Waterfalls

SUPPORT

• includes self-service debugger

• API support requests routed directly to devs with debugging information included

Tuesday, December 4, 12

Page 28: Avoiding API Waterfalls

Tuesday, December 4, 12

Page 29: Avoiding API Waterfalls

apiary.io

Mock > Use > Implement

DocumentationAutomatedTesting

Tuesday, December 4, 12

Page 30: Avoiding API Waterfalls

http://github.com/apiaryiohttp://support.apiary.io/

COME HELP US

Tuesday, December 4, 12

Page 31: Avoiding API Waterfalls

E-MAIL [email protected] TWITTER @apiaryio

Q&A

Tuesday, December 4, 12

Page 32: Avoiding API Waterfalls

PHOTO CREDITS

http://www.flickr.com/photos/ironrodart/4308675209/sizes/o/http://www.flickr.com/photos/schlosi/6153707178/sizes/l/http://www.flickr.com/photos/72153088@N08/6510934443/sizes/l/http://www.flickr.com/photos/psd/3470234703/sizes/l/http://www.flickr.com/photos/code_martial/2501920341/sizes/l/http://www.flickr.com/photos/weesen/3589267112/sizes/l/http://www.flickr.com/photos/weesen/3588454913/sizes/l/http://www.flickr.com/photos/weesen/3589258380/sizes/l/http://www.flickr.com/photos/polishsausagequeen/2178265710/http://www.flickr.com/photos/stupidmommy/2649444581/sizes/z/

Tuesday, December 4, 12