O que é arquitetura em nuvem?
A computação em nuvem cresceu rapidamente nas últimas duas décadas e continua a se expandir a uma taxa impressionante. O que começou com ofertas básicas de software como serviço (SaaS) e infraestrutura como serviço (IaaS) evoluiu para um vasto ecossistema de soluções nativas de nuvem para tudo, desde servidores até clusters do Kubernetes.
Neste artigo, forneceremos um curso intensivo sobre a arquitetura em nuvem (também conhecida como arquitetura de computação em nuvem), incluindo os componentes que compõem a arquitetura em nuvem, diferentes modelos de computação em nuvem, os benefícios da nuvem e como você pode tomar uma decisão informada sobre como migrar um app local para a nuvem.
O que é arquitetura em nuvem?
Então, o que é arquitetura em nuvem? E o que é arquitetura de computação em nuvem? A arquitetura em nuvem e a arquitetura de computação em nuvem são iguais. Ambos os termos se referem ao "modelo" que define o projeto dos componentes de infraestrutura de um ambiente de computação em nuvem.
Há várias maneiras diferentes de conceituar a arquitetura em nuvem. Por exemplo, do ponto de vista de um provedor de serviços de nuvem, a arquitetura em nuvem consiste em:
- Uma camada de hardware que inclui servidores bare-metal, equipamentos de rede e dispositivos de armazenamento
- Uma camada de virtualização que inclui hipervisores e componentes de SDN (rede definida por software) para virtualizar recursos físicos
- Uma camada de serviços que inclui os recursos de nuvem que o provedor oferece aos usuários
Na mente de usuários como desenvolvedores e engenheiros de DevOps, os componentes da arquitetura em nuvem incluem:
- Um front-end, como um console da Web, API (Application Programming Interface, interface de programação de aplicações), CLI (Command-line Interface, interface de linha de comando), app móvel ou outro cliente, que permite o acesso ao serviço de nuvem
- Um back-end que fornece os recursos de computação, armazenamento e software que habilitam o serviço
- Uma rede que fornece conectividade entre recursos de nuvem e serviços, como resolução de DNS
A função da arquitetura de um ambiente de nuvem é especificar como todos os componentes se encaixam e se comunicam. Na Figura 1, podemos ver a arquitetura de um sistema de gerenciamento de documentos baseado em nuvem.
A forma exata de como esses componentes são arquitetados, implementados e apresentados para (ou abstraídos de) usuários varia dependendo do modelo de entrega em nuvem e do tipo de computação em nuvem. Por exemplo, um app da Web em execução em uma máquina virtual em uma nuvem privada tem uma arquitetura diferente daquela de um app distribuído baseado em Kubernetes.
O que é igual em todas as implementações de nuvem é que a nuvem é uma plataforma que abstrai algum nível de complexidade para um usuário. Por exemplo, ofertas de IaaS como instâncias do Amazon Web Services (AWS) EC2 abstraem a complexidade do hardware. Com apps SaaS como o Google Docs, há ainda mais abstração, e tudo, incluindo sistemas operacionais, middleware e manutenção de aplicações, fica oculto para os usuários.
Os principais componentes físicos da infraestrutura em nuvem
Sob as camadas de abstração, a computação em nuvem tem as mesmas três camadas primárias que a infraestrutura de TI local.
- Computação Recursos de CPU, RAM e GPU
- Recursos de rede como interfaces de rede
- Recursos de armazenamento como SSDs e HDDs
Com modelos como IaaS, o faturamento geralmente é baseado no consumo de recursos nessas categorias.
Observação: Não confunda a arquitetura em nuvem com a arquitetura de rede. A arquitetura em nuvem inclui arquitetura de rede, quando relevante. Por exemplo, os serviços SD-WAN, SDN e DNS podem ser incluídos na arquitetura em nuvem para um ambiente empresarial.
Modelos básicos de implantação de nuvem: nuvem pública versus nuvem privada
Os dois modelos básicos de serviço de nuvem que você pode usar são nuvem pública e nuvem privada (Tabela 1). As plataformas de nuvem pública estão disponíveis para o público em geral, e a infraestrutura é gerenciada por um provedor de serviços de nuvem. As plataformas de nuvem privada são dedicadas a uma única organização.
A compensação entre nuvem pública e nuvem privada é simplicidade (nuvem pública) versus controle (nuvem privada). Os usuários de nuvem pública simplesmente consomem serviços, e o provedor de serviços cuida da manutenção e do provisionamento de infraestrutura. No entanto, isso também significa que os usuários de nuvem pública são inerentemente limitados aos recursos oferecidos pelo provedor de serviços. Além disso, os dados de nuvem pública residem em data centers de provedores de serviços, que têm implicações de conformidade e soberania de dados.
Por outro lado, os usuários de nuvem privada têm controle total sobre sua infraestrutura e seus recursos. A desvantagem é que o usuário, ou um terceiro agindo em seu nome, deve lidar com as complexidades da manutenção, configuração e correção da infraestrutura.
A nuvem privada é mais segura do que a nuvem pública?
Em geral, as nuvens privadas oferecem duas vantagens de segurança em relação às nuvens públicas.
- As nuvens privadas são dedicadas a uma única organização.
- Elas geralmente não são diretamente acessíveis por meio da Internet pública.
É por isso que, muitas vezes, você verá alegações de que as nuvens privadas são mais seguras do que as nuvens públicas. Em teoria, e quando as empresas que mantêm a nuvem privada aplicam as práticas recomendadas de segurança na configuração e manutenção, essa é uma alegação razoável. Sendo todo o resto igual, o isolamento de uma nuvem privada é um benefício de segurança.
No entanto, muitas organizações não têm a experiência e os recursos internos de segurança para fortalecer, corrigir, verificar e gerenciar a infraestrutura com o mesmo rigor que os provedores de nuvem em hiperescala. Uma nuvem privada não corrigida ou configurada incorretamente pode ser mais insegura do que uma nuvem pública, e as empresas devem levar isso em consideração ao avaliar os riscos.
Modelos avançados de implantação em nuvem: nuvem híbrida e nuvem privada
Além da nuvem pública e privada, há vários outros modelos de implantação de nuvem. Por exemplo, o National Institute of Standards and Technology define a nuvem comunitária como uma infraestrutura em nuvem "provisionada para uso exclusivo por uma comunidade específica de consumidores de organizações que possuem interesses compartilhados". No entanto, os dois modelos mais comuns de implantação de arquitetura avançada em nuvem são:
Nuvem híbrida: A combinação de vários modelos de implantação em nuvem dentro de uma organização. Por exemplo, uma equipe que replica um banco de dados em uma nuvem pública e privada está usando um modelo de nuvem híbrida.
Multinuvem: O uso de vários provedores de nuvem pública diferentes dentro de uma organização. Por exemplo, uma empresa que executa clusters no Serviço de Kubernetes do Azure (AKS) e no Amazon Elastic Kubernetes Service (EKS) está usando um modelo multinuvem.
XaaS: os tipos de computação em nuvem
Além dos diferentes modelos de implantação, há uma ampla variedade de diferentes modelos de serviços de computação em nuvem. Coletivamente, esses modelos são conhecidos como "tudo como serviço" ou XaaS. Com o modelo XaaS, um provedor oferece aos usuários serviços de computação em nuvem geralmente com preços baseados em assinatura.
Os três modelos de serviço XaaS mais comuns são SaaS, PaaS (plataforma como serviço) e IaaS (Figura 2).
A distinção entre esses três modelos de serviços de computação em nuvem é a responsabilidade do provedor de serviços e do usuário. A Tabela 2 detalha quem controla os diferentes aspectos da infraestrutura em nuvem com os diferentes modelos.
As plataformas IaaS oferecem aos usuários o máximo de controle e são as mais complexas de gerenciar e manter. Os usuários são responsáveis por tudo, desde a seleção de um sistema operacional até a aplicação de correções. Na outra extremidade do espectro, plataformas SaaS como Google Docs e Slack abstraem tudo, exceto a camada de aplicação.
As plataformas PaaS fornecem um ponto médio e oferecem ao usuário o controle da camada de aplicação e de dados. Por exemplo, com uma plataforma PaaS, você pode ter acesso direto a um banco de dados MySQL, mas não será responsável por corrigir a versão MySQL ou o sistema operacional subjacente.
Além de IaaS, PaaS e SaaS
IaaS, PaaS e SaaS são apenas o começo quando se trata de modelos de serviço em nuvem. Na última década, houve uma explosão de novas ofertas de serviços de nuvem que abrangem uma ampla variedade de casos de uso.
Aqui está um detalhamento de outros modelos de serviço em nuvem que você deve conhecer.
- Plataformas de AaaS (autenticação como serviço), como Okta e Duo, fornecem serviços como MFA (autenticação multifator) e SSO (login único).
- Plataformas de DaaS (desktop como serviço), como Amazon Workspaces e Área de Trabalho Virtual do Azure, fornecem desktops virtuais gerenciados na nuvem
- Ofertas de CaaS (contêineres como serviço), como o Google Cloud Run e Instâncias de Contêiner do Microsoft Azure (ACI), otimizam o processo de implantação e gerenciamento de apps em contêineres em uma plataforma de nuvem
- As plataformas gerenciadas de Kubernetes, como AKS e EKS, fornecem serviços Kubernetes hospedados para orquestração automatizada de clusters do Kubernetes na nuvem
- A computação sem servidor possibilita uma abordagem "sob demanda" para recursos de computação que permite que os usuários executem funções sem gerenciar nenhuma infraestrutura subjacente.
Os benefícios da computação em nuvem
A computação em nuvem é benéfica para consumidores e empresas. Os principais benefícios da computação em nuvem em relação à computação tradicional no local, são:
- Infraestrutura gerenciada: A instalação, configuração e manutenção de servidores, switches, racks, energia e equipamentos de resfriamento são caros e demorados. Os serviços de nuvem oferecem os benefícios comerciais de uma solução, sem a complexidade do gerenciamento de infraestrutura.
- Recursos elásticos: Aumentar ou diminuir o uso da nuvem é trivial em uma nuvem pública. Essa elasticidade permite que as empresas evitem gargalos para que possam expandir rapidamente sem o risco de excesso de investimento em hardware.
- Capacidade de observação abrangente: Muitas vezes, as plataformas em nuvem vêm com ferramentas de observação e painéis incluídos.
- Práticas recomendadas integradas: Os provedores de serviços são incentivados a atingir o equilíbrio certo entre desempenho, segurança e usabilidade. E eles podem oferecer aos seus clientes os benefícios das economias de escala. Como resultado, os usuários podem se beneficiar das práticas recomendadas de infraestrutura usando a plataforma de nuvem certa.
Migração para uma arquitetura em nuvem
Lançar novos projetos na nuvem é uma coisa, mas migrar cargas de trabalho existentes para a nuvem é outra. Não existe uma abordagem única que funcione para todos os casos de uso, mas há um conjunto geral de princípios e práticas recomendadas que você pode usar para acertar.
- Certifique-se de que a migração para a nuvem faça sentido: Nem toda carga de trabalho precisa estar na nuvem. Crie um caso de negócios que pondere os custos da migração para a nuvem em relação aos custos de desativar totalmente a carga de trabalho ou deixá-la no local.
- Escolha seu provedor de nuvem com sabedoria: Os recursos e o custo são importantes, mas não são as únicas partes da equação. Considere requisitos não funcionais, suporte, contratos de nível de serviço e reputação do fornecedor ao tomar sua decisão.
- Selecione um modelo de serviço e implantação que funcione para você: A nuvem pública e a privada, assim como IaaS, PaaS e SaaS, vêm com diferentes conjuntos de compensações de controle, funcionalidade e dependência de fornecedor. Avalie os prós e os contras antes de se prender a um modelo. Por exemplo, embora possa parecer lógico migrar seu servidor Exchange local para uma máquina virtual comparável em uma plataforma IaaS, o e-mail do Office 365 (SaaS) pode ser uma solução melhor.
- Mantenha seus orçamentos sob controle: Os custos da nuvem podem aumentar rapidamente. A maioria dos principais provedores de nuvem tem calculadoras de custo de nuvem que você pode usar para obter estimativas razoáveis e evitar surpresas. Além disso, certifique-se de configurar alertas de orçamento sempre que possível e fique atento às suas despesas. Implemente uma abordagem sistemática para controlar os custos e garantir que você permaneça dentro do seu orçamento.
- Sempre tenha uma contingência: Backups, planos de reversão e testes de pré-produção podem ajudar a reduzir o risco de perda de dados e tempo de inatividade à medida que você migra para a nuvem. Certifique-se de adotar uma abordagem de "medir duas vezes, cortar uma vez" para migrações de cargas de trabalho críticas.
- Considere a aplicação do padrão de figueira estranguladora para monólitos complexos: Fazer lift-and-shift rapidamente não funciona para tudo. Se sua equipe precisar mover apps monolíticos complexos para a nuvem, considere aplicar o padrão de figueira estranguladora para migrar gradualmente para microsserviços nativos da nuvem ao longo do tempo.
Conclusão
A arquitetura em nuvem é um tópico complexo, e há muito mais para aprender. No entanto, com o que abordamos aqui, você deve ter uma sólida compreensão do básico o que, por quee como funciona a computação em nuvem.