Medos, ataques de tubarões e "Vai escalar?"


Essa é uma grande preocupação que nós, desenvolvedores Web costumamos ter quando desenvolvemos uma aplicação Web – “Vai escalar?”. Por estar escrevendo o justickit! em Ruby on Rails, eu andei pesquisando sobre escalabilidade nessa plataforma e li um artigo do Matt Linderman da 37signals que me acalmou, mas não me animou muito e vou fazer aqui um resumo traduzido desse texto:

Normalmente temos medo de muitas coisas, como ataques de tubarões, terroristas, pegar Anthrax entre outras coisas “absurdas” e esses medos que sentimos são desproporcionais ao real risco dessas coisas acontecerem. O mesmo acontece no desenvolvimento de web apps, temos medo de nossa aplicação não escalar, mas o risco dela se tornar o novo Google, ou MySpace da noite para o dia é quase zero (essa foi a parte que me desanimou).

Vou listar medos comuns e as verdades sobre eles:

  1. Medo: Não vai escalar.
    Verdade: Você não vai virar o novo Google da noite para o dia.

  2. Medo: Muitos bugs
    Verdade: Desde que eles não apaguem tudo em (fodam com) seu banco de dados, você pode conviver com eles por um tempinho.
  3. Medo: Poucas features
    Verdade: Você sempre pode adicionar mais features depois.

  4. Medo: Nunca sair do ar
    Verdade: Um downtime de vez em quando não vai espantar as pessoas.
  5. Medo: É muito simples
    Verdade: Soluções simples são legais quando fazem o trabalho que se propõem com eficiência.
  6. Medo: Vão nos copiar
    Verdade: O que importa é como você executa a idéia, e não a idéia em si.
  7. Medo: Devemos parecer sérios
    Verdade: Parecer sério todo o tempo deixa o serviço com aparência antipática. É legal ser brincalhão e ter personalidade (Bad, bad server, no donuts for you!)

Então a princípio devemos nos focar em termos uma aplicação rodando com boa usabilidade, para atrair o público, e aí sim se preocupar com escala, pois se focamos nesses aspectos performáticos, vamos acabar escrevendo nossa aplicação utilizando tecnologias puristas, onde iremos levar um tempão para concluir e as vezes um tempo que tende ao infinito e não lançamos o nosso sistema. E a sugestão é que você adote tecnologias Agile (RoR, Django, PHP, etc) e só depois que as coisas estiverem caminhando, é que você pensa em escala, e provavelmente quando você precisa se preocupar com escala, você já tem ganho uma graninha pra comprar mais hardware!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">