A importância da adoção do Multicloud e como isso é necessário em aplicações críticas.

AWS, Azure e GCP são conhecidos globalmente pela sua confiabilidade quando falamos em computação em nuvem, porém estão suscetíveis a instabilidades raras que, em muitos casos, chegam a interromper uma série de serviços online de empresas de diversos setores.

Um caso recente de queda ocorreu em 07 de dezembro de 2021, às 12h45 BRT, na nuvem da AWS, na região de maior importância localizada na Virgínia do Norte (EUA), normalizando somente às 20hs do mesmo dia. Plataformas como Disney+, Venmo, DoorDash, Spotify, Slack, Delta Air, Toyota, Roku, Kindle, McDonald’s, Netflix, Banco C6, iFood, Canva e muitas outras sofreram perdas expressivas de dinheiro por indisponibilidade.

Apesar de ser um problema regional, muitas empresas ao redor do mundo utilizam esta região devido à gama de produtos ofertados e custo quando comparados a outros datacenters em regiões na América Latina e Ásia, por exemplo. Entretanto, serviços de outras regiões também foram afetados devido à centralização de soluções nos EUA. Amazon DynamoDB (Banco NoSQL) e Amazon EC2 (computação) tiveram suas APIs de monitoramento prejudicadas, inviabilizando uma visão real dos seus serviços. A própria console de gerenciamento da AWS e o support center ficaram indisponíveis.

Pegando um caso mais isolado, em 04 de junho de 2016, tivemos a interrupção total dos Amazon EC2 na região de Sydney, Austrália. Empresas importantes ficaram completamente indisponíveis após um dos datacenters apresentar indisponibilidade devido ao mau tempo. Apesar de muitas destas empresas adotarem uma solução de alta disponibilidade, replicando sua solução em múltiplos datacenters desta região, o impacto foi tamanho que inviabilizou este failover.

E, mesmo com estes dois exemplos emblemáticos, outras empresas conseguem manter sua estrutura no ar adotando uma estratégia de hospedagem em mais de um provedor de nuvem. Vamos entender um pouco mais sobre estes casos.

 

Uma passagem pela linha do tempo de quedas da AWS.

Nos últimos cinco anos, tivemos um total de sete grandes paradas como esta, que são importantes de serem relembradas e reforçam a necessidade da adoção de mais de um provedor:

  1. 07/12/2021: Parada no Networking Control Plane na região do Norte da Virgínia (us-east-1);
  2. 02/09/2021: Parada do serviço AWS Direct Connect em Tóquio (ap-northeast-1);
  3. 25/11/2020: Parada do serviço Kinesis, também no Norte da Virgínia (us-east-1);
  4. 24/10/2019: Parada dos serviços Amazon EC2 e EBS em Tóquio (ap-northeast-1);
  5. 22/11/2018: Parada no serviço de resolução de nomes dos Amazon EC2 em Seul (ap-northeast-2);
  6. 28/02/2017: Interrupção do Amazon S3, afetando diversos serviços como Amazon CloudFront, Amazon EBS, Amazon EC2, EC2 Auto Scaling, Amazon CloudWatch e Personal Health Dashboard, além da própria página de status, que era hospedada em um S3;
  7. 04/06/2016: Parada do serviço do Amazon EC2 e EBS em Sydney (ap-southeast-2).

Isto não é um problema só da AWS. Azure e GCP já tiveram quedas semelhantes e são suscetíveis aos mesmos problemas.

Mas por que isto acontece?

Com a evolução da computação em nuvem, grande parte dos processos nos datacenters são automatizados para garantir uma escalabilidade quase que instantânea para seus usuários, garantindo, assim, a eficiência de uma operação complexa e com muitas amarras para assegurar a resiliência dos serviços. Isto, aliado a uma administração centralizada de muitos clientes em um mesmo datacenter e com uma alta demanda por serviços na nuvem, nos deixa suscetíveis a alguma indisponibilidade de um produto ou serviço.

