@abstractj
github twitter slideshare RSS

Montanhismo digital

09 Aug 2010

Um bom alpinista quando decide subir qualquer montanha, busca o máximo de informação necessária a sobrevivência. Desconhecer terreno, condições climáticas, topografia do lugar e mesmo assim se dispor a enfrentar uma montanha, esconde por trás da teimosia, estupidez.

Software não é muito distante dessa realidade, ser dogmático em relação a uma tecnologia ou solução sem levantar algumas informações antes, pode resultar em um overcapacity homérico. Informações sobre infra-estrutura, capacity, quantidade de requisições simultâneas e perspectiva de crescimento do sistema devem ser levadas em consideração antes de decidir entre alguma tecnologia hype ou algo pré-existente.

Se sua aplicação usa Cassandra, Rescue, roda no Cloud ou é completamente feita em Scala e sai do ar, ninguém vai querer saber qual parafernalha tecnológica você usou, e se a arquitetura é digna de ser exposta no MASP. A principal pergunta será: "Quando o sistema volta ao ar?".

Aumentar o capacity do servidor pode ser uma alternativa para amenizar o caos. Considere antes disso alguns itens antes de pensar em um famigerado upgrade do servidor (estamos longe de uma lista completa aqui):
  • Quantidade de transações por segundo suportadas
  • Perspectiva de crescimento do sistema em horas, dias, meses, anos...
  • Largura de banda disponível para atender as requisições
  • Capacidade de armazenamento do servidor de banco de dados
  • Quantidades de threads ou processos executados
Realizar upgrade de hardware, pode resolver temporariamente, porém, acrescentar mais recursos não vai fazer com que uma aplicação escale melhor, é necessário saber: "O que você quer escalar?", "Como?" e "Porque?". De nada adianta superestimar hardware ou colocar a aplicação no Cloud, é preciso saber como e quais recursos a aplicação irá consumir, simular situações de stress com o objetivo de avaliar o comportamento da aplicação em diferentes situações e identificar possíveis pontos de falha, cogite problemas de performance na aplicação, antes de blasfemar contra o servidor.

Assim como no alpinismo, escalar montanhas sem informação resulta em morte, desenvolver sistemas desconhecendo o comportamento real em situações de alto processamento, fará com que você não saiba o que fazer em situações críticas, adotando sempre soluções de contorno. Conhecer o comportamento de uma aplicação, é mais do que exibir gráficos legais em forma de ppt ao cliente, é questão de sobrevivência.

Vale conferir um dos Techtalks, onde Narayanan Shivakumar fala sobre como o google trata alguns aspectos de escalabilidade por lá.

[googlevideo=http://video.google.com/videoplay?docid=-5699448884004201579]

 


blog comments powered by Disqus
Copyrights © abstractj 2011. All rights reserved.