Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

¡OLÉ!

Slide 3

Slide 3 text

BACKGROUND

Slide 4

Slide 4 text

1.21 GIGAWATTS!?

Slide 5

Slide 5 text

CONTINUOUS DEPLOYMENT

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

HOW?

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

THALASSA

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

DEMO

Slide 23

Slide 23 text

commutative data > 9:00 MONDAY AUGUST 26TH

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

@mbrevoort