A escalabilidade é fundamental para grandes projetos em WordPress. Seu site WordPress é escalável? Há muitos exemplos de instalações WordPress de grande escala por aí.

O site WordPress.com, por exemplo, é uma instalação multi-site gigantesca que chega a dezenas de milhões de pageviews por mês. O site é capaz de suportar milhares de usuários simultâneos.

Outros exemplos de sites são o Time, o TechCrunch, e a própria CNN. Não tenha dúvida: é perfeitamente possível construir um site escalável em WordPress que seja potente o suficiente para aguentar qualquer tráfego, desde que você crie o ambiente adequado.

Configurar a sua instalação já existente para ser escalável pode ser algo complexo, mas é um investimento que vale a pena para qualquer dono de site. Nesse post, vamos analisar algumas áreas nas quais você pode focar para garantir a escalabilidade, e oferecer dicas para o setup de um ambiente escalável.

Como assim, “site escalável”?

O que faz um site WordPress ser escalável? Um site escalável tem a habilidade de aumentar sua capacidade para cima (scale up) ou para fora (scale out). Para cima – aumentar a potência do hardware (mais RAM, uma CPU melhor). Para fora – aumentar a capacidade criando nós (máquinas distintas rodando o mesmo site). Fazer isso te dá a flexibilidade para acomodar o crescimento do site.

Basicamente, escalabilidade é a capacidade de ampliar o site sem qualquer tipo de problema. Com o WordPress, você não precisa se preocupar com o software. O núcleo WordPress implementa convenções de arquitetura de software, como a separação de markup (HTML e CSS) e dados (MySQL). Logo abaixo, vamos explorar alguns caminhos para garantir escalabilidade máxima.

Ambiente de Desenvolvimento

Uma das tarefas mais difíceis no processo de tornar escalável um site WordPress é a instalação de um ambiente de desenvolvimento. Um bom ambiente de desenvolvimento acompanhará o ambiente de produção sem problema algum. Se você tem um site pequeno, você pode até conseguir fazer o desenvolvimento simultâneo, mas isso é totalmente inadequado para o site escalável.

Você precisará de algum tipo de controle de versão para garantir que os desenvolvedores não misturem as bolas. Softwares de controle de versão acompanham todas as mudanças feitas aos arquivos para serem analisadas depois. Além disso, é uma maneira muito mais eficiente e profissional de desenvolver o projeto como um todo e ter a certeza de que o seu site WordPress é escalável.

Há muitas soluções elegantes disponíveis graças ao trabalho duro da comunidade código-aberto. Git (GitHub) é um software de controle de versão distribuída que permite que vários desenvolvedores trabalhem em repositórios separados. É confiável, rápido e capaz de aguentar projetos imensos. Afinal, o Git foi criado pelo Linus Torvalds (criador do Linux) para programar de maneira mais eficiente no Linux.

Você pode construir um ambiente de desenvolvimento fantástico com o VVV (Varying Vagrant Vagrants). Este software de código aberto gratuito é ideal para a criação de ambientes de desenvolvimento distribuídos com WordPress. Confira o guia do site Elegant Themes com passos para esse setup. o WordPress.org também tem um tutorial ótimo para a instalação do VVV.

Escalabilidade Horizontal

O scaling “para fora”, ou escalabilidade horizontal, é um dos mais importantes conceitos na criação de um ambiente escalável. Isso permite rodar o site em várias máquinas distintas (servidores). Alguns o chamam de “arquitetura elástica” – porque a quantia de recursos disponibilizada pelo servidor pode aumentar ou diminuir baseada na sua necessidade. Isso é feito através de métodos de computação na nuvem como clustering, balanceamento de carga e virtualização. Na ciência da computação, o clustering é o processo de organizar objetos similares em grupos.

Portanto, um só cluster conterá os arquivos, o banco de dados e o software do site. O clustering garante que seu website tenha uma ótima taxa de disponibilidade ao eliminar os problemas relacionados a hardware e software.

Como isso tudo funciona?

Se o seu site ganha um pico no tráfego, um balanceador de carga determinará como alocar mais recursos para aguentar o pico fazendo scaling “para fora” – isso acontece de forma dinâmica, e seus visitantes não percebem nada. A ideia é que você tenha várias cópias do seu site distribuídas entre várias máquinas, e cada uma sabe sobre as outras. Então, sempre haverá um computador no cluster em espera caso haja um aumento no tráfego ou uma falha em um dos outros componentes.

Serviços de hospedagem em nuvem como o Amazon Web Services (AWS) ou o RackSpace são dois provedores de cloud hosting que permitem escalabilidade horizontal.

Caching

Um cache é um espaço de armazenamento temporário para a memória. O cache pode te ajudar a entregar os dados de maneira mais rápida, e evitar os problemas oriundos da concorrência no acesso. Todo CMS precisa de algum tipo de caching, assim como o WordPress. A má notícia é que o cache pode chegar a ser absurdamente complexo.

