Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modern Tools for Modern Applications

Modern Tools for Modern Applications

We're all distributed systems programmers now. Services are the new processes. Our tools don't realize this yet. This talk covers some of the first-generation tools for modern distributed applications.

John Sheehan

October 02, 2013
Tweet

More Decks by John Sheehan

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. Thursday, October 3, 13

    View Slide

  5. A Modern
    Application
    Is Distributed
    Thursday, October 3, 13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. 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

    View Slide

  18. Debugging
    Thursday, October 3, 13

    View Slide

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

    View Slide

  20. Thursday, October 3, 13

    View Slide

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

    View Slide

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

    View Slide

  23. 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

    View Slide

  24. Testing
    Thursday, October 3, 13

    View Slide

  25. 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

    View Slide

  26. Thursday, October 3, 13

    View Slide