Sobre o blog

sexta-feira, 16 de maio de 2025

Arquitetura de Computação em Nuvem

    Computação em nuvem é um serviço. Todo serviço deve ser tratado sob dois pontos de vista: arquitetura e implementação.

    A arquitetura descreve as características e funções do serviço, e apresenta os elementos que deixaram o desenvolvedor desenvolvê-lo e implementá-lo. A implementação constrói o serviço com base na arquitetura.

    A arquitetura da nuvem deve mostrar suas funções, como seus elementos estão organizados e como fazer coisas na nuvem. Deve mostrar coisas tipo: disponibilidade pra todos os usuários ao redor do mundo, provedores de serviços, canais de comunicação entre usuários e provedores, etc.

    Resumidamente, a arquitetura de computação em nuvem são vários componentes que no fim formam o cloud computing. É a base de tudo, e ela permite que empresas criem e gerenciem aplicativos e serviços eficazmente. 

    Ela tem 3 camadas principais:
  1. De serviço: servidores virtuais, físicos ou híbridos
  2. De armazenamento: sistemas de arquivo, banco de dados e outros tipos de armazenamento
  3. De rede: serviços de conectividade, segurança, gerenciamento de apps
    A arquitetura em nuvem também pode incluir ferramentas de automação, monitoramento e gerenciamento de configuração (pra ajudar os administradores a gerenciar a infraestrutura) e podem incluir serviços de plataforma, de computação, de armazenamento, de redes, etc.

Componentes da infraestrutura de nuvem

  • Hardware do servidor: a parte física básica do servidor.
  • Virtualização: permite acesso remoto aos serviços via internet.
  • Modelos de serviço: tem vários, como SaaS, PaaS e IaaS, por exemplo.
  • Gerenciamento de nuvem: gerencia os recursos da nuvem.
  • Redes em nuvem: fornece conectividade em tempo real, de qualquer lugar.
  • Segurança em nuvem: garante a segurança da nuvem.
    Quando estamos fazendo a arquitetura de uma nuvem, dividimos os componentes em dois grupos.
  • FRONT END: O lado do usuário. A interface que o usuário usa pra acessar a nuvem. Os elementos que o usuário pode usar, sejam eles elementos físicos (dispositivos) ou lógicos (browser da web). Varia de acordo com o usuário e o serviço, mas é normalmente sempre bem parecido.
  • BACK END: O lado interno, por trás das câmeras. A interface da própria nuvem (podendo ser, genericamente, até entendido como a própria nuvem). Fornece o serviço aos usuários. Tem componentes de software, hardware e gestão. Varia conforme os modelos de serviço. Tem seus próprios componentes importantes de lembrar:
    • Aplicação: é a porta de entrada. Recebe pedidos do usuário.
    • Serviços: executa as tarefas da nuvem.
    • Cloud runtime: é o ambiente onde os serviços rodam, com uso de virtualização. Ele tem a função de fazer várias execuções em paralelo acontecerem no mesmo servidor.
    • Armazenamento: armazenam os dados em um servidor remoto acessado pela Internet. Os servidores tem HDs, SSDs e até o Optane (dispositivo da Intel) ou o NAS (equipamento robusto pra armazenar grandes volumes de dados. Local ou remoto).
    • Infraestrutura
    • Gerenciamento
    • Segurança
    A Internet é o meio que conecta o front end e o back end. A nuvem só funciona quando os dois se conectam.

Infraestruturas em datacenters

    Datacenters são onde os servidores e dispositivos de armazenamento de empresas que lidam com armazenamento de dados ficam. Interligados com redes de alto desempenho. São a base da computação de nuvem.

    As redes (back end) usam switches, roteadores, firewalls, e softwares de rede pra conectar os servidores da nuvem com os dispositivos de armazenamento, sistemas de gestão e segurança.

    O provedor pode oferecer o serviço IaaS, que inclui implementar e manter a rede do usuário. O IaaS usa os recursos dos datacenters (servidores, redes, armazenamento) pra oferecer infraestrutura sob demanda ao usuário