Abaixo uma lista de possíveis causas de inoperância:

  • Interrupção de energia: indisponibilidade de energia elétrica, dependendo de uma rede nacional de energia ou de usinas, ambas administradas por terceiros, para garantia dos serviços;
  • Segurança cibernética: ataques cibernéticos, como DDoS, podem sobrecarregar momentaneamente o tráfego de entrada, impedindo que usuários reais acessem seus serviços. Apesar da segurança destes grandes provedores ser gigantesca, hackers tendem a explorar brechas e muitos administradores de rede não blindam seus ambientes da forma correta. Por isso, é importante investir em segurança em uma boa companhia para administrar o ambiente em nuvem;
  • Erro humano: um comando incorreto pode derrubar potencialmente todo o serviço de um provider, apesar dos rigorosos protocolos para evitar este tipo de falha e de sistemas que detectam comportamentos anômalos;
  • Problemas de rede: fornecedores de nuvem fazem parceria com provedores de telecomunicação e organizações governamentais para operarem em redes de longa distância. Para evitar este tipo de problema, estes grandes provedores investem massivamente em telecom, equilibrando cargas de trabalho dinamicamente em datacenters distintos;
  • Manutenção: os provedores de nuvem são responsáveis pela operacionalização e disponibilidade da infraestrutura física de TI, o que envolve manutenções programadas e não programadas.

Vale ressaltar que, apesar destes problemas existirem, as big companies possuem uma maior resiliência e garantia de SLA em relação a provedores menores ou ambientes on premise, que possuem normalmente uma menor contingência dos seus serviços.  Mas são dores de cabeça que podem ocorrer.

 

Mas eu já atuo em várias nuvens…

Muitas empresas se intitulam multicloud, pois atuam com diversos provedores de nuvem para aproveitar o que tem de melhor em tecnologia. Estas possuem aplicativos rodando em AWS Lambdas, outros aplicativos e data warehouse em GCP e soluções em Kubernetes no Azure, por exemplo. Mas isso não garante que seu serviço se mantenha disponível, visto que qualquer uma destas bigtechs pode inoperar por alguma razão.

O verdadeiro conceito de multicloud é o uso de um mesmo serviço ou semelhante em mais de um provedor, possibilitando que, em caso de falha grave, você tenha uma segunda grande empresa sustentando seu ambiente. É tornar a aplicação ou serviço facilmente portátil para diversas infraestruturas de nuvem. E são inúmeras as vantagens de adotar este tipo de estratégia, mas podemos destacar 3 grandes pontos:

  • Desempenho: com mais de um provedor, é possível utilizar regiões próximas sem a necessidade de recorrer a um datacenter secundário em uma localização distante. Como exemplo, podemos mencionar o datacenter da AWS São Paulo (sa-east-1) e Azure Sul do Brasil (Brazil South), também localizado nesta cidade. Em outro cenário seria necessário utilizar a contingência nos Estados Unidos;
  • Disponibilidade: conforme relatado anteriormente, as regiões de cada provider são passíveis de falha. Com uma abordagem multicloud, este risco é praticamente zero;
  • Otimização de custos: com mais de um provedor, é possível equilibrar a carga (uso) de recursos em nuvem, favorecendo o provedor mais atrativo. Em caso de necessidade ou problema, é possível balancear este uso para o provedor alternativo, com toda liberdade e de forma automática.

 

Exemplos de tecnologias multicloud

Kubernetes

O Kubernetes é uma solução de código aberto que facilita o gerenciamento em diversas nuvens, não importando o tipo de nuvem em que está hospedado e podendo utilizar as mesmas configurações em qualquer (ou quaisquer) provedor que compõe a arquitetura. E como este recurso define suas configurações como código, você obtém o mesmo nível de automação e eficiência no provisionamento de recursos.

Ansible ou Terraform são ferramentas que não possuem vínculo com um fornecedor de nuvem específico e auxiliam no provisionamento destes clusters independentemente do provedor de nuvem.

Grafana e outras ferramentas de monitoramento/APM estão prontas para monitorar diversos ambientes de nuvem. Sendo adotado o Kubernetes, a ferramenta de monitoramento terá um único apontamento – o próprio Kubernetes. Ele já possui um conjunto rico de métricas que pode ser usado para rastrear a disponibilidade e integridades das cargas de trabalho, independente das nuvens que estejam.

Exemplo:

Serverless Framework

