Meio Bit » Baú » Internet » Revelados os problemas do Twitter

Revelados os problemas do Twitter

03/06/2008 às 11:41

As constantes, diárias e irritantes saídas do ar do Twitter estão deixando muita gente irritada, e a saída de Blaine Cook, arquiteto-chefe do projeto não deixou os fãs muito confortáveis. A grande briga na comunidade de desenvolvedores é se Ruby on Rails, o framework-base do Twitter escala ou não escala.

O Michael Arrington do TechCrunch postou algumas perguntas bem diretas, e o pessoal do Twitter não teve opção a não ser responder. Digamos que Ruby escalar ou não agora é irrelevante, o buraco é muito mais embaixo.

O Twitter aparentemente foi feito nas coxas. Sem nenhuma preocupação com crescimento futuro. A arquitetura não foi pensada para escalar, independente da linguagem utilizada.

O backend do sistema tem UMA MÁQUINA MySQL para gravação e três máquinas para consultas. E só. ~

twitterserver

O MySQL é um excelente banco para aplicações que exijam consultas simples, mas ele simplesmente NÃO funciona com consultas complexas. Perde feio em performance para o SQLServer, Oracle, DB2, PostgreSQL e qualquer outro banco "de verdade".

Talvez sua maior limitação seja na replicação de dados e no fallback entre servidores, quando da queda de um master. Existem soluções de mercado (pagas) para isso, mas o pessoal do Twitter pelo visto não sabia.

Quando o Twitter ameaça cair, um operador MANUALMENTE troca de um servidor de banco de dados para outro.

Agora estão planejando migrar de uma solução baseada em banco de dados para uma baseada em filesystem. Vão literalmente reinventar a roda, para depois descobrir que precisam de um banco de dados decente, e que é impossível gerenciar a quantidade de atualizações do Twitter via filesystem.

A impressão que se tem, vendo o Twitter, estudando o código da maioria das aplicações como o PHPNuke ou mesmo o Drupal é que gente sem qualificação e/ou experiência toca esses projetos. Não há otimização de código, tratamento de exceções, nada. O Drupal por exemplo até pouco tempo sequer tinha um dicionário de dados, que dirá um diagrama de caso e uso, e nem sonhar em uma documentação UML compliant.

Metodologia de desenvolvimento é algo importante. Não é preciso se você vai fazer uma besteirinha em meia-hora de PHP, mas se houver a menor possibilidade daquilo virar um projeto multiusuário e crescer, é melhor planejar desde o princípio.

Do contrário você acaba com um Twitter na mão, tendo que reiniciar servidor só pro bicho conseguir rodar.

Fonte: Twitter

relacionados


Comentários