Organização lógica dos datacenters

    Além do físico (hardware) visto acima. Também tem vários softwares que ajudam na gerencia da computação em nuvem.

    Como os serviços de gerenciamento, que permitem que os recursos sejam gerenciados de acordo com as necessidades do usuário final. Nos servidores tem VÁRIAS VMs ativas compartilhando recursos toda hora, então, o software de gerenciamento é essencial pra alocar o recurso certo a cada tarefa.

    Serviço de segurança também é importante pra deixar só gente autorizada acessar dados. Assim, tarefas importantes não são interrompidas, pois o servidor está protegido de ataque e invasões.

Camadas de servidores

    Servidores físicos ou virtuais que hospedam serviços, aplicativos e dados pros usuários. Também são usados pra armazenar e gerenciar dados, como arquivos, backups e imagens.

    Devem ser monitorados e gerenciados, backup deve ser feito, patches de segurança devem ser aplicados, etc. A administração de um desses é complexa e os administradores de um servidor tem que se familiarizar com as ferramentas de administração de servidor, como:
  1. Servidores de gerenciamento: configura e monitora servidores e dispositivos de rede.
  2. Gerenciadores de configuração: gerencia as configurações e os aplicativos de um servidor.
  3. Monitoramento de servidores: monitora o servidor
  4. Ferramentas de automatização de tarefas: automatiza coisas como backup e restaurações.
  5. Soluções de segurança: protege o ambiente do servidor.
    Tem que gerenciar os usuários com direitos de acesso e tem que gerenciar as regras de segurança também. Também precisa de uma documentação detalhada sobre as configurações do servidor, pra se alguma alteração rolar, ela ser facilmente rastreada e lidada.

Serviços em nuvem

    Os componentes principais da nuvem são os hardwares de processamento e armazenamento, geralmente constituídos por um conjunto de servidores chamados de datacenter.

    Serviços de nuvem são serviços de TI (hardware e software) hospedados em ambientes virtuais acessados pela internet. O provedor de recursos (back end), disponibiliza os serviços. Abaixo, exemplos de serviços:
  1. Armazenamento: Pode armazenar e acessar arquivos e dados onde você estiver.
    1. Normalmente se divide em 3 categorias: file storage, object storage e block storage.
    2. Uma categoria mais moderna desse serviço é a CSI (Container Storage Interface) 
    3. Estão sujeitos as seguintes ameaças: acesso não autorizado, vazamento, exfiltração e perda de dados. Mas usam se técnicas pra aumentar a segurança, técnicas como:
      1. Lista de controle de acesso
      2. Gerenciamento de acesso e identidade
      3. Criptografia
      4. Auditoria (registros de logs de acesso, mostra quem, quando e o que fizeram)
      5. Backups
    4. File storage: O armazenamento de arquivos, similar ao NAS, permite montar volumes em sistemas operacionais pra guardar e acessar arquivos via protocolos como NFS e SMB/CIFS. Suporta o acesso simultâneo por várias VMs,  controle de permissões e expansão automática do sistema de arquivos sem impacto para o usuário.
    5. Object storage: São usados pra guardar dados em formas de arquivos, são organizados em buckets (estruturas parecidas com diretórios). O acesso é feito por API, linha de comando ou interfaces específicas, geralmente usando o protocolo HTTPS. Não são indicados pra armazenar sistemas operacionais ou banco de dados. 
    6. Block storage: Deixa o cliente montar e formatar volumes com sistemas de arquivos pra armazenar arquivos, bancos de dados e sistemas operacionais completos.
  2. Computação: Computação em escalas variadas, desde servidores virtuais até clusters de computadores.
  3. Infraestrutura: Pode acessar servidores e serviços de rede (como VPNs ou firewalls).
  4. Plataforma: Pode criar, implantar e gerenciar aplicativos num ambiente baseado em nuvem
  5. Análise: Pode processar, analisar e gerenciar grandes quantidades de dados.
  6. Desenvolvimento: Pode criar aplicativos baseados na nuvem por meio de uma interface de programação de aplicativos (API)

