Slide 1

Slide 1 text

John Sheehan CEO, Runscope Modern Tools for Modern Applications Thursday, October 3, 13

Slide 2

Slide 2 text

What is a modern application? Thursday, October 3, 13

Slide 3

Slide 3 text

Mobile & Desktop Apps Web Sites & Applications Internal APIs 3rd-party Service APIs Public APIs Thursday, October 3, 13

Slide 4

Slide 4 text

Thursday, October 3, 13

Slide 5

Slide 5 text

A Modern Application Is Distributed Thursday, October 3, 13

Slide 6

Slide 6 text

“There's just no getting around it: you're building a distributed system. -- Mark Cavage, ACM Queue Thursday, October 3, 13

Slide 7

Slide 7 text

The Old Way Process-Oriented Thursday, October 3, 13

Slide 8

Slide 8 text

Database Web Apps fn(x) Client Apps fn(x) Thursday, October 3, 13

Slide 9

Slide 9 text

Troubleshooting a performance issue in a process-oriented architecture Thursday, October 3, 13

Slide 10

Slide 10 text

Debug process-level code. Inspect inter-process communication. Analyze network/hardware issues. Thursday, October 3, 13

Slide 11

Slide 11 text

The New Way Service-Oriented Thursday, October 3, 13

Slide 12

Slide 12 text

Mobile & Desktop Apps Web Sites & Applications Internal APIs 3rd-party Service APIs Public APIs Thursday, October 3, 13

Slide 13

Slide 13 text

“Services are the new processes. -- Mark Cavage, ACM Queue Thursday, October 3, 13

Slide 14

Slide 14 text

Mobile & Desktop Apps Web Sites & Applications Internal APIs 3rd-party Service APIs Your Public APIs fn(){} fn(){} fn(){} fn(){} fn(){} Thursday, October 3, 13

Slide 15

Slide 15 text

fn(){} fn(){} fn(){} fn(){} fn(){} YOUR APPLICATION Thursday, October 3, 13

Slide 16

Slide 16 text

Troubleshooting a performance issue in a service-oriented architecture. Thursday, October 3, 13

Slide 17

Slide 17 text

The API’s code. The API’s database. The API’s server. The API’s network. Your code. Your server. Your network. Debug Test Monitor Mitigate Thursday, October 3, 13

Slide 18

Slide 18 text

Debugging Thursday, October 3, 13

Slide 19

Slide 19 text

printf  ("new  value:  %d",  i); Thursday, October 3, 13

Slide 20

Slide 20 text

Thursday, October 3, 13

Slide 21

Slide 21 text

console.log("status:  "  +   resp.status); Thursday, October 3, 13

Slide 22

Slide 22 text

But there's hope! Thursday, October 3, 13

Slide 23

Slide 23 text

RequestBin Inspect webhooks ngrok Introspectable localhost proxy mitmproxy Man-in-the-middle proxy Postman Chrome HTTP request editor PonyDebugger iOS HTTP request inspector Runscope API debugging and testing Thursday, October 3, 13

Slide 24

Slide 24 text

Testing Thursday, October 3, 13

Slide 25

Slide 25 text

frisbyjs Node.js API testing framework VCR Ruby HTTP record/playback FakeWeb Ruby mock HTTP response Mocky.io Mock HTTP responses via URL httptest Go HTTP testing utilities Runscope Stay tuned :) Thursday, October 3, 13

Slide 26

Slide 26 text

Thursday, October 3, 13