Causos da linha de frente
         Bruno Zanchet
          @bzanchet
agenda

• história
• infra/arquitetura
• nosso dinheiro (revenue)
• dinheiro dos outros (venture capital)
linode
• 1 linode,
• 2 linodes,
• 3 linodes,
• ..
newservers
+ 2 x Intel E5504 Quad Core 2.00 GHz
+ 48GB DDR3 ECC RAM             $0.60          PER HOUR
+ 2 x 500GB SATA RAID 1              (or $432 PER MONTH)
softlayer
• 6 servers (4 app + 2 mysql master/slave)
• rails, paperclip, cap, apache+passenger
• 600M pageviews/mês
• 13M imagens
scaling
this shit ain’t easy
macbookair:weheartit bzanchet$ git show 6952312991079e8992603427acb15e9d9c
commit 6952312991079e8992603427acb15e9d9cb3f05e
Author: Bruno Zanchet <bzanchet@gmail.com>
Date: Mon Aug 2 17:12:59 2010 -0300

  good bye dashboard..

--- a/app/controllers/home_controller.rb
+++ b/app/controllers/home_controller.rb
@@ -4,6 +4,7 @@ class HomeController < ApplicationController

    def dashboard
+ redirect_to user_url(current_user.username) and return
     following_ids = current_user.following_ids
     count = User.sum(:hearts_count, :conditions => {:id => following_ids})
...
e não foi rápido
commit 88e9ab8b82b28ba29064726c9a9069a175c29b83
Author: Fabio Giolito <fabiogiolito@gmail.com>
Date: Thu Mar 24 09:31:59 2011 -0300

  making dashboard available for everyone
código? bug.
absolutamente trivial
• :dependent => :destroy
• :counter_cache
• fragment caching <% cache() %>
# cache_helper.rb:46
private
 def fragment_for(name = {}, options = nil, &block)
   if controller.fragment_exist?(name, options)
     controller.read_fragment(name, options)
   else
     pos = output_buffer.length
     ...
devops
$ git push
$ cap deploy
$ cap deploy:rollback
“sysadmins trabalham assim em qualquer lugar
 do mundo; o trabalho deles é evitar que você
coloque esses códigos toscos e quebrados pra
  rodar no maravilhoso [CentOS, RHEL ...]”
perguntas?
ferramentas
new relic
munin
mysql
http://www.facebook.com/MySQLatFacebook
http://www.mysqlperformanceblog.com/
InnoDB page sizes: plans and ideas


                                     InnoDB Flushing: a lot of memory and slow disk


       How Innodb Contention may manifest itself


                                     The four fundamental performance metrics


             Reality of Innodb Caching


                                     InnoDB Flushing: Theory and solutions




                                               ...
• compressed tables
• fsync vs O_DIRECT etc
• write threads
• change buffer
• adaptative flushing
varnish
https://www.varnish-cache.org/trac/wiki/ArchitectNotes
mysql> select count(*) from users;
+------------+
| count(*) |
+------------+
| 1124995 |
+------------+
1 row in set (0.49 sec)
revenue
http://calacanis.com/2010/01/23/why-we-should-boycott-
comscore-and-perhaps-why-traders-should-short-their-
                         stock/
• patamares
• 5MM US uniques
• comscore
• nicho
VC
..passada essa fase
fraud police
http://www.youtube.com/watch?v=eA8XiC3m7vw
mais perguntas?
Causos da linha de frente
         Bruno Zanchet
          @bzanchet

causos da linha de frente - #rsonrails 2011

