Slide 1

Slide 1 text

Cloud and Devops at ticketea Jose Ignacio Galarza, @igalarzab CTO

Slide 2

Slide 2 text

create tech solutions to simplify and enrich the way events are managed and attended

Slide 3

Slide 3 text

ticketea Ecosystem

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

ticketea Who we are? @esanchezm @JavierHdez3 @maraujop @igalarzab @sullymorland @patoroco edu @imanolcg @RafaRM20 @iamcarlosedo @andrea_mgr @Mc_Arena_pr @javitxudedios @Maquert @gnufede @willyfrog_

Slide 8

Slide 8 text

ticketea Team ✤ 12 developers ✤ 3 designers ✤ 1 QA

Slide 9

Slide 9 text

cloud

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

ticketea Why the cloud? ✤ Offer high-availability despite of load-spikes. ✤ Scale from 3 servers to 350 in minutes. ✤ Access to awesome services provided by your IaSS. ✤ Be more cost efficient.

Slide 12

Slide 12 text

ticketea Why the cloud? ✤ Easier to be fault tolerant. ✤ They have a huge team improving always their service. ✤ Incredible uptime (some of them with 99.999999999%).

Slide 13

Slide 13 text

ticketea Why the cloud? IaaS to PaaS

Slide 14

Slide 14 text

Cloud provider Ticketea

Slide 15

Slide 15 text

ticketea Pitfalls ✤ Everything can fail… everything. Have a good plan B. ✤ A plan B isn't a plan B, until is tested. ✤ Pre-heat everything before big events. ✤ Read about your IaSS in forums/email groups. ✤ Try to distribute your machines to avoid thunderbolts ;)

Slide 16

Slide 16 text

architecture

Slide 17

Slide 17 text

ticketea server

Slide 18

Slide 18 text

ticketea Our architecture

Slide 19

Slide 19 text

ticketea Our architecture

Slide 20

Slide 20 text

ticketea Our architecture

Slide 21

Slide 21 text

ticketea Our architecture

Slide 22

Slide 22 text

ticketea Our architecture

Slide 23

Slide 23 text

ticketea Our architecture

Slide 24

Slide 24 text

ticketea servers

Slide 25

Slide 25 text

ticketea The multilith

Slide 26

Slide 26 text

ticketea Distributed systems ✤ Granular failing. ✤ Avoid single point of failure. ✤ Easy code maintainability ✤ Choose the best tech for each project. ✤ Scale the team easier.

Slide 27

Slide 27 text

ticketea Distributed systems ✤ Hard to deploy. ✤ Hard to see the whole picture. ✤ More complexity: easy to fail. ✤ When shit happens: you need a plan B.

Slide 28

Slide 28 text

don’t panic, we’re devops!

Slide 29

Slide 29 text

development

Slide 30

Slide 30 text

ticketea Team ✤ 12 developers ✤ 3 designers ✤ 1 QA ✤ 0 sysadmin

Slide 31

Slide 31 text

ticketea Team no specific devops team

Slide 32

Slide 32 text

understand your stack

Slide 33

Slide 33 text

ticketea Development cycle

Slide 34

Slide 34 text

ticketea Development keys ✤ Code reviews in every pull request. ✤ Continuous integration with a strong test suite. ✤ Cook your own receipts. ✤ One-click deployment. ✤ “Continuous” delivery. (not always)

Slide 35

Slide 35 text

and… easy rollbacks ;)

Slide 36

Slide 36 text

ticketea Deploying code ✤ We’ve changed between a few models, but finally: 1. Create a complete new environment in prod machines. 2. Deploy your code there. 3. Extract one machine from the load-balancer. 4. Create a golden-image

Slide 37

Slide 37 text

ticketea Deploying code ✤ Atomic deploys. ✤ 0s-downtime deploys. ✤ Easy rollback to the last N versions. ✤ Money-cost friendly ;) ✤ Insanely fast to scale machines when needed.

Slide 38

Slide 38 text

ticketea The Rat ‘devops’ race API Heracles Odin Frontend Chef Puppet Ansible Thor Caronte Ansible

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

ticketea Production vs Development environments ✤ Using the same ansible roles ✤ Meta-roles: roles/ | ——django/ | ————tasks/main.yml | ——api/ | ————tasks/main.yml |—— tkt-api/ |———— meta/main.yml api.yml development.yml

Slide 41

Slide 41 text

ticketea Automating common procedures ✤ fab -f heracles.py stop_consuming_messages:queue ✤ fab -f frontend.py maintenance_on ✤ fab -f sg.py open_sg ✤ fab -f api.py fast_rollback:version

Slide 42

Slide 42 text

metrics

Slide 43

Slide 43 text

ticketea Provisioning ✤ Ansible ✤ Fabric

Slide 44

Slide 44 text

ticketea Error reporting ✤ sentry ✤ fabric (fka. crashlytics)

Slide 45

Slide 45 text

ticketea Graphing ✤ graphite ✤ grafana

Slide 46

Slide 46 text

ticketea Logging and alarming ✤ rsyslog ✤ graylog ✤ cabot ✤ slack/email/x connected through a queue

Slide 47

Slide 47 text

Thanks. ;-) Jose Ignacio Galarza, @igalarzab CTO