1 of 20
2 of 20
3 of 20
4 of 20
5 of 20
6 of 20
7 of 20
8 of 20
9 of 20
10 of 20
11 of 20
12 of 20
13 of 20
14 of 20
15 of 20
16 of 20
17 of 20
18 of 20
19 of 20
20 of 20

site

doc

blog

success stories

Blog

Quais são as noções básicas de computação serverless, containers e VMs?

O mercado de tecnologias digitais tem apresentado um alto crescimento na última década à medida que as empresas buscam parceiros estratégicos para implementar novas tecnologias de virtualização, como containers e serverless.

Principalmente, empresas dos setores da saúde, engenharia, comércio e educação começaram a implementar uma arquitetura de aplicação moderna para atingir diferentes objetivos, como redução de custos, aumento da produtividade, otimização de processos de fabricação, automação da gestão interna, implementação de um modelo de segurança zero-trust, criação de novos modelos de negócios, entre outros. Dessa forma, as empresas realizam uma transformação digital que envolve não só software e hardware, mas também sua equipe em todos os níveis hierárquicos.

Uma opção que as empresas devem considerar é a migração total ou parcial dos sistemas legados para alcançar essa transformação digital. Entre as principais opções empregadas por líderes de tecnologia e suas equipes estão as máquinas virtuais (ou VMs), containers e a computação serverless. Neste post, discutiremos esses três tipos de arquiteturas e vamos ajudá-lo a entender suas definições, recursos técnicos e como algumas delas podem ser implantadas no edge.

Modelos de arquitetura de aplicações para a transformação digital

O surgimento da cloud computing (computação em nuvem) trouxe serviços de computação sob demanda para usuários conectados à internet. Entre os anos 2006 e 2008, os recursos de informática, como a capacidade de armazenamento e processamento, passaram a ser oferecidos comercialmente para médias e grandes empresas. O aumento da sua popularidade forçou o modelo inicial de cloud computing a se transformar em novas abordagens ou paradigmas a fim de fornecer mais recursos virtualizados para um público mais diverso. Hoje, temos muitos dispositivos digitais enviando grandes quantidades de dados com alta velocidade em tempo real e conectados à rede por longos períodos de tempo. Essa nova abordagem requer virtualização com alta capacidade computacional que pode ser descentralizada e facilmente escalável. Edge computing atende esses desafios, ao permitir a inclusão de novas arquiteturas.

A seguir, compartilharemos informações relevantes e insights sobre as três principais arquiteturas usadas para o desenvolvimento e a execução de software, permitindo a você ter uma maior perspectiva técnica.

Virtualização e máquinas virtuais

A virtualização é uma tecnologia (software) que possibilita a criação de versões virtuais de algum recurso tecnológico a partir de uma máquina física e distribui suas capacidades computacionais entre unidades menores e isoladas. O objetivo da virtualização é melhorar a eficiência e resolver os problemas relacionados aos equipamentos de informática como o consumo de energia, custos de manutenção, além de reduzir os recursos de hardware por usuário. Alguns dos tipos de virtualização mais comuns são:

  • Virtualização de servidores: os servidores têm unidades de processamento central (CPUs) com vários processadores para executar tarefas complexas. Com a virtualização do servidor é possível particionar um servidor dedicado (físico) em diferentes servidores virtuais, com seus próprios recursos computacionais, endereço IP e nível de isolamento.
  • Virtualização de desktop: os computadores têm uma construção técnica semelhante aos servidores, mas com uma performance relativamente inferior. Portanto, a virtualização de desktop funciona de forma semelhante à virtualização de servidores, pois permite que um computador dedicado seja particionado em diferentes computadores virtuais com seus respectivos recursos computacionais.
  • Virtualização de rede: com a virtualização de rede, os recursos de hardware e software do computador podem ser usados para combinar várias redes físicas em uma única rede virtual ou dividir uma rede física em diferentes redes virtuais para fornecer ambientes independentes para vários fins. Um bom exemplo disso é a Virtual LAN (VLAN), uma subdivisão de uma rede de área local (LAN) que melhora a velocidade e a performance de redes sobrecarregadas.

No cenário da virtualização, podemos criar e executar máquinas virtuais (VMs) em computadores ou servidores físicos, frequentemente chamados de host. Uma máquina virtual, chamada de guest, é a emulação ou virtualização de um computador físico. Esse processo é realizado através do hipervisor que gerencia a criação de uma ou mais VMs em um host. Assim, o hipervisor permite a instalação manual ou automática da imagem de um sistema operacional (SO) como Linux, Windows, Ubuntu e alocação de recursos computacionais como armazenamento, processamento e memória para cada VM.

