Slide 1

Slide 1 text

VOXOZ Vladimir Kirillov @darkproger

Slide 2

Slide 2 text

ops

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

E2MPLATFORMS

Slide 5

Slide 5 text

let’s reimagine

Slide 6

Slide 6 text

Hack Deploy Scale

Slide 7

Slide 7 text

Hack Deploy Scale life’s too short to spend time on the environment

Slide 8

Slide 8 text

Hack quickly

Slide 9

Slide 9 text

Hack reproducibly

Slide 10

Slide 10 text

Hack no frictions

Slide 11

Slide 11 text

Hack no “works on my machine” excuses

Slide 12

Slide 12 text

your epoll into my kqueue

Slide 13

Slide 13 text

your inotify into my fsevents

Slide 14

Slide 14 text

Y UR CentOS runs R14B03?

Slide 15

Slide 15 text

so I compiled this port and copied it to your Linux box and it doesn’t run ;(

Slide 16

Slide 16 text

! Deploy

Slide 17

Slide 17 text

! Deploy no moving parts

Slide 18

Slide 18 text

Moving parts 3rd-party software: OS runtime/VM libraries

Slide 19

Slide 19 text

3-rd party software using = being a maintainer

Slide 20

Slide 20 text

3-rd party software isolate breakage as much as possible

Slide 21

Slide 21 text

state

Slide 22

Slide 22 text

! Deploy = mutating state

Slide 23

Slide 23 text

Linux too many abstractions

Slide 24

Slide 24 text

Linux users ACLs SELinux networking stack package managers filesystems

Slide 25

Slide 25 text

erts-5.9.1/bin/escript: /lib/libc.so.6: version GLIBC_2.14 not found

Slide 26

Slide 26 text

Problems half-deploys speed rollbacks chef / puppet

Slide 27

Slide 27 text

# apt-get install linux-image-3.2.0-4-amd64 ... Setting up linux-image-3.2.0-4-amd64 (3.2.51-1) ... Running depmod. cp: cannot stat `/boot/initrd.img-3.2.0-4-amd64': No such file or directory Failed to copy /boot/initrd.img-3.2.0-4-amd64 to /initrd.img . dpkg: error processing linux-image-3.2.0-4-amd64 (--configure): subprocess installed post-installation script returned error exit status 1 Errors were encountered while processing: linux-image-3.2.0-4-amd64 E: Sub-process /usr/bin/dpkg returned an error code (1)

Slide 28

Slide 28 text

Breaking abstractions zerocopy userspace

Slide 29

Slide 29 text

netmap /dev/blk paravirt Breaking abstractions

Slide 30

Slide 30 text

Scaling

Slide 31

Slide 31 text

spawn X instances of $that Scaling

Slide 32

Slide 32 text

spawn X instances of $that ! doesn’t always work Scaling

Slide 33

Slide 33 text

riak_core rafter OTP-like for cloud ops Scaling

Slide 34

Slide 34 text

instances =~ processes OTP for cloud

Slide 35

Slide 35 text

solution: spawn X instances of $that ! … and pray Scaling

Slide 36

Slide 36 text

topology awareness hot migration instant bursting Want

Slide 37

Slide 37 text

are two nodes sharing one disk? ! are two nodes hogging the same CPU cache? topology awareness

Slide 38

Slide 38 text

aka double buffering or RCU hot migration

Slide 39

Slide 39 text

instance_supervisor :create_child instant bursting

Slide 40

Slide 40 text

query cache database b-tree VFS cache filesystem b-tree block cache VM

Slide 41

Slide 41 text

OS kernel query cache database b-tree VFS cache filesystem b-tree block cache VM

Slide 42

Slide 42 text

query cache database b-tree VFS cache filesystem b-tree block cache VM xxx

Slide 43

Slide 43 text

query cache database b-tree VM

Slide 44

Slide 44 text

Erlang on Xen

Slide 45

Slide 45 text

Erlang on Xen wow

Slide 46

Slide 46 text

Erlang on Xen wow much bare vm so 30 ms boot such fast lol no OS very not SMP nice elastic

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

ling build.erlangonxen.org xlates beam modules to ling yields a kernel binary

Slide 50

Slide 50 text

ling mostly R16 actively developed issues.erlangonxen.org

Slide 51

Slide 51 text

ling 9p for external filesystems lwIP for networking GooFS for persistence no NIFs no net_kernel (yet) no SSL (WIP) no erlang:trace

Slide 52

Slide 52 text

ling {build_config, debug} ling:trace ling:profile

Slide 53

Slide 53 text

… or not

Slide 54

Slide 54 text

ports Elixir (x.erlangonxen.org) ejabberd LINC (in progress) riak_core / riak_pipe 1.4 * n2o

Slide 55

Slide 55 text

voxoz & ling xen 4.[1-3] ! xapi (too enterprise) too much sh ! libxl (fast) gator

Slide 56

Slide 56 text

plugs OpenMirage 9p ipc with unix rump

Slide 57

Slide 57 text

Containers

Slide 58

Slide 58 text

Containers LXC / Docker Zones / Jails NixOS

Slide 59

Slide 59 text

Containers code vs data instant deploys no configuration

Slide 60

Slide 60 text

ZFS copy-on-write snapshots cheap volumes

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

lambda-ops

Slide 63

Slide 63 text

single-image deploys

Slide 64

Slide 64 text

app defines resources

Slide 65

Slide 65 text

copy-update-switch (double buffering thing)

Slide 66

Slide 66 text

code is configuration

Slide 67

Slide 67 text

distributed by default

Slide 68

Slide 68 text

instrumented by default

Slide 69

Slide 69 text

Tools

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

github.com/voxoz

Slide 72

Slide 72 text

5HT/n2o synrc/kvs synrc/mqs synrc/skyline proger/active proger/erlfsmon proger/erldocker proger/eflame proger/erlsh

Slide 73

Slide 73 text

make software, not war. stay tuned ! @darkproger voxoz.com kirillov.im

Slide 74

Slide 74 text

No content

Slide 75

Slide 75 text

this slide is intentionally left almost blank

Slide 76

Slide 76 text

this slide is intentionally left almost blank

Slide 77

Slide 77 text

some images in this document are copyrighted by their respective owners ! http://captainvendetta.deviantart.com/art/Gir-DUTY- MODE-188982723