1989Estudante
1991
Programador
1994
Empreendedor
Analista
de
Tecnologia
1998
Líder
Técnico
2000
2001
Arquiteto de
Software...
Ada Lovelace
“Think of my horror then at just
discovering that the table & diagram
(over which I have been spending
infinit...
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 though...
"There is no program that, given a
description of an arbitrary computer
program, can decide whether the
program finishes ru...
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
F...
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á err...
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
compr...
As coisas mudam
• Tecnologias mudam
• Requisitos/Planos/Negócios mudam
• Pessoas mudam
• Usuários mudam
• TUDO MUDA. O TEM...
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...
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
Merda Acontece
Merda Acontece
Merda Acontece
Merda Acontece
Merda Acontece
Merda Acontece
Upcoming SlideShare
Loading in...5
×

Merda Acontece

261

Published on

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.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
261
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Merda Acontece

  1. 1. http://borba.blog.br Merda Acontece Luiz Borba
  2. 2. 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?
  3. 3. 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
  4. 4. Grace Hopper 1952 A-0primeiro compilador já escrito para um computador eletrônico
  5. 5. 1947
  6. 6. “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)
  7. 7. "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)
  8. 8. Seja empírica ou matematicamente, já faz décadas que descobrimos que MERDA ACONTECE!
  9. 9. 1º Ato Porque a Merda Acontece?
  10. 10. Onde há catinga, há merda
  11. 11. 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
  12. 12. Merda Acontece porque deixamos janelas quebradas
  13. 13. O milagre da multiplicação
  14. 14. Cuidado com ORM
  15. 15. Merda Acontece porque usamos abstrações sem saber o que acontece por “debaixo dos panos”
  16. 16. As 2 Leis de Borba
  17. 17. Primeira Lei de Arquitetura de Software de Borba (Borba's 1st Software Architecture Law)
  18. 18. Primeira Lei de Arquitetura de Software de Borba (Borba's 1st Software Architecture Law) Toda arquitetura definida está errada.
  19. 19. Precisa PROVAR!
  20. 20. Segunda Lei de Arquitetura de Software de Borba (Borba's 2nd Software Architecture Law)
  21. 21. Segunda Lei de Arquitetura de Software de Borba (Borba's 2nd Software Architecture Law) Toda arquitetura definida que comprovadamente funciona estará errada em breve.
  22. 22. As coisas mudam • Tecnologias mudam • Requisitos/Planos/Negócios mudam • Pessoas mudam • Usuários mudam • TUDO MUDA. O TEMPO TODO.
  23. 23. Twitter no Início
  24. 24. Twitter Hoje
  25. 25. Merda Acontece porque não evoluimos nossos sistemas ao longo do tempo
  26. 26. O Banco do Tio Patinhas
  27. 27. Como alterar configurações no computador do Banco do Tio Patinhas
  28. 28. Merda Acontece quando operadores são dementes
  29. 29. 2º Ato Como lidar com a Merda?
  30. 30. Logs
  31. 31. Sua Aplicação falha, usuários lhe esculhambam
  32. 32. Crash Analysis
  33. 33. Obter os logs de execução e analisa-los ajuda a descobrir rapidamente os problemas quando a Merda Acontece
  34. 34. Descomendo em Produção
  35. 35. Deploy em Produção
  36. 36. Como voltar no tempo?
  37. 37. $ git push heroku master
  38. 38. 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)
  39. 39. Esteja sempre preparado para voltar atrás quando a Merda Acontece
  40. 40. O Paradoxo do Deploy
  41. 41. Porque temos medo do Deploy? O Deploy de 180 Dias
  42. 42. Deploy Frequente minimiza a chance de dar Merda e quando acontece, é mais fácil de detectar o problema
  43. 43. O Caso Facebook
  44. 44. Qual a frequência de deploy em produção do Facebook?
  45. 45. 2 vezes por dia
  46. 46. E o que acontece quando dá merda?
  47. 47. "Reverting is for losers!" (Chuck Rossi)
  48. 48. IRC para localizar os desenvolvedores, resolver a bronca na hora e fazer um novo deploy
  49. 49. Desenvolvedores tem karma
  50. 50. Quanto tempo leva o processo de deploy? (dezenas de milhares de servidores e um pacote de 1.5Gb)
  51. 51. Como descobrir se deu merda?
  52. 52. Monitoramento do Facebook analisa até o que o pessoal do Twitter tá falando
  53. 53. Facebook sabe das coisas, se você não sabe o que fazer, copie dos melhores
  54. 54. 3º Ato Tendências
  55. 55. Testes Automatizados
  56. 56. Só teremos velocidade de recuperação se nossos testes forem automatizados
  57. 57. Vagrant e Docker
  58. 58. Operação deve ser o mais simples possível
  59. 59. Um C seguro
  60. 60. Rust
  61. 61. Linguagens e Frameworks devem ajudar a evitar que desenvolvedor cometa erros
  62. 62. Epílogo Sobre Você
  63. 63. “That’s 30 Minutes Away. I’ll be there in 10.” (Wiston ‘The Wolf’ Wolfe) Seja Rápido
  64. 64. “No more half measures, Walt” (Mike Ehrmantraut) Seja Decisivo
  65. 65. Automatize TUDO
  66. 66. Use Unix
  67. 67. Não seja um Embola Bosta
  68. 68. O nosso trabalho é cada vez mais importante e se não tivermos cuidado, muitos inocentes vão pagar o pato
  69. 69. Skynet
  70. 70. Replicantes
  71. 71. Cylons
  72. 72. Obrigado! http://borba.blog.br Luiz Borba

×