Durante a criação de uma máquina virtual, o administrador deve alocar os recursos computacionais dos servidores de acordo com uma previsão de uso e carga máxima gerada pela aplicação onde, na maioria das vezes, uma pequena fração desses recursos é usada. Além disso, as aplicações também podem gerar picos de uso de recursos computacionais sem aviso prévio, o que pode causar a interrupção do sistema. Como resultado, as máquinas virtuais são incapazes de escalar automaticamente. Outra limitação é a incapacidade de migrar VMs de um servidor físico para outro sem interrupção. Essa limitação ocorre principalmente ao migrar entre servidores com processadores diferentes (por exemplo, Intel e AMD), o que requer o desligamento temporário dos serviços da aplicação.

Containers

Os containers são outra forma de particionar um computador ou servidor em diferentes unidades isoladas para serem executadas de forma independente. Ao contrário das máquinas virtuais, os containers compartilham o kernel da máquina host (uma parte do sistema operacional que permite a interação entre software e hardware), e cada container não requer a instalação da imagem de todo o sistema operacional. Para cada aplicação, um container é instalado apenas com os arquivos necessários para sua execução. Essa configuração torna os containers mais leves (megabytes) e mais rápidos do que as máquinas virtuais (gigabytes), além de serem ideais para executar microsserviços, pois reduz o uso de hardware. Portanto, devido à menor carga de arquivos no SO, os containers precisam de apenas alguns segundos para inicializar, enquanto as máquinas virtuais precisam de minutos.

Por outro lado, os desenvolvedores devem realizar a criação, execução e orquestração dos containers por meio de softwares de acesso aberto como Docker e Kubernetes. Consequentemente, a gestão dessas unidades independentes só introduz mais tarefas para a equipe técnica da empresa. Além disso, a segurança continua sendo uma preocupação significativa, pois essa arquitetura oferece isolamento leve do host e de outros containers no nível do processo quando comparados com as máquinas virtuais, onde o hipervisor e o sistema operacional da máquina guest oferecem segurança mais robusta.

Serverless

Serverless é um novo paradigma de gerenciamento para alocar recursos e serviços virtualizados. Nesse modelo, o provedor executa tarefas de administração de servidor, como provisionamento, implementação de reparos (patching) e gerenciamento de recursos de hardware. Os desenvolvedores de software não precisam se preocupar com a infraestrutura de suporte ou back-end. O cliente paga apenas pelos recursos demandados pela aplicação naquele momento, ao contrário de containers e máquinas virtuais, que devem ser fornecidos com antecedência. O modelo serverless também é ideal para executar aplicações modernas com novas tendências de desenvolvimento, como os microsserviços. Nesse modelo, o código fonte para cada microsserviço reside como uma função, que é implementada e hospedada nos servidores do provedor. Com essa configuração, as funções podem ser acessadas por meio de APIs e executadas em milissegundos.

Containers e computação serverless atuando no edge

Edge computing é um modelo de computação distribuído que oferece recursos de computação mais próximos dos usuários. Ao contrário de um modelo centralizado como a cloud, os servidores ou os edge nodes estão espalhados pelo mundo todo. Assim, o modelo de edge computing significa que quanto maior a implementação de edge nodes, menor será o tempo de transferência de dados (conhecido como latência). Portanto, isto traz novos recursos digitais, como análise de dados em tempo real, live streaming e a integração de novas tecnologias, como 5G, AI e IoT.

Tanto a arquitetura baseada em serverless quanto a de containers pode ser aplicada no edge. Os containers que atuam no edge têm a vantagem de serem leves (em comparação com as máquinas virtuais). Por ser uma tecnologia testada, os desenvolvedores podem usar as mesmas ferramentas de software com as quais estão familiarizados. Por outro lado, o modelo serverless é um forte candidato para executar tarefas no edge devido à gestão automática da infraestrutura. O modelo serverless permite que as aplicações sejam escaladas de acordo com as cargas de trabalho e reduzam os custos, pagando apenas pelos recursos usados. Além disso, é a melhor escolha com o menor tempo de implementação na rede (milissegundos) em relação às tarefas essenciais como a atualização do código fonte ou o envio de um patch de segurança.

Desafios de pesquisa relacionados a edge computing

