Slide 1

Slide 1 text

IF THIS THEN DEPLOY A LOOK INTO IFTTT'S INFRASTRUCTURE @nettofarah 1 / 33

Slide 2

Slide 2 text

nettofarah github.com/nettofarah @nettofarah 2 / 33

Slide 3

Slide 3 text

Disclaimer I'm not a DevOps guy! 3 / 33

Slide 4

Slide 4 text

Senior Product Engineer @ IFTTT 4 / 33

Slide 5

Slide 5 text

Background Millions of Background Jobs every day Over a Billion Events every day 215 (and growing) partner integrations 5 / 33

Slide 6

Slide 6 text

a Rails Monolith 6 / 33

Slide 7

Slide 7 text

How did it all start? 7 / 33

Slide 8

Slide 8 text

Rails Monolith App Great for validating ideas Solid tools for dev and ops 8 / 33

Slide 9

Slide 9 text

Cron Jobs 9 / 33

Slide 10

Slide 10 text

Deploys in Rails 10 / 33

Slide 11

Slide 11 text

Capistrano 11 / 33

Slide 12

Slide 12 text

Capistrano is AWESOME! works for web apps works really well for background jobs too 12 / 33

Slide 13

Slide 13 text

It works amazing until you have to deploy it to a couple of hundred machines 13 / 33

Slide 14

Slide 14 text

Consequences Time outs Long Deploy Cycle Complex deploy code Simultaneous Restarts can kill you! 14 / 33

Slide 15

Slide 15 text

Provisioning with Chef Really good tool But can get complex over time 15 / 33

Slide 16

Slide 16 text

Personal opinion on Chef I have a really hard time figuring out where files should live. 16 / 33

Slide 17

Slide 17 text

Maybe there's a design problem here 17 / 33

Slide 18

Slide 18 text

That's probably true But we're a startup. We have limited resources and need to move fast. 18 / 33

Slide 19

Slide 19 text

A Solution for Deploying to hundreds of servers With Capistrano 19 / 33

Slide 20

Slide 20 text

Deploynamo Async Deploys 20 / 33

Slide 21

Slide 21 text

A Case for Micro Services Teams are growing fast The product and userbase are growing even faster Old code lurking around from years ago 21 / 33

Slide 22

Slide 22 text

We can take out some important parts of the system 22 / 33

Slide 23

Slide 23 text

And turn them into Micro Services Many different languages and datastores. Most of them deployed to Heroku. 23 / 33

Slide 24

Slide 24 text

We love Heroku! 24 / 33

Slide 25

Slide 25 text

Docker comes into the picture 25 / 33

Slide 26

Slide 26 text

What if we could... 26 / 33

Slide 27

Slide 27 text

deploy our services + app to a more homogenous infrastructure? 27 / 33

Slide 28

Slide 28 text

Docker + Mesos + Marathon + Chronos (Not live in production yet) 28 / 33

Slide 29

Slide 29 text

Multiple containers with different roles working together In the same infrastructure 29 / 33

Slide 30

Slide 30 text

We can now tweak our services and have more control over our deployment process 30 / 33

Slide 31

Slide 31 text

Of course it comes at a cost paradigm shift complexity 31 / 33

Slide 32

Slide 32 text

The Future Everything is a Container Images are built automatically New Services are just a new Docker image dropped onto Mesos 32 / 33

Slide 33

Slide 33 text

Questions 33 / 33