Apresentação do pessoal da WebCo Internet (BlogBlogs e Brasigo) no Rails Summit Latin America 2008. Manoel Lemos, Ronaldo Ferraz e Nando Vieira falam de desafios reais vividos por empreendimentos Web 2.0. Desde o início do BlogBlogs até a formação da WebCo.
Presentation on how to chat with PDF using ChatGPT code interpreter
Rails Summit 2008 : Histórias de Guerra - Enfrentando problemas reais em aplicações Web 2.0
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
20. 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
21. 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ê
22. 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!!!
73. 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)
74. 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)
75. 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)
76. 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)
77. 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)
78. 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)
79. 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)
80. 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)
81.
82. 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
83. Active DNA
Por que não Active Resource
Interface fixa
Somente Rails sem overrides
Pouca integração com external services
85. 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
86. 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
87. Dia-a-dia (SCRUM)
Scrum
Várias equipes
Coordenação e priorização
Rotacionamento de equipes
Socialização de conhecimento
Cultura compartilhada
88. Dia-a-dia (Git)
Git
Vários repositórios internos, todos Git
Branches por estória
Repositório sempre releasable
89. Dia-a-dia (Sharing)
Cultura de bibliotecas
Plugins
Gems / Gem server interno
Funcionalidade compartilhada via API
90. Dia-a-dia (Testes)
Test all the f***ing time
Sem cobertura, não há conhecimento
Socialização de conhecimento
Integração contínua
91. 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