Tipos de arquiteturas: Chega uma hora que uma simples instância não consegue mais suportar o nível de acessos da sua aplicação. Para isso existe o DialCloud+, ele permite que você construa uma arquitetura mais complexa e que consiga lidar com toda a demanda de trafego da sua aplicação. Neste artigo vou apresentar algumas das mais comuns e mostrar os pôs e contras dela.
Tópicos
Uma instância para tudo
É o mais comum atualmente, banco de dados e aplicação rodando no mesmo ambiente. É muito usado em aplicações simples, e é rápido para ser configurado.
Pros:
- Não demanda uma configuração avançada;
Contras:
- Não é possível escalar e não possui uma boa performance, já que tudo roda no mesmo servidor;
Banco de dados dedicado
Uma instância ainda continua servindo as requisições web, porem agora possuí uma instância totalmente dedicada ao banco de dados em uma rede interna. É utilizado em aplicações que demandam mais processamento. O banco de dados para de disputar recursos com o serviço web (normalmente Apache e PHP).
Pros:
- É possível usar uma instância com recursos diferenciados, otimizando uma para o banco de dados e outra para a aplicação.
- Dá mais segurança aos dados, já que o banco de dados não fica disponível para acesso via internet.
Contras:
- É mais complexo do que o primeiro caso
- Podem acorrer problemas de performance devido a problemas de rede (entre o banco de dados e a instância para a aplicação)
Camada de cache na frente
É adicionado uma instância de cache na frente da instância de aplicação, assim o conteúdo mais visitado vai ser acessado pela instância de cache, e não vai exigir processamento da instância da aplicação dando espaço para outras requisições. É muito utilizado em blogs como o WordPress que ganham uma performance significante utilizando o cache.
Pros:
- Melhora a performance reduzindo a carga de uso da instância da aplicação;
- Melhora o tempo de resposta da aplicação;
- Podem ajudar a proteger contra alguns ataques DDoS;
Contras:
- Demanda bastante conhecimento, já que é necessário configurar bem o cache para que ele possa ser ter um beneficio real;
- Se mal configurado pode reduzir a performance;
Usando load balancer
É adicionada uma instância dedicada à balancear a carga entre os servidores, se uma instância falhar, o load balancer tem o poder de redirecionar a demanda para outra instâncias e manter a sua aplicação online. Todos os planos DialCloud+ possuem um load balancer dedicado incluso.
Pros:
- Possui suporte para oferecer escalonamento horizontal adicionado mais servidores;
- Pode proteger contra ataques DDoS já que o load balancer é totalmente dedicado a redirecionar o trafego;
Contras:
- Se for mal configurado ou não possuir recursos suficientes pode causar perda de performance;
- Possui uma configuração que demanda mais complexidade, já que tarefas simples como adicionar um certificado se tornam mais complicadas;
Cluster de banco de dados
É criado um grupo de instâncias dedicado ao banco de dados, geralmente possuem configuração master-master, onde todos os bancos de dados podem ler e escrever os dados. Os bancos de dados se mantêm em sincronismos e um balanceador de carga é colocada em frente à eles, para que possam dividir com eficiência a quantidade de requisições. Geralmente utilizados em aplicações que precisam manter uma maior disponibilidade.
Pros:
- Melhora a performance de escrita no banco de dados, já que elas podem ser espalhadas em infinitos bancos de dados;
- Pode ser ainda mais otimizado, disponibilizando bancos somente para leitura e outros para escrita;
Contras:
- A aplicação deve ser inteligente para saber balancear a carga entre as instâncias;
- Se a sincronização de dados for assíncrona, é possível que os dados estejam fora de sincronia por questões de segundos;
- Se o banco de dados master (central) falhar, é preciso arrumar-lo para que o cluster volte a funcionar;