A boa notícia é que a comunidade de software de código aberto criou várias soluções para esse problema. Há um punhado de ferramentas para te ajudar, como o WP Super Cache e o Batcache.

Proxy Reverso (Cache de Página)

O proxy reverso é uma maneira eficiente de carregar páginas dinâmicas. O proxy reverso é um serviço que atua como intermediário entre o WordPress e o navegador. Isso pode ajudar a reduzir a carga no seu servidor principal e diminuir o tempo de carregamento do cliente. O problema é que servidores de PHP precisam de mais recursos.

Eles executam um alto número de tarefas complexas, que podem sobrecarregar seu servidor. Você pode aliviar a carga no servidor instalando um proxy reverso. Por exemplo, suponhamos que você recebe um visitante na home page do seu site. É a primeira visita do dia. A essa altura, ainda não há versão algum do site no cache.

  1. O usuário digita o URL na barra de endereços, requisitando uma página do servidor.
  2. O pedido passa pelo proxy, que ainda não tem uma versão da página no cache. E dali, pro WordPress.
  3. O WordPress gera a homepage, e devolve-a para o proxy reverso.
  4. O proxy então devolve a resposta ao navegador, e salva uma cópia da página em cache.
  5. Enquanto o cache estiver ativo, qualquer usuário que requisitar a página vai receber a que está em cache, eliminando a necessidade de acessar o servidor principal.

Caching de Objetos

O conceito por trás do cache de objetos é parecido com o de páginas, porém aqui é aplicado a objetos individuais. Muitos problemas com acessos simultâneos podem aparecer quando há usuários demais logados no seu site. O caching de objetos salva um objeto de aplicativo (como vídeos, imagens e documentos) em uma base de dados.

Colocando estes objetos de aplicativo em um cache, você depende muito menos do banco de dados original, liberando bastante memória.
Há várias opções para ocaching. Redes de entrega de conteúdo como o Cloudflare, o EdgeCast e o KeyCDN podem agir como proxies reversos muito efetivamente.

O Varnish e o WP Super Cache são duas opções bem populares para implementar um cache no seu WordPress.

Qualidade de Busca

O banco de dados em MySQL pode acabar sendo o maior gargalo do seu site. Buscas ineficientes podem confundir a aplicação PHP do seu servidor, o que pode congelar toda a atividade – mesmo se você tiver uma arquitetura elástica.

Assim como dito antes, os servidores de PHP podem deixar o servidor muito lento. Se o caching não faz o trabalho, sempre há maneiras de melhorar a sua qualidade de busca identificando as buscas lentas.
Buscas lentas são oriundas de problemas com o banco de dados SQL, a rede que hospeda o seu site, ou o servidor. Há uma variedade de razões para que isso aconteça.

Sem dúvida, não existe algo que  seja bom para todos. O primeiro passo para melhorar a performance nas buscas é identificar buscas lentas. Quando você identificar o problema, você pode começar a agir.

Às vezes a resposta pode ser simples, como adquirir mais largura de banda, ou complicada, como mudanças no código. Confira o plugin WordPress Query Monitor se quiser uma ferramenta para monitorar as buscas no seu site escalável.

Melhorando as Buscas

Se você tem um volume imenso de posts, como por volta de milhões, precisa prestar atenção na forma que seus bancos de dados estão instalados. A maioria dos sites de grande volume possuem um índice de busca otimizado: um motor de busca customizado adicionado ao WordPress.

O motor de busca do WordPress não funciona tão bem se você tiver um número grande de posts no seu site. Ele também deixa a desejar em termos de velocidade.

Uma solução comum para este problema é a criação de um índice de pesquisa dedicado. Isso coloca essas buscas longe do banco de dados, dando aos usuários uma experiência melhor, assim como melhorando a performance do seu banco de dados. Motores de busca populares para sites WordPress de larga escalas incluem o ElasticSearch e o ApacheSolr.

Para Finalizar

Começar na escala correta é importante também. Comece com o simples, e otimize depois. Citando Donald Knuth, “otimização prematura é a raiz de todo o mal”.

Acomode-se para o crescimento, mas não tente instalar um site de ecommerce gigantesco em uma base humilde, ou vice-versa. Talvez você nem precise de escalabilidade se você estiver criando algo simples como uma página para um evento. Tipicamente, a arquitetura elástica é o padrão para sites de ecommerce. Enquanto isso tudo pode até parecer complexo, não é preciso que você entenda 100%.

Tendo uma boa ideia dos essenciais, você é totalmente capaz de construir um ambiente robusto para um site de larga escala. Tudo o que é preciso é encontrar o serviço de nuvem adequado para você, e  contratar uma CDN ideal.

Este artigo foi originalmente escrito pela ElegantThemes, site especializado em web design, e traduzido por nós para o português. Conheça e cultive, web designer, as inúmeras vantagens em transformar seu site em um site escalável.

Fonte: Elegant Themes