O Flavio Torres, do IG (agora Oi Internet), fez uma palestra bem interessante onde mostrou quais aspectos são importantes na hora de criar aplicações verdadeiramente escaláveis. Ele falou sobre arquitetura de aplicações, servidores web, cache, monitoramento, entre outros aspectos descritos abaixo.

  • Para ele, desenvolver “em casa” dá mais flexibilidade, não limitando uso de tecnologias dominadas pelos fornecedores, e comentou algumas experiências ruins com funcionários com visão muito limitada em se tratando de aplicações escaláveis;
  • Uso de Message Queue para escalabilidade;
  • A solução proposta para ter aplicações escaláveis pode envolver o uso das seguintes soluções:
    • MySQL;
    • Hadoop (para fazer o Map/Reduce);
    • Elasticsearch (para índices);
    • Nodejs (javascript do lado servidor);
    • APIs REST;
    • Python, Java, PHP;
    • Memcache (cache de objetos em memória – tendência);
    • Jetty
    • Varnish (cache web muito, muito rápido!);
    • Mongodb e Apache Couchdb (BDs NoSQL otimizados para busca de documentos);
    • Apache Cassandra e HBase (BDs NoSQL estruturados em coluna);
    • Sones e neo4j (BDs NoSQL estruturados em grafo);
    • Phoenix;
    • Apache e NGINX (servidores web);
    • REDIS (armazenamento chave/valor);
    • Framework rack::cache (pra quem usa Ruby on Rails);
    • Zabbix, JMX, Perf4J, Graylog2, Nagios,  Zenoss (monitoramento).

E então, se sentem mais confortáveis agora para implementar aplicações e infraestruturas escaláveis ? Eu não! :PA apresentação dele também está no slideshare.