Seu produto está preparado para a nuvem?
Essa é uma pergunta que não é feita por muitas pessoas, então estou aqui para colocar uma pulga atrás de sua orelha. Leia o post e veja se seu produto está preparado para a nuvem e confira algumas dicas para tornar seu software “escalável”.
O que é a nuvem?
Em computação, computação em nuvem (cloud computing, do inglês) se refere á uma utilização de memória e capacidade de armazenamento e processamento de computadores e servidores interligados pela internet.
E meu produto precisa estar preparado?
Sim! Algo muito bom na nuvem é que você pode “escalar” o uso de seus recursos computacionais. Hoje existe duas maneiras para se fazer a escalabilidade, são elas a escalabilidade vertical, e a horizontal.
A escalabilidade vertical trata-se de elevar os recursos de seu servidor, um exemplo disso é você possuir um servidor com 4 núcleos de processamento e eles não darem conta de uma grande demanda, então se faz necessário fazer um upgrade aumentando os recursos da máquina, mas vai chegar um dia que nem o mais potente dos computadores vai aguentar essa malha de processamento.
Já a escalabilidade horizontal veio para resolver esse tipo de problema. A sua proposta é de escalar mais servidores para dividir o processamento, ou seja, você pode ter quantos servidores for necessário e eles são adicionados e removidos de acordo com a demanda.
Resumindo: Se você possui um e-commerce hoje e ele não gera muito processamento, pode ser que por algum motivo específicos (uma promoção, uma blackfriday) uma grande malha de acessos pode vir a aparecer e se a sua infra-estrutura não for escalável seu serviço vai ficar indisponível.
Como preparo meu produto?
Existem vários fatores e eles estão na área de desenvolvimento do seu produto. O investimento para desenvolver um produto escalável e preparado para a nuvem pode parecer alto, mas o retorno compensa.
Mas vamos falar um pouco mais sobre isso em outros posts, enquanto isso deixo aqui algumas dicas:
- Não guarde os arquivos enviados (upload’s) no seu servidor de aplicação, lembre-se pode haver um servidor hoje, 300 amanhã e 10 depois de amanhã. Essas máquinas servem para processar, não para armazenar! Para isso use servidores de arquivos compartilhados, ou serviços como o Amazon S3.
- Não guarde sessão localmente, a requisição de um usuário autenticado em sua máquina de aplicação 1 pode cair na maquina de aplicação 2 em algum momento. Procure armazenar as sessões no banco de dados ou em uma solução própria para isso.
- Lembre-se o cache pode ser seu inimigo na hora de desenvolver, mas é muito importante para redução de custos e para fornecer maior velocidade para o usuário. Então desenvolva seu produto, projetando um modelo de cache.
- Use soluções de PaaS para seu banco de dados. Você só precisa seguir a instruções do serviço e apontar para os servidores de banco dados.
- Não execute processos pesados em foreground, crie filas para ele e libere as conexões. O máximo que vai acontecer é demorar para a operação ser concluída, porém isso nunca vai deixar alguém que esteja esperando uma operação mais simples, esperando… Um bom exemplo de empresa que faz isso é o facebook, quando você faz o post de um vídeo.