HEROKU - QConSP · 2014. 8. 27. · [email protected]. QCONSP 2014 FABIO KUNG Tech Lead, Runtime...

115
HEROKU CAMINHO ATÉ A ALTA ESCALA E DISPONIBILIDADE [email protected]

Transcript of HEROKU - QConSP · 2014. 8. 27. · [email protected]. QCONSP 2014 FABIO KUNG Tech Lead, Runtime...

Page 1: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

HEROKUCAMINHO ATÉ A ALTA ESCALA E

[email protected]

Page 2: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

QCONSP 2014

FABIO KUNGTech Lead, Runtime Systems at Heroku

Page 3: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 4: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

heroku scale web=3 worker=2

Page 5: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

alta-escala-disponibilidade.herokuapp.com

Page 6: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

milhões de aplicações (web)

Page 7: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

um dos maiores deployments de Linux containers (LXC) domundo

Page 8: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

>60k requisições por segundo

Page 9: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

>5G requisições por dia

Page 10: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

12FACTOR.NET

portáveisplataformas modernas (cloud)elasticidade

Page 11: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

duas regiões em produção: us-east and eu-west

Page 12: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

diversas Availability Zones

Page 13: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 14: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 15: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 16: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

2008

Page 17: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

2009

Page 18: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

2010

Page 19: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

CRESCIMENTO

facebook/heroku

Page 20: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

2011

Page 21: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

2013

Page 22: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

VIBE

Page 23: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 24: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

starving-samurai-42.herokuapp.com

Page 25: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 26: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

https://www.flickr.com/photos/timriley/9361949580

Page 27: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 28: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 29: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

cultura hackerflickr/dominicotine

Page 30: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TIMES E COMPONENTES

Page 31: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TOTAL OWNERSHIPDependências?AutonomiaPoliglotaFull stack

Page 32: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

CORE -> MICROSERVICES

no free lunch

Page 33: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

INTERFACES IMPLÍCITASdocumentação pobre, informal

evolução, updates, releases coordenadosmanifest-driven APIs

Page 34: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

SISTEMAS DISTRIBUÍDOS

retrycircuit breakerrate limitingrollback (transações distribuidas)state replicationcache...

Page 35: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

HEROKU SCALE WEB=3 WORKER=5

Page 36: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

HEROKU SCALE WEB=3 WORKER=5

Page 37: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TROUBLESHOOTINGassincronicidadedistributed tracingvisibilidade!

Page 38: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 39: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 40: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TESTES

Page 41: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DEPLOYS

Page 42: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DUPLICAÇÃO!

Page 43: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

EPHEMERALIZATIONDo more with less.

Page 44: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DOGFOODING

Page 45: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TOOLS TEAM

Page 46: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DEVCLOUDS

boot your own Heroku

@merman boot my cloud

Page 47: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

KERNEL PLATFORM

Page 48: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DIREWOLF

Page 49: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

POSTGRESQL

contra exemplo: RabbitMQ

Page 50: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

ORG ACCOUNTS

Page 51: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

MÚLTIPLAS TECNOLOGIAS

diretrizesservice toolkitsproduto poliglota

Page 52: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

#OPSLIFE

Page 53: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

plantões semanais

Page 54: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

ESCALATION PATHtime todo na rotaçãogerente do timeIncident Commander

Page 55: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TRANSPARÊNCIAstatus.heroku.com

Page 56: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

csquared's Heroku Outage Lights System

Page 57: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TIME DE OPSTotal ownership?

Page 58: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

SRESITE RELIABILITY ENGINEERS

confiabilidade globalcapacity planningreviewsretrospectivas de incidentestools, dashboardsfardo do plantão

Page 59: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

MUDANÇASatualizar instâncias existentes vs. substituir por novas

instâncias

Page 60: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

AVERSÃO A RISCOmudanças simples de uma linha -> catástrofe

Page 61: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

RIGOR

Page 62: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

"Hackers write Too Much Software.

Need to change Process.

Heroes mask Too Many Problems.

Need to change Teamwork."

-- , Engineering ManagerNoah

Page 63: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

REVISÃO DE CÓDIGO

async, membros remotos

Page 64: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DOCUMENTAÇÃO

Page 65: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DIAGRAMAS

Page 66: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DESIGN

Page 67: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

BLOG DRIVEN DEVELOPMENT

Page 68: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

CFPgrandes decisões difîceis

Page 69: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

CHECKLISTS

Page 70: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

Example: production checklist

✓ Has ops docs with executable instructions

✓ Has a high-fidelity staging setup with production parity

