Não importa qual provedor de nuvem você usa se a carga de trabalho for projetada para ser portátil. Ao projetar com a portabilidade e a padronização em mente, comece identificando os pontos de bloqueio do fornecedor ou onde há a possibilidade de um fornecedor de nuvem impedir que você mude para outro fornecedor.
Por exemplo, projetar em torno de coisas como o Kubernetes nem sempre é suficiente. Pense em outros sistemas com os quais o cluster do Kubernetes pode interagir ou com os quais precisa interagir. Avalie esses requisitos e projete sua arquitetura usando soluções de código aberto e primitivos de infraestrutura de nuvem essenciais, que você pode encontrar em qualquer provedor de nuvem.
Concentre-se em APIs padrão para garantir a compatibilidade entre o aplicativo e outros sistemas. Comece com APIs RESTful para componentes que usam comunicação síncrona (solicitação/resposta). Sua popularidade se deve ao uso do HTTP, o protocolo mais comum e amplamente suportado. Embora outros protocolos tenham surgido e continuem surgindo para coisas como streaming de vídeo, os que se mantiveram são baseados em HTTP.
Projetos modulares com microsserviços ou contêineres dividem o aplicativo em componentes menores e mais gerenciáveis, facilitando a adição ou remoção de funcionalidades conforme necessário e tornando o aplicativo mais flexível e dimensionável. Uma abordagem nativa da nuvem se destaca por oferecer um processo eficiente de atualização e substituição desses componentes sem afetar toda a carga de trabalho.
Uma vez que você tenha uma arquitetura portátil, como evitar que ela seja tão sobrecarregada do ponto de vista do gerenciamento? A automação simplifica e agiliza a implementação e o gerenciamento do aplicativo. Use pipelines de integração contínua/implantação contínua (CI/CD) e ferramentas de infraestrutura como código (IaC).
Uma abordagem declarativa da implementação permite que você codifique cada parte da sua carga de trabalho: o aplicativo, o software, as configurações do sistema e tudo em que ele é executado nos ambientes de desenvolvimento, preparação e produção. Como resultado, você pode rapidamente fazer o spin up em uma nova nuvem, fazer failover ou migrar para outro provedor de nuvem. Com um ambiente totalmente codificado que também é versionado, você tem tudo documentado em relação a como exatamente tudo é configurado e tem um histórico transparente de todas as alterações e de todos que fizeram alterações nele.
E, é claro, devemos nos lembrar da segurança. Seguir esse caminho para a portabilidade permite que você desenvolva uma abordagem mais padrão para a segurança, eliminando uma mentalidade perigosa de "configure e esqueça". Já vi isso muitas vezes. Você implementa uma carga de trabalho em uma nuvem privada virtual (VPC) e supõe que ela seja segura.
Dentro da mesma abordagem "Tudo como código", implementamos uma arquitetura portátil e padronizada; os aspectos de sua postura de segurança também podem ser padronizados e codificados. Além das práticas de DevSecOps que automatizam loops de feedback, testes de vulnerabilidade e assim por diante, pense nas políticas de controle de acesso e nos modelos de configuração reforçados - eles podem ser independentes da plataforma subjacente e, portanto, podem proteger seus recursos com consistência em todos os ambientes. Essa abordagem de segurança pode ser imensamente poderosa, especialmente quando você pode pegar esse aplicativo e colocá-lo em qualquer provedor de nuvem. A capacidade de pegar sua carga de trabalho e movê-la é uma estratégia defensiva sólida para a recuperação de desastres.
Benefícios de uma arquitetura portátil
Uma arquitetura de nuvem portátil oferece flexibilidade, otimização de custos, resiliência, escalabilidade e práticas de implantação aprimoradas. Ela permite que você escolha as melhores soluções de nuvem para suas necessidades, evite a dependência de fornecedores e se adapte rapidamente aos requisitos ou às condições de mercado em constante evolução. Você também pode:
- Aumentar a disponibilidade: Uma arquitetura portátil garante que os aplicativos possam ser facilmente implantados em várias plataformas de nuvem, reduzindo o risco de tempo de inatividade devido a problemas específicos da plataforma.
- Aumente a agilidade: Uma arquitetura nativa da nuvem permite que os desenvolvedores iterem e implantem rapidamente novos recursos e funcionalidades, reduzindo o tempo de colocação no mercado e melhorando a competitividade.
- Melhorar a segurança: Uma arquitetura portátil permite que os aplicativos e os componentes da infraestrutura sejam protegidos de forma mais consistente, com recursos de segurança como criptografia e gerenciamento de identidade integrados à arquitetura, em vez de depender dos recursos da plataforma.
- Aumentar a resiliência: Uma arquitetura portátil garante que os aplicativos possam sobreviver a falhas de hardware e software sem interrupção ou perda de dados.
- Gerenciamento mais fácil: Uma arquitetura portátil permite que os aplicativos sejam gerenciados com mais eficiência, com ferramentas de monitoramento, automação e orquestração que funcionam em várias plataformas de nuvem.
- Aumentar a inovação: Uma arquitetura portátil permite que as organizações usem tecnologias novas e emergentes, como IA e aprendizado de máquina, para criar novos aplicativos e serviços inovadores.
Comentários