Serviço de compartilhamento

    Alguns serviços de nuvem permitem compartilhar arquivos e pastas pela rede usando protocolos específicos. Os principais são: CIFS (Common Internet File System) e NFS (Network File System - RFC 7530)

    Como os servidores ficam longe do usuário, esses protocolos ajudam a manter o acesso rápido e eficiente aos dados. A infraestrutura da nuvem é baseada em servidores potentes com processadores como Intel Xeon ou AMD Opteron, além de muita memória RAM rápida pra garantir alto desempenho.

Mais

    Servidores também empregam as GPUs (Graphic Processing Unit) que chamamos de placas de vídeo, que são empregadas em servidores de alto desempenho pra aumentar a capacidade de processamento.

    Além de GPUs, alguns provedores também podem usar coisas específicas, tipo o Google Tensor Processing Unit, que é feito especialmente pra Google Cloud Platform.

Arquitetura de solução em nuvem

Solução IaaS

Exemplos do IaaS e benefícios:
  • ELASTICIDADE: Aumenta/diminui recursos conforme a necessidade. Você pode licenciar os recursos quando precisar e retirá-los quando não precisar mais. Só paga por recursos quando estiverem sendo usados.
  • BALANCEAMENTO DE CARGA: Distribui o tráfego entre servidores. Garante desempenho e disponibilidade. Evita sobrecarga e falhas.
  • ALTA DISPONIBILIDADE: Garante o tempo de funcionamento máximo dos serviços fornecidos. Usando medidas como:
    • Replicação de dados: Ter várias copias dos mesmos dados. Se o sistema falhar em um lugar, os dados ainda estarão em outro lugar.
    • Uso de redundância: Novamente, duplicar serviços, materiais e equipamentos.
    • Monitoramento contínuo
    • Atualizações frequentes
    • Balanceamento de carga
  • CENÁRIOS MULTICLOUD: Dá pra usar vários provedores de serviços de nuvem em um único ambiente. Baseada em ferramentas de orquestração de nuvem, como o Kubernetes ou Openstack.
  • CLOUD HÍBRIDO: Feita pra aproveitar os benefícios da nuvem pública e privada num único ambiente. Normalmente, uma combinação de infraestrutura local (servidores físicos) e serviços de nuvem. Usando o melhor dos dois mundos.

Edge computing

    Uma abordagem de computação de borda. Permite que os dados sejam processados e armazenados localmente (na borda de rede), em vez de forma remota (na nuvem). Diminui a latência e o uso de banda, aumenta a confiabilidade da conexão, desempenho, segurança e escalabilidade. Ideal pra aplicativos que exigem resposta imediata.

    Diferença entre ele e a Internet das Coisas:
  • Internet das Coisas (IoT): Os dispositivos pegam dados, mandam pra nuvem, onde ficam armazenados, e são analisados por sistemas mais potentes.
  • Edge computing (computação de borda): Em vez de mandar tudo pra nuvem, os dispositivos já processam os dados localmente, perto de onde eles são coletados. O que der pra resolver ali, eles resolvem, e só mandam pra nuvem o que for realmente necessário. Economizando Internet, respondendo mais rápido, e funcionando melhor em lugares com conexão ruim.
    Por exemplo, um sensor de segurança. Com edge computing, ele decide ali mesmo se detectou algo relevante (uma pessoa) ou só um gato. Se for um gato, ele nem manda pra nuvem. Se for algo sério, ai sim, ele manda o alerta.

    Você usa o edge computing quando:
  1. Precisar de uma resposta rápida e não dá tempo de esperar a nuvem processar.
  2. Em dispositivos inteligentes ou IoT, como:
    1. Câmeras com reconhecimento facial em tempo real.
    2. Aplicativos que usam localização ao vivo.
  3. Pra evitar sobrecarregar a Internet (menos dados enviados = economia de banda)
  4. Quando decisões precisam ser tomadas no local, sem depender de servidores distantes
    Antes de usar edge computing, alguns fatores devem ser considerados, como: largura de banda de internet, energia, tamanho da infraestrutura, capacidade de processamento, tipo de serviço da sua empresa, custo de implantação, a rede existente, facilidade de achar profissionais especializados pra manutenção, etc.

