Recentemente achei curioso o pessoal da blogosfera trazer o Twitter à tona. Em 15 de abril eu publiquei um post chamado A Polêmica Twitter (que depois deu origem à série de entrevistas internacionais do blog, que foi inaugurado pelo Dr. Nic). Nele eu explico o que foi o fenômeno Twitter e a polêmica em torno da performance sobre Rails (Twitter é feito em Rails, para quem não sabia).


follow AkitaOnRails at http://twitter.com

Eu twitto faz alguns meses, desde que ouvi Leo Laporte (do TWiT.tvno pun intended) e Veronica Belmont (ex-C|NET Buzz out Loud, agora Mahalo), discutindo sobre isso, acho que no ano passado. Houve discussões no mundo dos podcasts entre Twitter vs Jaiku. Houve até uma polêmica em torno de Leo Laporte migrando do Twitter para Jaiku. Depois Kevin Rose (fundador do excelente Digg) anunciou seu próprio social networking ; Pownce (que comecei a usar recentemente).

Assim como John C. Dvorak, eu também não vejo muita graça em twittar. Eu twitto, no máximo, uma vez a cada 2 dias. Às vezes só uma vez por semana. Tem quem twitte todo e qualquer tipo de bobagem, a cada minuto: “acabei de acordar”, “tomei meu café agora”, “acho que estou triste hoje”. Alguns usam como um chat assíncrono. Como Dvorak, também não pretendo criticar negativamente nesse tipo de micro-blogging, acho que tem seu valor, assim como blogs e podcasts, são meios de comunicação de massa. É um tipo de River of News. Existem dezenas de produtos assim como Tumblr, que segue o conceito de ‘tumble blogs’, onde bons exemplos são o On-Ruby de Pat Eyler e o Projectionist de Sam Stepherson (criador do Prototype), Marcel Molina Jr. (membro do Rails Core Team, que palestrou recentemente na Ruby Hoedown).

Um fator que acho interessante nesses serviços é a integração com e-mail, IM, e até SMS para celular. Dessa forma as mensagens fluem de um meio de comunicação para o próximo com facilidade. É interessante poder Twittar só enviando um SMS, no meio de um bar (apesar que isso é geek demais pra se fazer o tempo todo). O conceito de “seguir amigos” (apesar que a definição de ‘amigos’ é dúbia nessas comunidades onde todo mundo simplesmente vai acrescentando todo mundo). Alguns eventos já usam ou usaram esses serviços para ter um stream em real-time sobre os acontecimentos, minuto-a-minuto.

Claro, existem os social networkings ‘tradicionais’ como Orkut, MySpace. Temos o ultra-famoso Facebook de Mark Zuckerberg, que é um fenômeno único. Alguns de nós também utiliza serviços menos ‘extravagantes’ como o business social networking LinkedIN (que pelo menos tem um objetivo mais útil do que papear: trocar contatos de negócio – eu mesmo já recebi propostas de trabalho por ele) e o Plaxo, que é um tipo de Agenda de Contatos online, onde cada um da sua agenda auto-atualiza seus próprios dados. Acho útil para sincronizar a agenda dos meus micros e celular.

Muita gente já tentou explicar. Mark Zuckerberg também já deu seus 2 centavos sobre o assunto. Vejam o New York Times falando sobre o novo Pownce. Vejam Dr. Dobbs explicando Jaiku. Aqui temos a Business Week falando sobre a geração MySpace (esse artigo é de 2005!).

No fim do dia, é mais uma comunidade online. Por alguma razão muita gente gosta de desperdiçar bastante tempo neles. Alguns usam de forma pragmática: enviar mensagens para vários conhecidos de uma só vez. Na maior parte do tempo, é pura perda de tempo. Eu li uma vez na revista Business 2.0 que os internautas americanos gastavam 1% de seu tempo diário no Facebook. Acreditem, isso é muito!

Para nós Railers, qual a parte importante? Throughput! Claro! A diferença entre os antigos sites estáticos de notícia e os micro-social-networkings é que cada vez mais as pessoas passam cada vez menos tempo no site, mas o número de pessoas acessando e a quantidade de vezes que cada um acessa por dia aumenta. Ou seja, em vez de 100 pessoas fazerem 100 acessos diários, com permanência de 5 min. Agora você tem 200 pessoas, acessando um total de 2000 vezes com 1 min de permanência. Seu throughput sobe ordens de grandeza.

Não se engane: Rails é excelente, mas tem sérios problemas de contenção (global locking, ActionPack não-thread-safe, não-reentrante, ActiveRecord com lock de conexão por request). Existem dezenas de maneiras de segurar o tranco. O pessoal do Twitter usa uma versão bastante modificada do Rails para, por exemplo, suportar múltiplos bancos de dados.

Quem estiver trabalhando em algum projeto de social networking, principalmente do tipo que tem muita troca de arquivos (fotos, podcasts, downloads) vai querer pelo menos dar uma olhada na solução de Ezra Zygmuntowicz, Merb (Mongrel+Erb), um novo framework MVC ultra-leve que espera ser um Rails-light. Ele é bastante integrado ao Mongrel para extrair o máximo dele, tem a opção de usar ActiveRecord (mas aí o ganho de performance não será tão grande) e ele foi construído com duas prioridades: simplicidade e performance. Já existem muitas aplicações Rails que estão integrando Merb para as atividades mais pesadas como receber upload de grandes arquivos.

Também recomendo o livro Deploying Rails Applications – a Step-by-Step Guide, do próprio Ezra. São receitas de alguém quem tem a experiência de trabalhar num hosting como a EngineYard.

Resumindo, social networkings são um pesadelo para administradores de sistema: para que sejam um sucesso eles precisam de muita gente indo e voltando, o tempo todo. Isso gasta muita banda, muito processamento, é preciso se preocupar muito mais com segurança, você fica sujeito a efeitos indiretos como Digg Effect e seu custo aumenta exponencialmente, muito rápido. Portanto seu plano de negócio tem que ser muito preciso para que o dinheiro entre mais rápido do que sai.

De qualquer forma, não deixa de ser um fenômeno social interessante de se analisar. Meu programa favorito de Twitter? Claro, Twitterific

comentários deste blog disponibilizados por Disqus