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

Go micro with microservices

Go micro with microservices

Mariusz Gil

August 20, 2016
Tweet

More Decks by Mariusz Gil

Other Decks in Programming

Transcript

  1. MICROSERVICES
    Go micro with
    Mariusz Gil
    mariuszgil

    View Slide

  2. View Slide

  3. View Slide

  4. THE STORY YOU KNOW

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. MONOLITHꊾ
    Product Management
    UX
    Developers
    QA
    DB Admins
    Sys Admins
    Net Admins
    SAN Admins

    View Slide

  10. View Slide

  11. View Slide

  12. REASONS…

    View Slide

  13. T D
    D

    View Slide

  14. T
    D
    DHINK
    ESIGN
    EVELOP

    View Slide

  15. MICROSERVICES

    View Slide

  16. View Slide

  17. LOOSELY COUPLED SERVICE ORIENTED
    ARCHITECTURE WITH BOUNDED CONTEXTS
    Adrian Cockcroft

    View Slide

  18. Product Management
    UX
    Developers
    QA
    DB Admins
    Sys Admins
    Net Admins
    SAN Admins

    View Slide

  19. Microservice Microservice
    Datastore Datastore
    Microservice
    Datastore
    Microservice

    View Slide

  20. Microservice Microservice
    Datastore Datastore
    Microservice
    Datastore
    Microservice

    View Slide

  21. INTEGRATION

    View Slide

  22. View Slide

  23. UI COMPOSITION
    ESI / SSI / AJAX / IFRAME

    View Slide

  24. COMPOXURE
    MIDDLEWARE FOR EXPRESS

    View Slide

  25. View Slide


  26. Widget 1


    Widget Two








    Widget Two


    Widget 1





    View Slide

  27. cx-cache-ttl='10s'
    cx-no-cache="\{{cookie:userId}}==={{authorId}}"
    cx-cache-key='widget:user:{{cookie:userId}}'
    cx-timeout='1s'
    cx-statsd-key=„widget_user">
    This content won't be cached if the user is the author of the widget

    cx-cache-ttl='10s'
    cx-cache-key='widget:user:{{cookie:userId}}'
    cx-timeout='1s'
    cx-statsd-key="widget_user">
    This content will be replaced on the way through

    View Slide

  28. API GATEWAY

    View Slide

  29. API Gateway
    Microservice
    Datastore
    Microservice
    Datastore
    Microservice
    Datastore

    View Slide

  30. BACKEND FOR
    FRONTEND

    View Slide

  31. STRUCTURING

    View Slide

  32. View Slide

  33. TOOLING CONFIGURATION DISCOVERY
    ROUTING OBSERVABILITY DATASTORES
    OPERATIONS DEVELOPMENT
    POLICY

    View Slide

  34. TOOLING
    Docker
    Spinnaker
    CONFIGURATION
    Archaius
    Habitat
    DISCOVERY
    Zookeeper
    Consul
    ROUTING
    Compose

    Linkerd
    OBSERVABILITY
    Zipkin
    Histrix
    DATASTORES
    SQL

    NoSQL
    OPERATIONS
    Mesos

    Kubernetes
    DEVELOPMENT
    Docker Hub

    Artifactory
    POLICY
    Security and
    arch compliance

    View Slide

  35. YOU NEED A SKELETON

    View Slide

  36. THERE AIN’T NO SUCH
    THING AS A FREE LUNCH
    MILTON FRIEDMAN

    View Slide

  37. DISTRIBUTED
    COMPLEXITY

    View Slide

  38. View Slide

  39. DISTRIBUTED
    LOGGING

    View Slide

  40. EVENTUAL
    CONSISTENCY

    View Slide

  41. ONE SERVICE MAY
    RUIN EVERYTHING

    View Slide

  42. Microservice Microservice
    Datastore Datastore
    Microservice
    Datastore
    Microservice
    Timeout
    Budget Failed request
    Failed request
    OK request

    View Slide

  43. $factory = new Ejsmont\CircuitBreaker\Factory();
    $circuitBreaker = $factory->getSingleApcInstance(30, 300);
    $userProfile = null;

    if( $circuitBreaker->isAvailable("UserProfileService") ){
    try{
    $userProfile = $userProfileService->loadProfileOrWhatever();
    $circuitBreaker->reportSuccess("UserProfileService");
    }catch( UserProfileServiceConnectionException $e ){
    // network failed - report it as failure
    $circuitBreaker->reportFailure("UserProfileService");
    }catch( Exception $e ){
    // something went wrong but it is not service's fault,
    // dont report as failure
    }
    }
    if( $userProfile === null ){
    // for example, show 'System maintenance, you cant login now.' message
    // but still let people buy as logged out customers.
    }

    View Slide

  44. ARE MICROSERVICES
    FOR ME…?

    View Slide

  45. View Slide

  46. View Slide

  47. MICROSERVICES
    Go micro with
    THANKS!
    mariuszgil

    View Slide