Escalando PHP e MySQL: preparando uma startup para crescer

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

scaling

PHP e MySQL são excelentes alternativas para startups que planejam escalar sua infraestrutura desde a concepção do negócio.

Negócios online começam como um conceito na mente de um empresário e, geralmente, de início são implementados em um único servidor ou em um pequeno cluster. E se você for analisar, verá que realmente não faz sentido investir em uma estrutura grande se você não possui sequer um usuário. Até gigantes, como o Google, começaram assim. O hardware que eles possuíam no começo não impressionaria ninguém.

Primeiro "data center" do Google

Primeiro “data center” do Google

Nós todos sabemos o que aconteceu ao Google: em menos de cinco anos eles dominaram o mercado de buscadores e passaram a ocupar enormes data centers com design feito sob medida.

Algo semelhante, embora em uma escala menor, é o sonho da maioria dos empreendedores, mas para chegar lá é necessário pensar em escalabilidade dos servidores originais até algo que possa suportar uma carga muito mais pesada.

O plano de escalonamento deve ser desenvolvido muito antes de qualquer necessidade de crescer, porque se não houver plano, quando chegar a hora, será muito mais difícil e dispendioso – leia-se caro – do que o necessário.

Escalabilidade a partir do design

Uma maneira de escalar é ir aumentando progressivamente a capacidade do servidor com mais hardware, ou transferir gradualmente sua arquitetura para máquinas mais poderosas, mas essa abordagem possui limitações óbvias e pode demandar gastos desnecessários. Quando falamos em escalabilidade, falamos em escalabilidade horizontal, que é o processo de escalada com servidores em cluster e balanceador de carga.

PHP e MySQL comportam-se bem na construção de aplicações que podem escalar suavemente. Contudo, existem três tópicos importantes quando planejamos uma estrutura uma infraestrutura escalável para uma startup: pilha de software, cache e cluster.

Pilha de software

Escolher bem a maneira como vai empilhar seu software é crucial para uma escalada suave. Por exemplo, se você basear sua aplicação em PHP e MySQL mas não possuir um painel de controle que lhe permita adicionar mais nodes no seu MySQL Server e balancear a carga entre eles, seu negócio terá uma dificuldade considerável em crescer sem substituir pontos-chave da pilha.

Cache

O cache pode ser implementado em diversos pontos em um site ou na infraestrutura da aplicação. É importante para para melhorar o desempenho do hardware existente. Usuários de PHP e MySQL devem investigar o seguinte:

  • Memcached —É um sistema distribuído de cacheamento de objetos. Ele armazena objetos de um servidor de back-end, como um MySQL, que podem ser distribuídos através de múltiplos servidores, permitindo um grande aumento de performance quanto às consultas ao banco por dados acessados frequentemente.
  • APC (Alternative PHP Cache) — Sistema de opcode cache, que aumenta a performance de aplicações através do cacheamento dos códigos de operação de funções PHP executadas frequentemente.
  • XCache — Também é um opcode cacher, criado por um dos desenvolvedores do Lighttpd.
  • Zend Opcache — É um componente do Zend Server, que serve para acelerar a execução do PHP através do cache de opcode e otimizações em geral. Ele armazena o bytecode dos scripts pré-compilados em uma memória compartilhada e elimina a leitura de disco e compilação para acessos futuros.

Cluster

No coração de qualquer estratégia de escalada, mora a habilidade de adicionar rapidamente novos nodes de baixo custo e efetuar o balanceamento de carga entre eles. O MySQL pode ser facilmente configurado para usar um número determinado de servidores como slaves para a leitura e um master para a escrita, então se você planejar uma estratégia de escalonamento horizontal, PHP + MySQL é uma excelente combinação.

E lembre-se: planejar nos primeiros estágios de uma startup é algo essencial para assegurar a performance e disponibilidade permaneçam constantes durante a fase de crescimento, sem gerar gastos desnecessários.

Texto adaptado do original: http://www.thewhir.com/blog/php-and-mysql-scaling-preparing-a-startup-for-growth
Imagem: http://www.bitrebels.com/technology/whats-the-storage-capacity-at-google/