$30 off During Our Annual Pro Sale. View Details »

Thalassa - LXJS

Thalassa - LXJS

Mike Brevoort

October 02, 2013
Tweet

More Decks by Mike Brevoort

Other Decks in Technology

Transcript

  1. THALASSA
    A System for Continuous Deployment
    Mike Brevoort
    2 October 2013
    @mbrevoort

    View Slide

  2. ¡OLÉ!

    View Slide

  3. BACKGROUND

    View Slide

  4. 1.21 GIGAWATTS!?

    View Slide

  5. CONTINUOUS DEPLOYMENT

    View Slide

  6. PUSH AND RESTART?
    http://alt.coxnewsweb.com/cnishared/tools/shared/mediahub/05/22/00/slideshow_1002253082_Irene.JPEG-06e19.JPG

    View Slide

  7. UPGRADE WITH ZERO DOWNTIME
    http://devopsreactions.tumblr.com/post/61486552902/upgrade-with-zero-downtime

    View Slide

  8. EFFORT(DEPLOY N → ∞
    ) = 0
    http://supercompleto.files.wordpress.com/2010/03/ushuaia-sea-lion.jpg

    View Slide

  9. HOW?

    View Slide

  10. LOAD BALANCER
    http://klrc.files.wordpress.com/2009/06/traffic_barrel_monster.jpg

    View Slide

  11. A/B DEPLOYMENTS
    http://www.flickr.com/photos/madbuster75/1859045541/

    View Slide

  12. THALASSA

    View Slide

  13. THREE NODE.JS MODULES
    + HAPROXY
    •Thalassa
    •Server registry & client
    •Aqueduct
    •API and manages HAProxy process
    •Crowsnest
    •Realtime dashboard

    View Slide

  14. THALASSA
    •Lightweight service registry
    •Client as node.js module, daemon or just periodic HTTP
    •Formerly build on top of @substack’s Seaport
    •Ping and expire over HTTP
    •Built on Redis, axon for pub-sub

    View Slide

  15. AQUEDUCT
    •REST API for HAProxy
    •Manage HAProxy process (now via @3rdEden’s HAProxy
    module)
    •Dynamically generates config from handlebars.js template
    •Streams HAProxy live status
    •Configuration as a CRDT
    •Enables peering of Aqueduct servers

    View Slide

  16. CROWSNEST
    •Visualize what’s happening in the system
    •Streams, streams and more streams
    •CRDT, LevelDB, Hapi, AngularJS, Rickshaw

    View Slide

  17. Thalassa
    Server
    Aqueduct
    HAProxy
    Crowsnest
    A@1
    A@1
    A@1
    A@1
    80
    FE
    streaming stats
    axon
    socket
    BE

    View Slide

  18. Thalassa
    Server
    Aqueduct
    HAProxy
    Crowsnest
    A@1
    A@1
    A@1
    80
    A@2
    A@2
    A@2
    FE
    streaming stats
    axon
    socket
    BE

    View Slide

  19. Thalassa
    Server
    Aqueduct
    HAProxy
    Crowsnest
    A@1
    A@1
    A@1
    80
    A@2
    A@2
    A@2
    FE
    streaming stats
    axon
    socket
    A@2
    BE

    View Slide

  20. Thalassa
    Server
    Aqueduct
    HAProxy
    Crowsnest
    A@1
    A@1
    A@1
    80
    A@2
    A@2
    A@2
    FE
    streaming stats
    axon
    socket
    BE

    View Slide

  21. registrations
    config
    stats
    stats
    config
    stats
    Aqueduct Aqueduct
    config
    Crowsnest
    Server
    Aqueduct
    Thalassa
    Server
    control
    stream
    MUXDEMUX
    STREAMS

    View Slide

  22. DEMO

    View Slide

  23. commutative data
    >
    9:00 MONDAY AUGUST 26TH

    View Slide

  24. WHERE
    •https://github.com/PearsonEducation/thalassa
    npm install thalassa
    •https://github.com/PearsonEducation/thalassa-aqueduct
    npm install thalassa-aqueduct
    •https://github.com/PearsonEducation/thalassa-crowsnest
    npm install thalassa-crowsnest

    View Slide

  25. @mbrevoort

    View Slide