merda acontece
DESCRIPTION
O mundo real nos impede de construir código perfeito, absolutamente sem bugs. Não é incomum nos depararmos com a tela azul da morte ou mesmo com a baleia do twitter. Se isso acontece com grandes empresas com recursos quase ilimitados, imagine com pobres mortais como nós. Merda acontece, e precisamos estar sempre preparados para ela. Nesta apresentação, Luiz Borba irá apresentar técnicas de como você deve ser preparar para o pior.TRANSCRIPT
1989
Estu
dant
e
1991
Prog
ramad
or
1994
Empr
eend
edor
Anali
sta de
Tecno
logia
1998
Líder
Técnico
2000
2001
Arquiteto de
Software
2005
Scrum Master
2010
Consultor em
Tecnologia
2014(?)
Consultor em
NegóciosQuem é
Luiz Borba?
Ada Lovelace
“Think of my horror then at just discovering that the table & diagram (over which I have been spending infinite patience & pains) are seriously wrong, in one or two points”.
1843
Grace Hopper
1952
A-0primeiro compilador já
escrito para um computador eletrônico
1947
“As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs”.
(Maurice Wilkes, 1949)
"There is no program that, given a description of an arbitrary computer program, can decide whether the program finishes running or continues to run forever".
(Alan Turing, 1936)
Seja empírica ou matematicamente, já faz
décadas que descobrimos que MERDA ACONTECE!
1º AtoPorque a Merda Acontece?
Onde há catinga, há merda
Martin Fowler’s Code Smells
Duplicated CodeLong MethodLarge ClassLong Parameter ListDivergent ChangeShotgun SurgeryFeature EnvyData ClumpsPrimitive ObsessionSwitch StatementsParallel Inheritance HierarchiesLazy ClassSpeculative GeneralityTemporary FieldMessage ChainsMiddle ManInappropriate IntimacyAlternative Classes with Different InterfacesIncomplete Class LibrariesData ClassRefused BequestComments
Merda Acontece porque deixamos janelas quebradas
O milagre da multiplicação
Cuidado com ORM
Merda Acontece porque usamos abstrações sem saber o que acontece por “debaixo
dos panos”
As 2 Leis de Borba
Primeira Lei de Arquitetura de Software de Borba
(Borba's 1st Software Architecture Law)
Primeira Lei de Arquitetura de Software de Borba
(Borba's 1st Software Architecture Law)
Toda arquitetura definida está errada.
Precisa PROVAR!
Segunda Lei de Arquitetura de Software de Borba
(Borba's 2nd Software Architecture Law)
Segunda Lei de Arquitetura de Software de Borba
(Borba's 2nd Software Architecture Law)
Toda arquitetura definida que comprovadamente funciona
estará errada em breve.
As coisas mudam• Tecnologias mudam
• Requisitos/Planos/Negócios mudam
• Pessoas mudam
• Usuários mudam
• TUDO MUDA. O TEMPO TODO.
Twitter no Início
Twitter Hoje
Merda Acontece porque não evoluimos nossos sistemas ao
longo do tempo
O Banco do Tio Patinhas
Como alterar configurações no
computador do Banco do Tio Patinhas
Merda Acontece quando operadores são dementes
2º AtoComo lidar com a Merda?
Logs
Sua Aplicação falha, usuários lhe esculhambam
Crash Analysis
Obter os logs de execução e analisa-los ajuda a descobrir rapidamente os problemas quando a Merda Acontece
Descomendo em Produção
Deploy em Produção
Como voltar no tempo?
$ git push heroku master
class AddCurrentToVendor < ActiveRecord::Migration
def up articles = select_all('SELECT * FROM articles') articles.each do |article| first_vendor = select_one("SELECT * FROM vendors WHERE article_id = #{article['id']}") if first_vendor update("UPDATE vendors SET current=#{quoted_true} WHERE id=#{first_vendor['id']}") end end end
def down remove_column :vendors, :current end end
Migrations (Rails)
Esteja sempre preparado para voltar atrás quando a Merda
Acontece
O Paradoxo do Deploy
Porque temos medo do Deploy?
O Deploy de 180 Dias
Deploy Frequente minimiza a chance de dar Merda e
quando acontece, é mais fácil de detectar o problema
O Caso Facebook
Qual a frequência de deploy em produção do Facebook?
2 vezes por dia
E o que acontece quando dá merda?
"Reverting is for losers!"
(Chuck Rossi)
IRC para localizar os desenvolvedores, resolver a bronca na hora e fazer um
novo deploy
Desenvolvedores tem karma
Quanto tempo leva o processo de deploy? (dezenas de
milhares de servidores e um pacote de 1.5Gb)
Como descobrir se deu merda?
Monitoramento do Facebook analisa até o que o pessoal do
Twitter tá falando
Facebook sabe das coisas, se você não sabe o que fazer,
copie dos melhores
3º AtoTendências
Testes Automatizados
Só teremos velocidade de recuperação se nossos testes
forem automatizados
Vagrant e Docker
Operação deve ser o mais simples possível
Um C seguro
Rust
Linguagens e Frameworks devem ajudar a evitar que
desenvolvedor cometa erros
EpílogoSobre Você
“That’s 30 Minutes Away. I’ll be there in 10.”
(Wiston ‘The Wolf’ Wolfe)
Seja Rápido
“No more half measures, Walt”
(Mike Ehrmantraut)
Seja Decisivo
Automatize TUDO
Use Unix
Não seja um Embola Bosta
O nosso trabalho é cada vez mais importante e se não tivermos cuidado, muitos
inocentes vão pagar o pato
Skynet
Replicantes
Cylons