Editor's Notes

  • #2 \n
  • #3 \n
  • #4 getting real\nrework\nsignal vs noise\nfortune 5 000 000\n
  • #5 emo\ngarotas\nerotismo\nanuncios toscos\n
  • #6 fabio escreveu primeiro\n\n
  • #7 \n
  • #8 \n
  • #9 \n
  • #10 \n
  • #11 e tinha um paulista que trabalhava l&amp;#xE1;\n\n
  • #12 parentese\nfalar da puc, grande faculdade\nhistoria, arquitetura, direito.\n
  • #13 \n
  • #14 \n
  • #15 \n
  • #16 aquele fen&amp;#xF4;meno que todo mundo discute\n
  • #17 .. volto nesse assunto. relacional vs nao relacional\n\nquero dar um s&amp;#xF3; exemplo\n
  • #18 \n
  • #19 \n
  • #20 \n
  • #21 e aqui eu gostaria de falar de novo daquele cara\no DHH\nclientes vs usu&amp;#xE1;rios\n
  • #22 .. se tem alguma coisa que eu aprendi trabalhando nessa escala\n
  • #23 c&amp;#xF3;digo n&amp;#xE3;o funciona na nossa escala.\na menos que seja.\n
  • #24 \n
  • #25 .. e tudo isso me leva a uma buzzword da moda\n
  • #26 \n
  • #27 \n
  • #28 \n
  • #29 buffer cache\nsystem call\nvmstat\narquivos por diretorio\nabrir um arquivo, apagar um arquivo. o que acontece?\n
  • #30 amazon\nrds\nec2\ns3\n
  • #31 \n
  • #32 \n
  • #33 \n
  • #34 \n
  • #35 \n
  • #36 \n
  • #37 uhhhhh\nlarry ellison\nnosql\nmongo, couch, redis\n
  • #38 \n
  • #39 \n
  • #40 \n
  • #41 \n
  • #42 \n
  • #43 real software\nprogramador com cabelos no peito.\nproxy reverso etc\n
  • #44 solr\n
  • #45 \n
  • #46 \n
  • #47 \n
  • #48 \n
  • #49 \n
  • #50 \n
  • #51 \n
  • #52 \n
  • #53 \n
  • #54 repetir um conselho do dhh-- n&amp;#xE3;o peguem\n&amp;#xE9; complicado, &amp;#xE9; demorado, &amp;#xE9; custoso; &amp;#x201C;next facebook&amp;#x201D; - tudo ou nada\ncontatos; anunciantes; parceiros\n- angel; friends and family\n
  • #55 kaleil tuzman tom herman\ngovworks\n\nvoc&amp;#xEA;s acham que &amp;#xE9; s&amp;#xF3; isso?\npassada essa fase..\n
  • #56 construir valor &amp;#xE9; diferente de construir lucro\ndepende dos objetivos\n\n
  • #57 \n
  • #58 \n
  • #59 longa jornada\na gente ganha alguns f&amp;#xE3;s pelo caminho\n
  • #60 \n
  • #61 \n
  • #62 \n
  • #63 \n
  • #64 eu queria falar pra voc&amp;#xEA;s de algo chamado.. Fraud Police. Ca&amp;#xE7;adores de fraudes.\n\nos ca&amp;#xE7;adores de fraudes s&amp;#xE3;o esse grupo imagin&amp;#xE1;rio, aterrorizante de adultos e que n&amp;#xE3;o existem, mas que vem bater na tua porta as 3 horas da manh&amp;#xE3; quando tu menos esperar, e entram dizendo\n\neu tenho amigos e conhecidos que s&amp;#xE3;o professores\n\na verdade &amp;#xE9; que fica um pouco mais f&amp;#xE1;cil e um pouco melhor com o tempo e com a experi&amp;#xEA;ncia, mas nunca vai realmente embora. as pessoas que se v&amp;#xEA; por a&amp;#xED;, no mundo real, trabalhando em empregos de verdade - Porque elas nao tem.\n\nna nossa &amp;#xE1;rea &amp;#xE9; uma &amp;#xE1;rea que n&amp;#xE3;o tem um livrinho de regras - nenhum livro de regras foi escrito porque ele n&amp;#xE3;o pode ser escrito. \n\ntalvez advogados e m&amp;#xE9;dicos tenham uma vida mais f&amp;#xE1;cil-- porque parece que eles tem um caminho estabelecido a seguir; fazer a residencia e a prova da oab e de repente depois de anos de estudo e todos os testes feitos e passado num concurso magicamente se abre uma porta e algu&amp;#xE9;m de d&amp;#xE1; um bisturi pra abrir a cabe&amp;#xE7;a de uma pessoa porque pronto: tu &amp;#xE9; um expert.\n\nmas eu acredito que mesmo essas pessoas sentem medo dos ca&amp;#xE7;adores de fraude. Mesmo um neuro-cirurgiao experiente, segurando um bisturi, pronto pra abrir a cabe&amp;#xE7;a de um paciente - mesmo ele deve ter aquele momento onde ele pensa &quot;puta que pariu, eu nao acredito que eles tao deixando que eu abra a cabe&amp;#xE7;a desse sujeito. Eles n&amp;#xE3;o sabem que eu nao sei o que to fazendo; que eu perdi a chave do meu carro hoje de manh&amp;#xE3;, que eu deixei meu celular cair na privada e ele estragou. E eu to aqui segurando um bisturi e vou abrir a cabe&amp;#xE7;a desse ser humano e ele pode morrer. Quem ta me deixando fazer isso? eles sao loucos!&quot;\n\n&amp;#xE9; verdade.\n\nEnt&amp;#xE3;o, se &amp;#xE9; pra deixar uma li&amp;#xE7;&amp;#xE3;o, que seja.. Eu quero que voc&amp;#xEA;s saiam daqui e comecem a trabalhar, comecem a inventar qualquer merda. Usem as ferramentas, usem os seus amigos, ajude os teus amigos, e se alguem te pedir ajuda e tu nao fizer a menor id&amp;#xE9;ia se tu consegue ajudar, mas de repente tu consegue descobrir, diga que sim e tente.\n\ne fa&amp;#xE7;am merda, e errem, e aprendam a pedir desculpa porque deu tudo errado. vai acontecer.\n\ne vai chegar num ponto em que os ca&amp;#xE7;adores de fraude v&amp;#xE3;o vir correndo e gritando. e tu vai abrir a porta, e quando eles te acusarem de ser uma fraude, voc&amp;#xEA;s v&amp;#xE3;o poder dizer honestamente, como eu posso dizer e digo: &quot;voc&amp;#xEA;s est&amp;#xE3;o certos. Eu n&amp;#xE3;o fa&amp;#xE7;o id&amp;#xE9;ia sobre o que eu to fazendo. Eu to inventando qualquer merda, mas ta dando certo. i am making this shit up as i go along, but it is working out just fine&quot;.\n\n&amp;#xE9; assim que funciona.\n\n\n
  • #65 \n
  • #66 \n
  • #67 \n