A digitalização das empresas abre uma série de oportunidades, mas também impõe alguns desafios. Para ultrapassá-los, as organizações estão a recorrer cada vez mais a estratégias multi-cloud. Esta abordagem envolve a utilização de vários serviços de armazenamento e cloud computing numa única arquitetura heterogénea.
Este artigo explora os benefícios de implementações multi-cloud, demonstrando ainda a implementação de uma aplicação multi-cloud de dois servidores web Apache: um no Amazon Web Services (AWS) e outro no Microsoft Azure. Neste caso, o balanceador de carga é o Google Cloud Platform (GCP), através de um serviço HAProxy.
Conceitos a ter em conta
Antes de avançarmos, eis alguns conceitos relevantes que devemos compreender:
-
Ambiente multi-cloud: é uma solução de cloud que integra mais do que um serviço de cloud de vários fornecedores. Pode incluir clouds públicas, privadas e híbridas de forma a obter um desempenho otimizado;
-
Modelos de serviços de cloud: existem vários modelos de serviços de cloud, como Infraestrutura como Serviço (IaaS: Infrastructure-as-a-Service), Plataforma como Serviço (PaaS: Platform-as-a-Service) e Software como Serviço (SaaS: Software-as-a-Service), que são a base da arquitetura multi-cloud;
-
Infraestrutura como Serviço: a IaaS fornece recursos informáticos através da Internet. Permite às empresas alugar servidores, espaço de armazenamento e hardware de rede;
-
Plataforma como Serviço: a PaaS fornece aos developers um framework que estes podem utilizar para criar aplicações personalizadas. Em vez de tratarem da infraestrutura subjacente (servidores, armazenamento e redes), os developers podem concentrar-se na implementação e gestão das aplicações;
-
Software como Serviço: o SaaS fornece aplicações de software através da Internet, num modelo de subscrição. Os fornecedores de SaaS gerem o hardware, o middleware, o software da aplicação e os dados da aplicação;
-
Acordos de Nível de Serviço (SLAs – Service Level Agreements): são acordos contratuais que especificam as normas de desempenho esperadas dos fornecedores de serviços de cloud e são essenciais em configurações multi-cloud para garantir a fiabilidade e a responsabilidade do serviço.
Benefícios de implementações multi-cloud
A implementação de uma estratégia multi-cloud pode trazer uma série de vantagens, nomeadamente:
-
Redução de riscos
Ao distribuir os seus ativos por várias clouds, as organizações podem evitar a dependência de um só fornecedor e reduzir o risco de interrupções do serviço devido a um único ponto de falha.
-
Conformidade e soberania dos dados
As estratégias multi-cloud facilitam a conformidade com vários requisitos regulamentares, permitindo que os dados residam em localizações geográficas específicas, conforme exigido por lei.
-
Poupança de custos
As empresas podem otimizar custos ao selecionarem as soluções de cloud mais rentáveis para diferentes tarefas com base em preçários e métricas de desempenho.
-
Melhor desempenho e escalabilidade
Os ambientes multi-cloud permitem que as organizações implementem serviços mais próximos dos utilizadores finais, reduzindo assim a latência e melhorando o desempenho. A escalabilidade é melhorada, uma vez que os recursos de várias clouds podem ser aproveitados dinamicamente à medida que a procura muda.
Considerações estratégicas para implementação
Uma estratégia multi-cloud não pode ser implementada com sucesso sem estes pontos-chave:
-
Avaliação e planeamento da carga de trabalho
As cargas de trabalho que devem ser movidas para cada cloud devem ser determinadas com base em requisitos específicos, como segurança, desempenho e custos.
-
Integração de clouds
Existem desafios técnicos e de gestão na integração de várias clouds, o que implica a compatibilidade entre diferentes plataformas e API.
-
Segurança e governação
As políticas de segurança e governação devem ser implementadas de forma coerente em todos os serviços de cloud para evitar violações de dados e acessos não autorizados.
-
Gestão de competências e fornecedores
São necessários profissionais qualificados que compreendam várias plataformas e possam gerir relações com vários fornecedores de serviços de cloud computing.
Demonstração de uma implementação multi-cloud através do Terraform
Esta secção descreve os passos para configurar uma implementação multi-cloud através do Terraform, uma ferramenta de software de Infraestrutura como Código (IaC – Infrastructure as Code). Ao automatizar a implementação de vários servidores em diferentes fornecedores de cloud, conseguimos demonstrar a robustez de uma estratégia multi-cloud.
1. Descrição geral
Fornecedores de cloud: Amazon Web Services, Google Cloud Platform e Microsoft Azure.
Recursos:
- Instância do AWS EC2 a executar um servidor web Apache;
- VM do Azure a executar outro servidor web Apache;
- VM do GCP a executar o HAProxy para balanceamento de carga entre os dois servidores Apache.
2. Resumo da implementação
Passo 1: Configuração do ambiente
- Instalar e configurar o Terraform numa máquina local;
- Configurar contas de fornecedor de cloud e adquirir as chaves e permissões de API necessárias.
Passo 2: Codificação da Infraestrutura como Código
- Escrever scripts do Terraform para abastecer as máquinas virtuais e instalar o software necessário (Apache, HAProxy);
- Configurar definições de rede, incluindo grupos de segurança, endereços IP e regras de encaminhamento para garantir a conetividade e a segurança.
Passo 3: Implementação
- Iniciar a configuração do Terraform e executar o Terraform Apply para iniciar o processo de implementação.
- Validar a configuração, acedendo aos servidores web através do IP HAProxy, garantindo que o tráfego é corretamente encaminhado e equilibrado em termos de carga.
Passo 4: Monitorização e gestão
- Configurar ferramentas de monitorização para acompanhar o desempenho e os registos, para garantir que o sistema funciona sem problemas.
- Planear atualizações regulares e patches de segurança em todas as plataformas.
3. Implementação do diagrama
4. Implementação da Prova de Conceito (PoC) + Repositório GitHub
Abaixo está o código do AWS Terraform para a configuração do EC2 para hospedar um serviço Apache.
Agora, aqui está o código do Azure Terraform para a configuração da VM para hospedar um Serviço Apache.
Na imagem abaixo, podemos ver os detalhes da VM do Portal do Azure, em perfeito funcionamento:
O serviço Apache no Azure está ativo e a funcionar do lado do browser:
Os detalhes do AWS EC2 também estão a funcionar:
O serviço Apache no AWS também está a funcionar do lado do browser:
Abaixo, podemos ver os detalhes da VM do GCP:
A VM do GCP com o serviço HAproxy também está instalada e a funcionar:
Abaixo está o serviço Apache do Azure em execução:
Também o serviço AWS Apache está a funcionar:
Agora, vemos um pedido do browser para o balanceador de carga HAProxy, com o AWS Apache a devolver o código de estado “200 OK”:
E agora um pedido do browser para o balanceador de carga HAProxy, com o Azure Apache a devolver o código de estado “200 OK”:
Eis as estatísticas do serviço HAProxy. Os pedidos são equilibrados com base no algoritmo Round-Robin:
Estamos agora a parar o serviço Apache da VM do Azure:
Aqui está um pedido ao balanceador de carga, devolvendo apenas o serviço AWS Apache sem tempo de inatividade:
Paramos agora o serviço Apache do AWS EC2:
Eis agora um pedido para o balanceador de carga, retornando “503 Service Unavailable”, porque ambos os serviços web estão em baixo:
Repositório GitHub: https://github.com/danielitogomez/terraform/tree/master/multicloud-web-servers-poc
Outras considerações para implementações multi-cloud
Agora que vimos uma demonstração prática de uma implementação multi-cloud, aqui ficam mais algumas coisas para ter em mente.
Configuração e escalabilidade avançadas
É crucial abordar várias configurações avançadas e opções de escalabilidade que melhoram significativamente a funcionalidade das implementações multi-cloud:
-
Soluções de DNS
A implementação de soluções de DNS (Domain Name System) é vital para a gestão de endereços IP dinâmicos e para proporcionar experiências de utilizador sem falhas. As ferramentas de gestão de DNS podem ser utilizadas para direcionar o tráfego de forma inteligente entre diferentes serviços na cloud, melhorando a disponibilidade e o equilíbrio de carga.
-
Gestão da configuração
Ferramentas como Ansible, Chef ou Puppet podem automatizar a configuração de novos servidores e o dimensionamento dos existentes. Esta automatização garante ambientes consistentes e reduz a probabilidade de erro humano durante as configurações manuais.
-
Melhorias de segurança
Dado que os IP públicos expõem os recursos a potenciais ameaças, a integração de Firewalls de Aplicações Web (WAF) protege contra ameaças web comuns. Além disso, a utilização de configurações avançadas de segurança de rede, como Virtual Private Clouds (VPC) e grupos de segurança, garante que apenas o tráfego autorizado acede a estes recursos.
-
Distribuição geográfica
A implementação de máquinas virtuais em diversas regiões (por exemplo, uma nos EUA e outra na União Europeia) melhora o desempenho e a conformidade com as leis de dados locais. Esta abordagem também reduz os riscos associados a perturbações regionais ou fatores geopolíticos.
-
Redes de Distribuição de Conteúdo (CDN)
Pode ser implementada uma CDN (Content Delivery Network) para armazenar conteúdos em cache em locais mais próximos dos utilizadores, reduzindo drasticamente a latência e melhorando a experiência do utilizador para aplicações distribuídas globalmente.
Desenvolvimentos futuros
A PoC descrita neste artigo centra-se principalmente na demonstração das capacidades e benefícios de uma abordagem multi-cloud. No entanto, também destaca a necessidade de várias melhorias para otimizar a arquitetura:
-
Escalabilidade automatizada
A integração de estratégias de escalonamento mais sofisticadas, como as fornecidas pelo Kubernetes ou por outras plataformas de orquestração, pode facilitar o escalonamento automático de serviços web com base nas exigências de tráfego.
-
Implementação híbrida
A combinação de serviços baseados na cloud com implementações locais pode satisfazer as organizações que necessitam de um controlo mais rigoroso sobre determinados dados ou aplicações, ao mesmo tempo que usufruem da escalabilidade das soluções na cloud.
-
Resiliência em várias regiões
O estabelecimento de serviços em várias regiões geográficas pode ser complementado pela implementação de mecanismos de failover entre regiões para fornecer alta disponibilidade e capacidade de recuperação de desastres.
-
Monitorização e análise melhoradas
As soluções avançadas de monitorização podem fornecer informações mais aprofundadas sobre o desempenho das aplicações e as interações dos utilizadores, permitindo uma gestão proativa e a otimização dos recursos.
Conclusão
A implementação de uma estratégia multi-cloud tira eficazmente partido dos pontos fortes únicos de vários fornecedores de cloud, melhorando a resiliência operacional, a escalabilidade e a conformidade. As considerações descritas acima destacam a profundidade do planeamento e a sofisticação que podem otimizar estas implementações.
As organizações devem avaliar cuidadosamente as suas necessidades específicas e integrar tecnologias e práticas adequadas para maximizar os benefícios de uma abordagem multi-cloud. Este exemplo prático oferece um modelo abrangente para obter maior disponibilidade e desempenho através de uma abordagem diversificada da cloud. Esta demonstração não é apenas um testemunho do potencial dos ambientes multi-cloud, mas também um guia para evoluir estas configurações para arquiteturas altamente resilientes, eficientes e escaláveis.