http://borba.blog.br
Merda Acontece
Luiz Borba
1989Estudante
1991
Programador
1994
Empreendedor
Analista
de
Tecnologia
1998
Líder
Técnico
2000
2001
Arquiteto de
Software
2005
Scrum
Master
2010
Consultor em
Tecnologia
2014(?)
Consultor em
Negócios
Quem é
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º Ato
Porque a Merda Acontece?
Onde há catinga, há merda
Martin Fowler’s Code Smells
Duplicated Code
Long Method
Large Class
Long Parameter List
Divergent Change
Shotgun Surgery
Feature Envy
Data Clumps
Primitive Obsession
Switch Statements
Parallel Inheritance Hierarchies
Lazy Class
Speculative Generality
Temporary Field
Message Chains
Middle Man
Inappropriate Intimacy
Alternative Classes with Different Interfaces
Incomplete Class Libraries
Data Class
Refused Bequest
Comments
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º Ato
Como 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º Ato
Tendê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ílogo
Sobre 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
Obrigado!
http://borba.blog.br
Luiz Borba

Merda Acontece