merda acontece

78
http://borba.blog.br Merda Acontece Luiz Borba

Upload: luiz-borba

Post on 12-Nov-2014

489 views

Category:

Technology


0 download

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

Page 1: Merda Acontece

http://borba.blog.br

Merda AconteceLuiz Borba

Page 2: Merda Acontece

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?

Page 3: Merda Acontece

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

Page 4: Merda Acontece

Grace Hopper

1952

A-0primeiro compilador já

escrito para um computador eletrônico

Page 5: Merda Acontece

1947

Page 6: Merda Acontece

“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)

Page 7: Merda Acontece

"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)

Page 8: Merda Acontece

Seja empírica ou matematicamente, já faz

décadas que descobrimos que MERDA ACONTECE!

Page 9: Merda Acontece

1º AtoPorque a Merda Acontece?

Page 10: Merda Acontece

Onde há catinga, há merda

Page 11: Merda Acontece

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

Page 12: Merda Acontece
Page 13: Merda Acontece

Merda Acontece porque deixamos janelas quebradas

Page 14: Merda Acontece

O milagre da multiplicação

Page 15: Merda Acontece
Page 16: Merda Acontece

Cuidado com ORM

Page 17: Merda Acontece

Merda Acontece porque usamos abstrações sem saber o que acontece por “debaixo

dos panos”

Page 18: Merda Acontece

As 2 Leis de Borba

Page 19: Merda Acontece

Primeira Lei de Arquitetura de Software de Borba

(Borba's 1st Software Architecture Law)

Page 20: Merda Acontece

Primeira Lei de Arquitetura de Software de Borba

(Borba's 1st Software Architecture Law)

Toda arquitetura definida está errada.

Page 21: Merda Acontece

Precisa PROVAR!

Page 22: Merda Acontece

Segunda Lei de Arquitetura de Software de Borba

(Borba's 2nd Software Architecture Law)

Page 23: Merda Acontece

Segunda Lei de Arquitetura de Software de Borba

(Borba's 2nd Software Architecture Law)

Toda arquitetura definida que comprovadamente funciona

estará errada em breve.

Page 24: Merda Acontece

As coisas mudam• Tecnologias mudam

• Requisitos/Planos/Negócios mudam

• Pessoas mudam

• Usuários mudam

• TUDO MUDA. O TEMPO TODO.

Page 25: Merda Acontece

Twitter no Início

Page 26: Merda Acontece

Twitter Hoje

Page 27: Merda Acontece

Merda Acontece porque não evoluimos nossos sistemas ao

longo do tempo

Page 28: Merda Acontece

O Banco do Tio Patinhas

Page 29: Merda Acontece

Como alterar configurações no

computador do Banco do Tio Patinhas

Page 30: Merda Acontece

Merda Acontece quando operadores são dementes

Page 31: Merda Acontece

2º AtoComo lidar com a Merda?

Page 32: Merda Acontece

Logs

Page 33: Merda Acontece

Sua Aplicação falha, usuários lhe esculhambam

Page 34: Merda Acontece

Crash Analysis

Page 35: Merda Acontece

Obter os logs de execução e analisa-los ajuda a descobrir rapidamente os problemas quando a Merda Acontece

Page 36: Merda Acontece

Descomendo em Produção

Page 37: Merda Acontece

Deploy em Produção

Page 38: Merda Acontece

Como voltar no tempo?

Page 39: Merda Acontece

$ git push heroku master

Page 40: Merda Acontece

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)

Page 41: Merda Acontece

Esteja sempre preparado para voltar atrás quando a Merda

Acontece

Page 42: Merda Acontece

O Paradoxo do Deploy

Page 43: Merda Acontece

Porque temos medo do Deploy?

O Deploy de 180 Dias

Page 44: Merda Acontece

Deploy Frequente minimiza a chance de dar Merda e

quando acontece, é mais fácil de detectar o problema

Page 45: Merda Acontece

O Caso Facebook

Page 46: Merda Acontece

Qual a frequência de deploy em produção do Facebook?

Page 47: Merda Acontece

2 vezes por dia

Page 48: Merda Acontece

E o que acontece quando dá merda?

Page 49: Merda Acontece

"Reverting is for losers!"

(Chuck Rossi)

Page 50: Merda Acontece

IRC para localizar os desenvolvedores, resolver a bronca na hora e fazer um

novo deploy

Page 51: Merda Acontece

Desenvolvedores tem karma

Page 52: Merda Acontece

Quanto tempo leva o processo de deploy? (dezenas de

milhares de servidores e um pacote de 1.5Gb)

Page 53: Merda Acontece
Page 54: Merda Acontece
Page 55: Merda Acontece

Como descobrir se deu merda?

Page 56: Merda Acontece

Monitoramento do Facebook analisa até o que o pessoal do

Twitter tá falando

Page 57: Merda Acontece

Facebook sabe das coisas, se você não sabe o que fazer,

copie dos melhores

Page 58: Merda Acontece

3º AtoTendências

Page 59: Merda Acontece

Testes Automatizados

Page 60: Merda Acontece
Page 61: Merda Acontece

Só teremos velocidade de recuperação se nossos testes

forem automatizados

Page 62: Merda Acontece

Vagrant e Docker

Page 63: Merda Acontece
Page 64: Merda Acontece

Operação deve ser o mais simples possível

Page 65: Merda Acontece

Um C seguro

Page 66: Merda Acontece

Rust

Page 67: Merda Acontece

Linguagens e Frameworks devem ajudar a evitar que

desenvolvedor cometa erros

Page 68: Merda Acontece

EpílogoSobre Você

Page 69: Merda Acontece

“That’s 30 Minutes Away. I’ll be there in 10.”

(Wiston ‘The Wolf’ Wolfe)

Seja Rápido

Page 70: Merda Acontece

“No more half measures, Walt”

(Mike Ehrmantraut)

Seja Decisivo

Page 71: Merda Acontece

Automatize TUDO

Page 72: Merda Acontece

Use Unix

Page 73: Merda Acontece

Não seja um Embola Bosta

Page 74: Merda Acontece

O nosso trabalho é cada vez mais importante e se não tivermos cuidado, muitos

inocentes vão pagar o pato

Page 75: Merda Acontece

Skynet

Page 76: Merda Acontece

Replicantes

Page 77: Merda Acontece

Cylons

Page 78: Merda Acontece

Obrigado!

http://borba.blog.brLuiz Borba