Rails Summit 2008 : Histórias de Guerra - Enfrentando problemas reais em aplicações Web 2.0

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites

    Rails Summit 2008 : Histórias de Guerra - Enfrentando problemas reais em aplicações Web 2.0 - Presentation Transcript

    1. Uma história de guerra: Enfrentando problemas reais em aplicações Web 2.0 Manoel Lemos Ronaldo Ferraz Nando Vieira Rails Summit Latin America 2008 São Paulo, Brasil, 16.Outubro
    2. 1983
    3. 1983 1984
    4. 1983 1993 1984
    5. 1983 1993 1984 1994
    6. 1983 1993 1984 1994 1997
    7. 1983 1993 1999 1984 1994 1997
    8. 1983 1993 1999 1984 1994 1997
    9. 1983 1993 1999 1984 1994 1997 2000
    10. 1983 1993 1999 2006 1984 1994 1997 2000
    11. Abr.06
    12. Nov.06 Abr.06
    13. Fev.07 Nov.06 Abr.06
    14. Fev.08 Fev.07 Nov.06 Abr.06
    15. Ago.08 Fev.08 Fev.07 Nov.06 Abr.06
    16. Ago.08 Fev.08 Fev.07 Nov.06 Abr.06
    17. BlogBlogs Status Business Numbers Traffic Numbers 110.000 usuários 5.2M PageViews 200.000 blogs 2.6M Uniques 2.000.000 posts Top 4000 Alexa Global 250 usuários / dia Top 120 Alexa Brasil 150 blogs / dia Top 102 IBOPE Brasil 5.000 posts / dia 50M Widget Impressions
    18. Crescer é um processo complicado e doloroso! É impossível de se prever com precisão Existem gargalos escondidos Às vezes você precisa voltar atrás Às vezes você precisa mudar tudo Não existem “silver-bullets” A complexidade vai crescer com você
    19. Crescimento real nunca acontece em um só eixo! Tráfego : mais usuários, transações, imagens... Tamanho : banco, memória, cache... Complexidade : algoritmos, arquitetura, infraestrutura... Organização : equipe, comunicação, processos... Negócio : modelos, parceiros, fornecedores... Na maioria dos casos os problemas crescem mais que linearmente!!!
    20. Hoje 1.5 Milhões por dia
    21. httpd mongrel mysql
    22. httpd mongrel mongrel mongrel mysql
    23. httpd mongrel mongrel mongrel memcached mysql
    24. httpd mongrel mongrel mongrel memcached mysql
    25. httpd mongrel mongrel mongrel memcached mysql
    26. load balancing httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached mysql
    27. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    28. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    29. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    30. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    31. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    32. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    33. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    34. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    35. load balancing 1 (web) httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
    36. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql
    37. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql (master) mysql (slave)
    38. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql mysql (master) mysql (slave)
    39. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql mysql (master) mysql (slave)
    40. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql mysql (master) mysql (slave)
    41. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) memcached memcached memcached memcached
    42. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) memcached memcached memcached memcached
    43. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) memcached memcached Robot Robot memcached memcached Robot Robot
    44. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) Indexer Indexer memcached memcached Robot Robot (Search) (Search) memcached memcached Robot Robot
    45. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) Indexer Indexer memcached memcached Robot Robot (Search) (Search) httpd httpd mongrel mongrel mongrel mongrel memcached memcached Robot Robot mongrel mongrel mongrel mongrel mongrel mongrel load balancing 3 (API)
    46. load balancing 1 (web) load balancing 2 (widgets) mongrels mongrels mongrels mongrels mongrels mongrels mysql mysql (master) mysql (slave) Indexer Indexer memcached memcached Robot Robot (Search) (Search) memcached memcached Robot Robot mongrels mongrels load balancing 3 (API)
    47. load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Indexer memcached memcached (Search) mysql mysql (master) (master) Indexer memcached memcached (Search)
    48. load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Indexer memcached memcached (Search) mysql mysql (master) (master) Indexer memcached memcached (Search)
    49. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
    50. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
    51. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Eureca...Idéias... mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Single Sign On Shared Resources Robot Robot Integrated Search Robot E=MC2 Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
    52. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
    53. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels E ai, #comofaz ? Robot Robot Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
    54. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels
    55. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    56. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    57. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA Credentials (PHP) ActiveDNA (REST) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    58. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA DNA Credentials Profile (PHP) (PHP) ActiveDNA (REST) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    59. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA DNA DNA Credentials Profile Avatars (PHP) (PHP) (PHP) ActiveDNA (REST) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    60. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph (PHP) (PHP) (PHP) (C++) (Python) ActiveDNA (REST) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    61. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    62. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    63. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    64. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    65. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels humm... mongrels mongrels mongrels mongrels mongrels mongrels mongrels PHP... ActiveDNA (REST) WTF??!! load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    66. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels humm... mongrels mongrels mongrels mongrels mongrels mongrels mongrels PHP... ActiveDNA (REST) WTF??!! load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer memcached memcached memcached Robot Robot (Search) (Search)
    67. Active DNA Problema: Várias features necessárias (Profile, SSO, Avatar, etc) e pouco tempo Serendipity: Companhia irmã com vários componentes REST Resultado: Active DNA, uma biblioteca REST flexível mais cache e serviços
    68. Active DNA Por que não Active Resource Interface fixa Somente Rails sem overrides Pouca integração com external services
    69. Busca Ferret: FAIL Sphinx: Muito limitado Lucene / Solr: Java Xapian: Interessante Mas, e se precisarmos mudar?
    70. Busca Solução: Sapien Cliente / encapsulamento de servidor de busca Driver-based, naturalmente distribuído Drivers podem ser mudados e o índice refeito em um passo Brasigo Query Language
    71. API Controle de Acesso HTTP Auth (email & senha) OAuth para suportar usuários de OpenID e outros Restrições de uso Frameworks mais leves Sinatra Thin
    72. Dia-a-dia (SCRUM) Scrum Várias equipes Coordenação e priorização Rotacionamento de equipes Socialização de conhecimento Cultura compartilhada
    73. Dia-a-dia (Git) Git Vários repositórios internos, todos Git Branches por estória Repositório sempre releasable
    74. Dia-a-dia (Sharing) Cultura de bibliotecas Plugins Gems / Gem server interno Funcionalidade compartilhada via API
    75. Dia-a-dia (Testes) Test all the f***ing time Sem cobertura, não há conhecimento Socialização de conhecimento Integração contínua
    76. Continuous Integration Dedicated integration environment with automated integration and tests execution with the most up to dated code base. Automated Reporting Test Cases Results Tests Coverage
    77. Tests, tests & more tests
    78. Tests, tests & more tests
    79. Tests, tests & more tests
    80. Continuous Integration
    81. Continuous Integration
    82. Continuous Integration
    83. Continuous Integration
    84. Continuous Integration
    85. Continuous Integration
    86. Continuous Integration
    87. Continuous Integration
    88. Continuous Integration
    89. Continuous Integration
    90. Continuous Integration
    91. Continuous Integration
    92. Continuous Integration
    93. Continuous Integration
    94. Continuous Integration
    95. Continuous Integration
    96. Venha trabalhar com a gente!!! vagas@blogblogs.com.br
    97. Obrigado! mlemos@webcointernet.com rferraz@webcointernet.com fvieira@webcointernet.com http://brasigo.com.br/ http://blog.brasigo.com.br/ http://blogblogs.com.br/ http://blog.blogblogs.com.br/

    + Manoel LemosManoel Lemos, 8 months ago

    custom

    993 views, 3 favs, 2 embeds more stats

    Apresentação do pessoal da WebCo Internet (BlogBl more

    More Info

    CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

    Go to text version
    • Total Views 993
      • 881 on SlideShare
      • 112 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 41
    Most viewed embeds
    • 111 views on http://manoellemos.com
    • 1 views on http://static.slideshare.net

    more

    All embeds
    • 111 views on http://manoellemos.com
    • 1 views on http://static.slideshare.net

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as innappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel

    Categories