Montando uma estratégia de alta disponibilidade para sua aplicação:
Prezados leitores, Em primeiro lugar o intuito deste post é demonstrar de forma conceitual quais os benefícios de criar uma arquitetura para sua aplicação com alta disponibilidade e como você pode migrar sua aplicação tradicional (vertical) para um modelo (horizontal). Com maior resiliência e fácil escalabilidade.
Além disso essa estrutura pode ser desenvolvida em qualquer ambiente, seja na Adentro, on-premises, AWS entre outros. Aqui você pode consultar algumas dicas para ter um melhor aproveitamento na AWS.
Vamos iniciar destacando as principais diferenças entre a arquitetura Vertical e arquitetura horizontal:
Arquitetura Vertical
Vantagens:
- Fácil manutenção;
- Baixa complexidade;
- Não precisa de arquitetura prévia;
Desvantagens:
- Ambiente centralizado, muitos serviços no mesmo servidor;
- Não possui resiliência a falhas nem mesmo de sistema operacional;
- Para escalar, é necessário reboot do servidor, aumento de recursos das VMS;
- Limitações de processamento;
- Updates do S.O da aplicação somente com janela(downtime);
- Sensível a IO ou processamento do ambiente;
Exemplo de arquitetura vertical:
Arquitetura Horizontal
Vantagens:
- Alta disponibilidade para sua aplicação;
- Maior resiliência, visto que o ambiente pode estar distribuído em vários servidores / clusters ou datacenters distintos;
- Processamento escala facilmente, basta adicionar novos servidores para processar a aplicação;
- Possibilita alto poder de crescimento;
- Não precisa de down time para realizar manutenção no S.O dos servidores;
- Maior tolerância a falhas;
- Garante maior estabilidade;
Desvantagens:
- Mais servidores para dar manutenção;
- Ambiente complexo;
Exemplo Arquitetura horizontal:
Obs: é bom colocar que existem N formatos de construir essa arquitetura, o que foi apresentado aqui é um modelo usando ferramentas existentes como o cloudflare, visando reduzir o esforço de implementação.
Saiba qual é o melhor modelo para a sua arquitetura horizontal.
A construção da arquitetura perfeita deve depender da necessidade ou do modelo de negócios que você prática. O mais importante é você dominar e entender o conceito. Por exemplo podemos utilizar ferramentas OpenSource ou então a própria AWS para deixar sua aplicação com maior resiliência.
Por que estruturar sua arquitetura para o modelo horizontal?
Portanto como vimos acima as vantagens em adotar uma arquitetura horizontal para sua aplicação são inúmeras. gostaria de descrever por exemplo modelos práticos de como essa arquitetura de alta disponibilidade pode auxiliar muito no seu dia a dia.
veja alguns exemplos abaixo:
- Black Friday – Imagine que sua empresa necessite escalar uma aplicação em um período promocional seja natal ou black Friday, no modelo tradicional de arquitetura isso é feito aumentando o número de CPUS e memória do servidor. Mas isso não garante caso tivermos um volume maior que o esperado de visita no seu site/portal, esses recursos são finitos e ao consumi-los integralmente você vai ter problemas.
- Eventos – Em um cenário de um evento online em que você não tem certeza do volume de visitantes, como dimensionar os recursos computacionais para atender a este tipo de demanda?
- Elevação de CPU durante o dia – Vamos para o dia a dia da maioria das empresas, onde você é o cara da infraestrutura de TI. Ao longo do dia o sistema começa a derrubar os usuários ou a apresentar erros inesperados. Muitas vezes um relatório ou uma rotina especifica eleva o consumo de recursos do seu servidor e acaba indisponibilizando todo o sistema.
Primeiros Passos para iniciar seu projeto de mudança
Muito bem, agora que já sabemos sobre as principais diferenças, vantagens e desvantagens entre uma arquitetura vertical e horizontal vamos a prática:
Borda e Segurança
Em primeiro lugar nossa abordagem é conceitual, note que estamos utilizando os serviços do cloudFlare. Leia aqui alguns bons motivos que o cloudflare pode auxiliar na segurança da sua aplicação.
Nele você consegue criar um cluster de DNS, com isso podemos endereçar todas as requisições a sua aplicação para IPS públicos distintos.
Mas na prática vamos exemplificar para obtermos um melhorar entendimento:
CloudFlare- Imagine que você tenha um cluster com o dns sistema.adentrocloud.com.br toda vez que seu usuário conectar nessa URL o cloudflare deverá jogar para dois IPS públicos distintos.
Cluster de Firewalls – firewalls distintos, centralizados ou não receberão as requisições do cloudflare. Perceba que anexamos ao desenho um túnel de VPN, para que os administradores possam gerenciar o ambiente de forma segura.
Perceba que nesse momento suas solicitações já estão tendo duas vias ou mais para acessar a mesma aplicação, vias que não dependem uma da outra para funcionar.
Balanceadores de Carga
Esse serviço funciona como um balanceador interno de cargas, ou seja na prática ele recebe requisições em uma porta qualquer e distribuí para vários servidores de aplicação;
Servidores de Aplicação
Portanto você pode ter N servidores de aplicações. Em nosso exemplo estamos usando 4 servidores de aplicação para processar nosso webserver.
Como as informações estáticas e dinâmicas do seu sistema ficam armazenadas e são atualizadas paralelamente? Veremos isso a seguir.
Armazenamento Estático
Se faz necessário um compartilhamento incomum entre todos os servidores de aplicação. No exemplo usamos um cluster NFS. O objetivo com esse repositório é armazenar todo o conteúdo estático do seu webserver.
Banco de Dados
Aqui é fator crítico para o sucesso do projeto, pois cada vendor de banco de dados trabalha melhor em um formato especifico, em nosso exemplo estamos usando um banco postgress que permite a criação de cluster ativo passivo. A definição da estratégia utilizada para a distribuição do banco de dados vai definir o sucesso da completa distribuição em sua aplicação. Existem modelo em que a aplicação é distribuída e o banco é replicado somente. Mas tudo depende de como está estruturado seu sistema.
Conclusão sobre a alta disponibilidade para sua aplicação
Descrevendo o racional do nosso modelo:
Em conclusão até o momento no nosso “sistema.adentrocloud.com.br” estamos recebendo acessos, o cloudflare está tratando as requisições e balanceando entre a camada dos firewalls.
Como resultado nossos firewalls estão transferindo as conexões na porta 80/443 para os dois servidores de BALANCEAMENTO. Mas por sua vez estes redirecionam todas requisições para 4 servidores de aplicação. Enquanto isso nossa aplicação consulta os dados estáticos no NFS e as informações da base de dados são extraídas no cluster Postgres.
Essa postagem não tem objetivo de ser um manual técnico e sim demonstrar que é possível realizar aquele upgrade na sua arquitetura de maneira que possibilite torna-la muito performática, resiliente e escalável.
Como a Adentro pode lhe ajudar?
A ADENTRO possui profissionais qualificados que podem lhe ajudar a arquitetar e implementar topologias escaláveis e alta disponibilidade para sua aplicação, já ajudamos muitas empresas a expandirem suas plataformas sejam elas em nuvem própria ou terceira como AWS. Sinta-se a vontade para entrar em contato conosco.