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

Scale-Oriented Architecture with Microservices

John Sheehan
February 10, 2015

Scale-Oriented Architecture with Microservices

A look into how we've built Runscope using a microservice architecture.

John Sheehan

February 10, 2015
Tweet

More Decks by John Sheehan

Other Decks in Technology

Transcript

  1. Scale-oriented
    Architecture with APIs
    John Sheehan
    Co-founder, CEO
    @Runscope

    View Slide

  2. Scale-oriented
    Architecture with APIs
    MICROSERVICES

    View Slide

  3. API DEBUGGING
    API MONITORING
    FOR TEAMS

    View Slide

  4. 30,000+
    developers
    use Runscope

    View Slide

  5. MICROSERVICES
    at Runscope

    View Slide

  6. MICROSERVICES =
    SOA + DevOps

    View Slide

  7. If you don't invest in
    INFRASTRUCTURE
    don't invest in
    MICROSERVICES

    View Slide

  8. In the beginning...

    View Slide

  9. runscope.com Runscope URLs
    Identity
    Request Vault
    api.runscope.com
    Eventador
    Calculon
    Courier
    Mission Control
    Passageway
    go-proxy
    Warp Pipe go-radar
    Events
    Auth Service
    File Cabinet
    Script Processor
    Atlas
    Archivist
    Prometheus
    Billing
    Scorekeeper

    View Slide

  10. Today
    40+ internal services
    9 engineers

    View Slide

  11. How
    micro
    should
    services be?

    View Slide

  12. MICROSERVICES
    GOALS

    View Slide

  13. Scaling the Stack
    GOAL #1

    View Slide

  14. Independent
    Deployability

    View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. 7,789
    Deployments in 2014
    31+
    Per work day

    View Slide

  20. Service-level
    Isolation

    View Slide

  21. Independent
    Scalability

    View Slide

  22. Network
    Resiliency

    View Slide

  23. Scaling the Team
    GOAL #2

    View Slide

  24. Network
    Mindset

    View Slide

  25. Isolate
    Breakage

    View Slide

  26. Human
    Modularity

    View Slide

  27. Uniform
    Interface

    View Slide

  28. Developer
    Experience

    View Slide

  29. Smart Client

    View Slide

  30. • Service discovery
    • service://identity/...
    • Retry failed GETs
    • Run HTTP requests asynchronously
    • Log with Runscope Traffic Inspector
    Smart Client

    View Slide

  31. url = "https://ec2-23-212-199-23.us-west-2.amazonaws.com"
    resp = requests.get(url)
    if resp.ok:
    return resp.json()
    else:
    # retry?
    return None
    def get_user(id):
    def main():
    user = get_user(id)
    print user["name"]

    View Slide

  32. class Identity
    def get_user(id):
    url = "service://identity/users/" + id
    resp = smart_client.get(url)
    if resp.ok:
    return User(resp.json())
    return AnonymousUser()
    from Identity import get_user
    def main():
    user = get_user(id)
    print user.name
    Auto-locate
    service
    Smart
    retries

    View Slide

  33. Smart Service

    View Slide

  34. • Built-in healthcheck/heartbeat endpoints
    • Automatic, realm-aware service registry
    • Common logging and metrics framework
    • Simplified dependency management
    Smart Service

    View Slide

  35. Testing &
    Monitoring

    View Slide

  36. API
    Testing
    API
    Monitoring
    Functionality Availability
    Performance
    Correctness
    In Development In Production
    "Transactions" "Endpoints"

    View Slide

  37. Runscope Radar
    Functionality Availability
    Performance
    Correctness
    Any Environment
    API Testing & Monitoring
    Transactions & Endpoints

    View Slide

  38. Try Runscope, free.
    runscope.com
    Stop by our table for your free t-shirt!

    View Slide