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

Thalassa - LXJS

Thalassa - LXJS

7071119714e1a32441aca0c336657d3e?s=128

Mike Brevoort

October 02, 2013
Tweet

Transcript

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

    2013 @mbrevoort
  2. ¡OLÉ!

  3. BACKGROUND

  4. 1.21 GIGAWATTS!?

  5. CONTINUOUS DEPLOYMENT

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

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

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

  9. HOW?

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

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

  12. THALASSA

  13. THREE NODE.JS MODULES + HAPROXY •Thalassa •Server registry & client

    •Aqueduct •API and manages HAProxy process •Crowsnest •Realtime dashboard
  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
  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
  16. CROWSNEST •Visualize what’s happening in the system •Streams, streams and

    more streams •CRDT, LevelDB, Hapi, AngularJS, Rickshaw
  17. Thalassa Server Aqueduct HAProxy Crowsnest A@1 A@1 A@1 A@1 80

    FE streaming stats axon socket BE
  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
  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
  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
  21. registrations config stats stats config stats Aqueduct Aqueduct config Crowsnest

    Server Aqueduct Thalassa Server control stream MUXDEMUX STREAMS
  22. DEMO

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

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