✓ Requested audit from the security team

✓ Alerts a human if it is down

✓ Simulated failures

✓ Uses structured logging✓ Enforces SSL access

✓ Creds and rotation procedures are documented

✓ Send a launch email to engineering@

✓ Move to Production on the Engineering Lifecycle board

Page 71: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

SUPORTEembutido

Page 72: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

BUS FACTORTotal ownership?

Page 73: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

BENEVOLENT DICTATORSHIPBDFL

Page 74: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.
Page 75: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

COOPETIÇÃOCOMPETIÇÃO COOPERATIVA

Page 76: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

LXCex.: DotCloud, container-rfc

We lost the standards game for virtualmachine images, but it feels like this

community is tight nit enough we might beable to do something for Linux Containers.

-- Alex Polvi (coreos.com)

Page 77: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

GIT$ git push heroku masterCounting objects: 1, done.Writing objects: 100% (1/1), 181 bytes | 0 bytes/s, done.Total 1 (delta 0), reused 0 (delta 0)

-----> Ruby app detected-----> Compiling Ruby...To [email protected]:myapp.git 91dfe0b..f251ba7 master -> master

ex.: GitHub

Page 78: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

2012

Page 79: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

CLOUD

ex.: AWS, AppEngine

Page 80: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

PESSOASpolítica de "não jerks"

Page 81: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

CORE -> TIMES INDEPENDENTES

Page 82: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TOTAL OWNERSHIP

Page 83: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

FOCO?

SREproduto-heróis+coordenação

Page 84: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

HEROKU NA EUROPAFuracão Sandy (2012) -> us-east -> us-west

Page 85: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

GERÊNCIA

Page 86: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

's mdz Scaling Human Systems

Page 87: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

SLACKalways too busy

Page 88: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

O QUE MUDOU?valores (Adam Wiggins)

Page 89: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

EPHEMERALIZATIONDo more with less.

Page 90: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

MAKE IT REALIdeas are cheap.

Page 91: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

SHIP IT

Nothing is real until it's being used by a real user.

Page 92: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DO IT WITH STYLEAesthetic matters.

Page 93: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

INTUITION-DRIVEN | DATA-DRIVEN

Users don't really know what they want.

Page 94: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

... PROVE COM DADOS

[email protected]

Page 95: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DIVIDE AND CONQUER

If it's hard, cut scope.

Page 96: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

TIMING MATTERSMaybe now isn't the right time.

Page 97: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

THROW THINGS AWAYNever be afraid to throw something away and do it again.

Page 98: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

https://www.flickr.com/photos/teich/9427507382/

Page 99: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

SMALL SHARP TOOLSComposability. .The Art of Unix Programming

Also teams. Several small, autonomous, focused teams.

Page 100: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

PUT IT IN THE CLOUDServices, not software.

Page 101: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

RESULTS, NOT POLITICS

"get ahead" in your career by delivering real value.Not by impressing your boss or with big talk.

Page 102: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DECISION-MAKING VIA OWNERSHIPNOT CONSENSUS OR AUTHORITY

Ownership can't be given, only taken.

Ownership can't be declared, only demonstrated.

Page 103: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DO-OCRACY / INTRAPRENEURSHIPAsk forgiveness, not permission.

Page 104: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

EVERYTHING IS AN EXPERIMENT

Everything is always subject to change.Ending an experiment isn't a failure.

Page 105: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

OWN UP TO FAILURE

Admit your mistake, say you're sorry, and feel the failure tomake sure you learned from it. Then, get back to work.

Page 106: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

GRADUAL ROLLOUTS

Incremental. Adjust.

Page 107: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

DESIGN EVERYTHING

Be intentional.

Page 108: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

QUESTION EVERYTHINGThe status quo is never good enough.

Page 109: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

MANIACAL FOCUS ON SIMPLICITY

There is no step 1.

Page 110: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

... CÓDIGO ESPERTO DEMAIS

load averagesELB -> unicorns

Page 111: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

CLI 4 LIFECommand-line interfaces are the heart of developer

workflows.

Page 112: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

IGNORE THE COMPETITIONExcept to borrow good ideas.

Page 113: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

WRITE WELLClear writing is clear thinking.

Page 114: HEROKU - QConSP · 2014. 8. 27. · fabio@heroku.com. QCONSP 2014 FABIO KUNG Tech Lead, Runtime Systems at Heroku. heroku scale web=3 worker=2. alta-escala-disponibilidade.herokuapp.com.

STRONG OPINIONS, WEAKLY HELDBe willing to change your mind.