Tag: WordPress AWS

  • Automação Servidor WordPress na AWS com CloudFormation, Packer e Ansible

    Automação Servidor WordPress na AWS com CloudFormation, Packer e Ansible

    Automação de Servidor WordPress Amazon AWS CloudFormation

    Nesse artigo vamos falar um pouco do nosso projeto open source recém lançado no GitHub com foco em automação de Servidor WordPress.

    Hoje em dia quase tudo o que envolve hospedagem e deploy de aplicações, nós tentamos imaginar formas de automatizar várias tarefas. Imagine você configurar um servidor na mão levando horas, e através de uma automação poder ter o ambiente pronto em minutos. Incrível, não?

    Pensando na melhor forma de configurar um servidor, e até mesmo poder replicar várias vezes em novos projetos sem longas horas técnicas, elaboramos esse modelo básico de automação. Você pode utiliza-lo, customiza-lo, e trabalhar com ele conforme precise.

    Esquema do processo de deploy desde a geração da AMI até o deploy do EC2.

    Automação Infraestrutura (IAC)

    Infraestrutura como Código (IAC), é algo que assim que descobri me apaixonei. Podemos escrever e versionar nossa infraestrutura em código (JSON,YAML), e existe várias tecnologias para isso como:

    • Terraform
    • Ansible
    • CloudFormation

    No nosso modelo de automação, usamos o CloudFormation. Através dele definimos todo o escopo da infraestrutura que desejamos que seja provisionado como: Região, Tipo de Máquina, Tamanho do Disco, Imagem do Servidor, Regras de Segurança e muito mais.

    Na console da AWS podemos fazer o deploy da infraestrutura usando nosso template diretamente na console ou via terminal com o AWS CLI.

    Esquema do processo de deploy desde a geração da AMI até o deploy do EC2.

    Automação Imagem Servidor WordPress

    Como estamos trabalhando com AWS e principalmente usando o CloudFormation para provisionar a nossa infraestrutura. Nós precisamos ter uma AMI como base criada. O servidor irá utilizar uma imagem de sistema operacional personalizada para que inicialize com todos os serviços funcionando.

    Nós podemos utilizar o Packer para automatizar a criação de uma AMI personalizada para que nós utilizemos na AWS. No nosso projeto a AMI irá utilizar o Ubuntu 20:04 e já vai vir com toda a parte de software instalado.

    Automação de Software

    Todos os softwares necessários para que um site WordPress consiga funcionar (Nginx, PHP, MySQL) também foram automatizados. Nós escolhemos o Ansible como ferramenta de automação na instalação e configuração da nossa Stack.

    No momento que nossa AMI estiver sendo criada, o Ansible será acionado para instalar nossa Stack.

    Informações da Automação WordPress AWS

    Todos os requisitos e formas de uso estão no nosso GitHub.

    Caso queira colaborar com alguma atualização, funcionalidade e até mesmo relatar um bug, nos vemos lá.

  • Servidor WordPress Alto Tráfego na AWS 5 mil Conexões

    Servidor WordPress Alto Tráfego na AWS 5 mil Conexões

    Nesse artigo irei falar um pouco sobre servidor de alto tráfego na Amazon AWS para WordPress.

    Tenho trabalhado muito em projetos de clientes que precisam colocar sites WordPress em servidores ou hospedagem de alto tráfego, e na AWS temos todo o amparato para montar um ambiente de alta disponibilidade focado em Alto Tráfego.

    No entanto, existem outros provedores que podemos trabalhar tranquilamente como o Google Cloud, DigitalOcean, Vultr e outros. Claro, com metodologias ou ferramentas distintas.

    No mês 08/2020, implementei três estruturas para hospedagem de alto tráfego, 02 deles na AWS e 1 no GCP. Todos eles com plataformas em WordPress, 02 plataformas de eventos/streaming e 01 grande portal de notícia.

    Nesse artigo irei comentar um pouco sobre esse tipo de ambiente, os famosos servidores para Alto Tráfego, mas com um foco maior na Amazon AWS pois é onde mais trabalho. 

    O que é uma hospedagem de alto tráfego ?

    Hospedagem de Alto Tráfego é um modelo de infraestrutura que foi projetado para suportar um determinado número de acessos simultâneos sem que o site caia. Então, conforme o número de usuários aumentam, novas configurações e até modelos de estruturas são utilizados.

    Mas uma hospedagem de alto tráfego não significa que você tem uma hospedagem de alta disponibilidade. Alta disponibilidade de sites é um outro conceito que falaremos em um outro momento.

    Quem precisa de uma hospedagem de alto tráfego ?

    Se você possui um grande portal de notícias, um e-commerce ou um site com um alto volume de acessos, significa que você precisa sim ter uma hospedagem de alto tráfego.

    • Portais de Notícias
    • Blogs com público formado
    • E-Commerce de médio/grande porte
    • Sites que vão receber tráfego ADS recorrente
    • Sites de Eventos, Streaming e Transmissões ao vivo
    • Aplicações Web
    • Sites adultos
    • Sites com algum sistema ou aplicação paas

    Quando falo em alto tráfego estou me referindo a projetos que tem muitos acessos, milhares, senão centenas de milhares de acessos simultâneos.

    Coleta de Dados: Hospedagem WordPress Alto Tráfego na Amazon AWS

    Estou sempre estudando, aprendendo novas tecnologias e amadurecendo o que já domino, principalmente para projetos WordPress. É muito importante entender seus principais gargalos e detalhes que podem fazer diferença na velocidade e performance do projeto.

    Em nuvem, podemos arquitetar cada detalhe mínimo da infraestrutura, e com isso podemos pensar em um cenário que realmente atenda nossos clientes.

    Não existe uma única solução ou forma de hospedar um site, pois existem inúmeras tecnologias no mercado para os mais diversos gostos. Mas cada projeto é único, e dependendo do projeto tendemos a adotar tecnologias que mais se adequam ao cenário.

    Como dito no início do artigo, realizei algumas implementações na AWS e GCP onde arquitetei ambientes para alto tráfego de sites em WordPress.

    Antes de iniciar a arquitetura e implementação do ambiente, solicitei algumas métricas importantes que foram:

    1. Média de Acessos Simultâneos e Mensal do WordPress

    Ter essas métricas é crucial para a implementação e execução do projeto, pois vai impactar diretamente nos modelos de servidores e otimizações que serão feitas. Sem essas métricas, nossa única alternativa é implementar um cenário e torcer para dar certo ou ter que reajustar em realtime com o projeto em produção.

    Essas métricas são importantes paras as seguintes tarefas:

    • Escolha do tipo de servidor(es)
    • Quantidade de CPU e RAM
    • Escolha do Web Server
    • Otimizações no Nginx ou LiteSpeed Web Server
    • Otimizações no PHP
    • Otimizações e arquitetura do MySQL
    • Escolha do Cache de Objetos
    • Escolha do Load Balancer ( Se aplicável )
    • Cache de página
    • Tuning no Servidor

    2. Tamanho do Banco de Dados

    Não sou especialista em banco de dados, existem profissionais para isso, os famosos DBA’s. No entanto, adquiri conhecimento suficiente para entender os principais gargalos e problemas com banco de dados.

    Sites em WordPress com banco de dados muito grande, dependendo do nível do servidor, após ter uma carga leve de acessos a parte interna do site fica extremamente lenta, mesmo que as paginas para os visitantes estejam rápidas em algumas vezes. E novamente, a primeira etapa acima faz muito sentido nesse momento. 

    Também é nesse momento que decidimos se implementamos um serviço de banco de dados dedicado no Aurora ou RDS com MySQL ou se colocamos em um servidor EC2 de baixo custo. 

    Dicas Para Sites de Alto Tráfego AWS – Cliente com 5 mil conexões Simultâneas

    Vou dar uma pincelada básica na arquitetura que utilizamos para um de nossos clientes. Ele possui um projeto em WordPress para eventos e Streaming, o requisito era aguentar um tráfego simultâneo e constante de 5 mil pessoas online.

    WordPress AWS

    1. Hardware

    Na AWS existem vários tipos de famílias de servidores, desde as mais genéricas até as mais potentes. Nesse case em específico usamos:

    • Servidor EC2 família C5
    • Discos SSD e EFS 
    • Banco de Dados Aurora

    Servidor Fixo EC2 c5.xlarge / 4 CPU / 8 GB RAM

    Servidor Spot AutoScaling EC2 c5.xlarge / 4 CPU / 8 GB RAM

    Banco de Dados Aurora Serverless: Min 1 CPU e 2GB RAM, Max 8CPU e 32GB RAM.

    2. Software e Otimizações – Stack

    Uma vez que os tipos de servidores e tecnologias que envolvem a camada da nuvem foram decididas, agora vamos definir nossa stack com os softwares que iremos executar. Nesses projetos tivemos a oportunidade de colocar em produção em ambientes de alto tráfego tecnologias como:

    • Web Server OpenLiteSpeed com configurações de otimização
    • LSCache para cache de página
    • LSAPI 7.4 com configurações de otimização
    • Tuning no SO com otimizações

    Na camada de nuvem ainda configuramos:

    • Elasticache AWS para cache de objetos
    • CDN CloudFront com integração ao S3 para servir imagens e cache de arquivos estáticos

    Leia Mais:

    3. Banco de Dados Externo RDS

    Para o banco de dados podemos utilizar tanto o RDS com o MySQL/MariaDB como o Aurora para MySQL, ambos os serviços são gerenciados pela AWS e são incríveis. No entanto, quando estamos trabalhando com um ambiente de alto tráfego o Aurora Serverless é o mais indicado.
    Imagine você precisar de mais memória RAM ou poder de processamento(CPU), e ele poder escalar sem downtime, isso é maravilhoso! . 

    4. CDN com CloudFront e S3 Storage

    O CloudFront é um serviço da Amazon AWS para rede e entrega de conteúdo, ou seja, um CDN. Quando um site trabalha com um CDN, ele acaba ganhando duas grandes vantagens: velocidade e economia de recursos do servidor.

    Como o CloudFront está presente em várias regiões do mundo, imagens e arquivos estáticos vão ser carregados a partir do local mais próximo do usuário, gerando uma velocidade maior. Já o servidor não vai precisar na maioria dos casos se preocupar em processar esses arquivos para entregar ao usuário.

    Podemos trabalhar com o CloudFront em conjunto com o S3. O S3 Storage é o serviço que irá guardar os arquivos dentro de baldes de objetos, os famosos buckets. Então configuramos o CloudFront e o S3 com um subdomínio personalizado para o cliente, por exemplo: cdn.exemplo.com.br ,.

    Para automatizar os envios de imagens e arquivos estáticos para o S3, existe um plugin para WordPress que se conecta a esses serviços. Sempre que você subir uma imagem e/ou arquivo no wordpress ele será mandado para o S3 e o CDN irá fazer a entrega.

    Se tiver interesse em adquirir o plugin WP OFFLOAD MEDIA clique no banner abaixo para saber mais detalhes.

    Esse plugin em sua versão paga, faz com que todas as suas imagens, videos e arquivos sejam enviados para o S3 e sincronizados com o CDN. Na sua versão gratuita apenas os novos conteúdos são sincronizados.

    Vídeo: Ambiente Alto Tráfego WordPress na AWS com 10 mil conexões simultâneas

    No vídeo abaixo arquitetei um laboratório na Amazon  AWS para testar um tráfego de 10 mil conexões/acessos simultâneos em um site WordPress. Confira em primeira mão:

    Considerações Finais

    Se você está enfrentando problemas de lentidão e quedas quando tem um determinado número de usuários online em seu site significa que precisa de uma infraestrutura que vá te atender. Nesse artigo tive um foco maior na AWS, mas temos opções em várias outras empresas.

    O custo para manter uma infraestrutura de alto tráfego é totalmente diferente do que um simples serviço de hospedagem. No entanto, se sua empresa depende financeiramente do projeto, o retorno será muito maior! E você verá que vale cada centavo investido.

    Se precisa de um consultor aws ou um parceiro para elaborar uma infraestrutura de alto tráfego, entre em contato conosco.

    Abraços.