Edge computing e serveless

    Serverless já foi explicado anteriormente. O provedor que cuida e gerencia os servidores e a infraestrutura.

    Numa rede altamente distribuída (rede onde os dados estão espalhados por vários lugares diferentes), como no edge computing, seria difícil gerenciar toda a infraestrutura, então, juntar serveless + edge resolve muita coisa! O processamento é local, reduz o custo e tempo de desenvolvimento, as empresas podem focar só no código e suas aplicações e tem alta performance.

Migração para nuvem

    Migrar pra nuvem é complicado, mas é indispensável pra ter sucesso na era digital.

Quando migrar?

  1. Quando sua infraestrutura está ultrapassada e não é mais suficiente pra suas necessidades.
  2. Quando você precisa aumentar a capacidade de processamento ou armazenamento rapidamente.
  3. Quando você precisa acessar recursos em qualquer lugar.
  4. Quando você precisa economizar dinheiro, já que elimina muitos custos como aquisição de hardware e licenciamento de software.
  5. Quando você precisa de mais segurança. Oferece grande segurança de dados, quando o provedor é bom, claro.

Estratégias de migração

    Eram os 5Rs, agora já são os 7Rs.
  1. REHOST (RE-HOSPEDAR OU LIFT AND SHIFT): Mover aplicativos e dados pra nuvem sem mudar nada.
    1. Rápido e aproveita a infraestrutura da nuvem. É bom usar quando a aplicação já funciona bem e não precisa de alterações
  2. REPLATFORM (REPLATAFORMA): Faz pequenas mudanças na aplicação pra que ela funcione melhor na nuvem (como trocar banco de dados, ou o sistema operacional, por exemplo) emulando aplicações através de VMs.
    1. Adapta sem reconstruir. É bom usar quando pequenas melhorias já resolvem. É a mais indicada pra sistemas legados (antigos).
  3. REPURCHASE (RECOMPRA OU DROP AND SHOP): Substituir o sistema atual por uma solução pronta de nuvem (SaaS) que tem os mesmos recursos.
    1. Economiza tempo e manutenção. Se você sabe que tem uma solução SaaS que atende bem sua necessidade, é uma boa usar.
  4. REFACTOR/RE-ARCHITECT (REFATORAR/REARQUITETAR): É reconstruir o sistema do zero, usando as tecnologias da nuvem.
    1. É bom de usar quando se quer modernizar a aplicação completamente. Tem alta escalabilidade e performance.
  5. RETIRE (APOSENTAR): Desativar sistemas ou aplicações que não são mais úteis.
    1. Reduz custos e focam nos sistemas que importam mesmo. É bom usar quando tem sistemas obsoletos ou redundantes.
  6. RETAIN (RETER/REVISIT): Manter alguns sistemas fora da nuvem por enquanto.
    1. Evita migrar o que não precisa ser migrado. É bom fazer isso por motivos de conformidade, performance local ou se o sistema ainda é recente
  7. RELOCATE (REALOCAÇÃO): Mover a infraestrutura INTEIRA pra nuvem sem mudar nada, inclusive mantendo ferramentas e processos.
    1. É fácil pra equipes que já usam a virtualização. E é boa de usar quando se quer migrar rapidamente sem envolvimento dos desenvolvedores.

Nenhum comentário:

Postar um comentário

Sobre o blog

    Essa vai ser uma postagem que vou tentar deixar fixada, talvez no cabeçalho, pra todo mundo ver. Só pra explicar direitinho esse blog, c...