As arquiteturas baseadas em serverless e containers apresentam muitos desafios, que ainda são objetivos de pesquisa em andamento. Uma estratégia adotada por grupos de pesquisa para solucionar esses desafios é por meio de novos campos de estudo, como machine learning e redes neurais. Essas técnicas de computação são usadas para a análise detalhada de dados, aprendizado de comportamentos e a descoberta de padrões de interesse. Com elas, são realizadas pesquisas para aprimorar as arquiteturas de computação no edge network e resolver problemas comuns em um modelo de cloud computing. Por exemplo, alguns casos de pesquisa são:

  • Edge Caching na rede: um estudo realizado por um grupo de pesquisa da North China Electric Power University avaliou abordagens baseadas em aprendizagem para armazenar uma grande quantidade de dados (big data) no edge network. O estudo mostrou os benefícios dessa nova abordagem assim como também os resultados de avanços significativos na capacidade de cache em simulações numéricas.

  • Mitigação do cold start: um grupo de pesquisa da Universidade de Melbourne propôs uma configuração de um agente de aprendizagem por reforço (reinforcement learning) para identificar fatores como a utilização da CPU e o comportamento. Essa abordagem ajudou a determinar os padrões de invocação de funções e reduzir a frequência de cold start, preparando as instâncias da função com antecedência.

Como mencionado nos exemplos anteriores, as arquiteturas baseadas em containers e serverless mostram desafios que ainda precisam ser aprimorados. Na seção a seguir, vamos mostrar como a Azion abordou esses desafios e compará-los com a proposta oferecida por um dos principais provedores de cloud computing.

Como a Azion oferece uma melhor arquitetura serverless

Alguns provedores de cloud, como a AWS, oferecem os benefícios de funções serverless em containers para atingir um público mais amplo de desenvolvedores de software. Seu produto, conhecido como Lambda Functions, é empacotado como uma imagem de um container, com um tamanho de até 10 GB. Esse novo modelo expande os recursos de uma arquitetura baseada em containers para criar e implementar altas cargas de trabalho (por exemplo, machine learning e cargas de trabalho com o uso intenso de dados). No entanto, devido ao uso inerente de recursos computacionais, a implementação de containers no edge pode ser ineficiente para hospedar aplicações simples.

Essa é uma das razões pelas quais a Azion não utiliza uma arquitetura centralizada baseada em um container. A Azion usa o motor de código aberto V8 da Google como base para o Edge Functions, nosso produto de computação serverless. Usar o V8 como um mecanismo de execução de JavaScript permite executar funções em um ambiente multi-tenant, o qual emprega o sandboxing como um mecanismo para isolar aplicações e reduzir possíveis vulnerabilidades de segurança. Aliás, os problemas de cold start são mitigados quando as funções serverless são armazenadas em nossos dispositivos NVME, reduzindo a latência e aproveitando o paralelismo interno dos dispositivos de armazenamento de estado sólido.

Finalmente, você pode modernizar suas aplicações ao estabelecer uma estratégia inteligente para o armazenamento em cache na nossa plataforma de edge computing, reduzindo os longos tempos de espera experimentados pelos usuários finais ao usar funções serverless baseadas em cloud. A Azion oferece duas ferramentas para implementar essa estratégia. Uma delas é o Edge Caching para as soluções construídas na plataforma da Azion. Uma vez que é integrado às suas aplicações, o Edge Caching reduz a latência e aumenta a taxa de transferência de dados entre os edge nodes da nossa rede global distribuída e os usuários finais. Nossa plataforma selecionará o edge node mais próximo do usuário para entregar o conteúdo, armazenando uma cópia de seus dados em nossos edge nodes.

Uma ferramenta complementar é o Load Balancer da Azion. Em caso de incidentes com seus servidores de origem, o Load Balancer garante a disponibilidade de suas aplicações e do conteúdo. Permite que você selecione mais de uma origem e equilibre o tráfego entre elas. Além disso, você pode personalizar o cabeçalho do host para identificar um host virtual e localizar seu conteúdo ou aplicações, garantir a disponibilidade, definir um método de load balancing, assim como também personalizar os tempos de espera e o tratamento de erros.

Para descobrir como a plataforma de Edge Computing da Azion pode melhorar o desenvolvimento e a execução das suas aplicações, entre em contato com o nosso time de vendas ou crie sua conta gratis e explore os benefícios da Azion.

Referências

  1. Chang, Z., Lei, L., Zhou, Z., Mao, S., & Ristaniemi, T. (2018). Learn to cache: Machine learning for network edge caching in the big data era. IEEE Wireless Communications, 25(3), 28-35.
  2. Agarwal, S., Rodriguez, M. A., & Buyya, R. (2021, May). A Reinforcement Learning Approach to Reduce Serverless Function Cold Start Frequency. In 2021 IEEE/ACM 21st International Symposium on Cluster, Cloud and Internet Computing (CCGrid) (pp. 797-803). IEEE.