Uma solução adotada na computação em nuvem moderna são as functions, também conhecidas como soluções FaaS. Cada provedor tem sua própria implementação e tende a ser diferente na operacionalização. Todavia, são extremamente vantajosos em relação à computação em nuvem convencional (Virtual Machine) e, muitas vezes, até mesmo ao Kubernetes. Os recursos em nuvem são alocados dinamicamente para execução de microsserviços e por demanda, abstraindo toda a camada de infraestrutura e focando na aplicação em si.

O Serverless Framework também é de código aberto e possui uma interface de nuvem universal para desenvolver soluções de computação “serverless” entre provedores de nuvem. Reduz barreiras para a adoção que já comentamos, como o lock-in, inoperância e custos.

Exemplo:

CI/CD com GitOps

O GitOps é um conjunto de práticas para gerenciar configurações de infraestrutura utilizando o Git, semelhante ao já realizado em códigos de aplicações. Possibilita que a implantação seja automatizada por código, sendo acionado por pull requests para provisionamento e implantação da infraestrutura. Como o repositório contém todo o estado atual do sistema, qualquer mudança fica visível e auditável. Viabiliza, também, realizar compilações, testes e uso de gates para implantação em ambientes, garantindo que esteja funcionando antes de entrar em produção.

Exemplo:

 

Considerações finais

Ser multicloud exige uma mudança de consciência e garante um leque de oportunidades em comparação ao singlecloud: flexibilidade para experimentar novas soluções, capacitação de equipes e adoção de mais de um provedor. Ainda, possibilita, muitas vezes, um maior tempo de resposta em comparação ao uso de uma única nuvem, onde as regiões secundárias muitas vezes ficam localizadas em países diferentes. E, principalmente, a garantia de disponibilidade em caso de uma falha crítica.

Melhor não contar com a sorte e ter um ambiente altamente escalável e dinâmico.

 

Referências

[Multi-Cloud Strategy the Cure for AWS Outage Headaches ~ Offis and RightScale allows businesses to avoid costly cloud outages]

https://www.linkedin.com/pulse/multi-cloud-strategy-cure-aws-outage-headaches-offis-allows-tandon/

[AWS went down – and large parts of the internet went with it]

https://www.techradar.com/news/aws-is-down-and-taken-whole-chunks-of-the-internet-with-it

[Amazon Web Services outage leaves players unable to login to games and streaming services]

https://www.polygon.com/22822402/aws-outage-today-games-offline-disney-plus-lol-league

[Amazon not loading? Can’t hook up on Tinder? The internet has failed you again. Here’s what to do]

https://www.usatoday.com/story/tech/2021/12/07/aws-amazon-outage-what-do/6419140001/

[An Amazon server outage caused problems for Alexa, Ring, Disney Plus, and deliveriesWS went down – and large parts of the internet went with it]

https://www.theverge.com/2021/12/7/22822332/amazon-server-aws-down-disney-plus-ring-outage

[Major outage hits Amazon Web Services, affecting many sites]

https://www.cbsnews.com/news/amazon-web-services-major-outage-many-sites-affected/

[AWS went down – and large parts of the internet went with it]

https://www.cnbc.com/2021/12/07/amazon-web-services-outage-causes-issues-at-disney-netflix-coinbase.html

[Amazon Web Services outage brings some delivery operations to a standstill]

https://www.cnbc.com/2021/12/07/amazon-web-services-outage-causes-issues-at-disney-netflix-coinbase.html

[The Complete History of AWS Outages]

https://awsmaniac.com/aws-outages/

[Multicloud]

https://www.ibm.com/cloud/learn/multicloud

[Using Kubernetes to address multi-cloud challenges]

https://platform9.com/blog/6-ways-kubernetes-simplifies-multi-cloud-management/

[Multicloud solutions with the Serverless Framework]

https://docs.microsoft.com/pt-br/azure/architecture/example-scenario/serverless/serverless-multicloud

[What is GitOps?]

https://www.redhat.com/en/topics/devops/what-is-gitops

[Multi-tenant Kubernetes Platform for Hybrid & Multi-cloud Environments]

https://www.opcito.com/case-studies/multi-tenant-kubernetes-platform-for-hybrid-multi-cloud-environments

[O que é GitOps?]

https://weekly-geekly-es.imtqy.com/articles/pt458878/index.html

[O que é multicloud?]

https://www.redhat.com/pt-br/topics/cloud-computing/what-is-multicloud