Blocos de construção da nuvem

Concluído

A computação em nuvem oferece o uso de recursos de computação como um serviço na rede. E, como é óbvio, nem todos os requisitos de serviço são idênticos. Alguns usuários da nuvem podem desejar apenas acessar a infraestrutura bruta na qual os aplicativos são criados. Outros podem não querer lidar com a infraestrutura, mas, simplesmente, desenvolver e implantar aplicativos em uma plataforma (por exemplo, um servidor Web) fornecida pelo provedor de serviços. Outros ainda usam a nuvem como veículo de implantação de aplicativos que os usuários acessam por meio de um navegador sem instalar nada nos PCs, as chamadas "instalações com volume de memória zero". Cada um desses cenários constitui um modelo de serviço de nuvem. E, como você verá, cada modelo de serviço tem um nome bem conhecido no léxico da computação em nuvem.

Antes de discutirmos os modelos de serviço, vamos pensar nas camadas de hardware e software que formam a base para o fornecimento de serviços em nuvem usando os vários modelos de serviço.

Blocos de construção da nuvem

A Figura 1.5 mostra uma abstração útil da computação em nuvem dividindo-a em quatro camadas: software do aplicativo, plataformas de desenvolvimento, compartilhamento de recursos e infraestrutura. A camada de infraestrutura inclui os recursos físicos em um data center. A camada de compartilhamento de recursos usa uma combinação de hardware e software para facilitar o compartilhamento dos recursos físicos enquanto oferece um certo nível de isolamento. A camada desenvolvimento-plataforma oferece suporte funcional para aplicativos de nuvem. Por fim, a camada aplicativo-software hospeda os próprios aplicativos.

Figure 1.5: Cloud computing building blocks.

Figura 1.5: blocos de construção da computação em nuvem.

As quatro camadas podem ser quantificadas ainda mais da seguinte maneira:

Software do aplicativo: a camada superior da pilha é o software do aplicativo, que normalmente é o componente do sistema que o usuário final usa.

Plataformas de desenvolvimento: a camada seguinte, plataformas de desenvolvimento, permite que os desenvolvedores de aplicativos gravem software de aplicativos usando a API (interface de programação de aplicativo) do provedor de nuvem. Cada plataforma na nuvem fornece APIs que os desenvolvedores podem chamar para acessar o armazenamento na nuvem, autenticar usuários e executar outras tarefas necessárias.

Compartilhamento de recursos: os mecanismos recurso-compartilhamento, a terceira camada, incorporam algumas ideias-chave da nuvem:

  • Fornecer serviços de software, computação, rede e armazenamento.
  • Ofereça um ambiente compartilhado no qual várias imagens de hardware (por exemplo, máquinas virtuais) e imagens do sistema (por exemplo, sistemas operacionais) possam ser executadas lado a lado no mesmo servidor com isolamentos de falhas, segurança e recursos.
  • Consolide servidores físicos em servidores virtuais executados em menos servidores físicos.
  • Oferecer agilidade e elasticidade para responder rapidamente às demandas de recursos e serviços dos usuários.

Essas ideias geralmente são fornecidas pela virtualização, que depende de uma combinação de software e firmware para criar máquinas virtuais que operam como se fossem máquinas físicas independentes, mesmo nos casos em que várias máquinas virtuais estão hospedadas no mesmo servidor físico.

Infraestrutura: os recursos físicos compreendem a camada inferior e, na computação em nuvem, são implantados principalmente no lado do provedor de nuvem. As amplas classes de recursos incluem:

  • recursos de computação, normalmente servidores, que são computadores projetados para computação empresarial (em oposição às estações de trabalho dos usuários). Normalmente, eles são montados em um rack para que o espaço seja usado com eficiência.
  • Os recursos de armazenamento mantêm os dados da nuvem, e o uso desses recursos geralmente é cobrado em termos de volume. Por exemplo, cobrança por gigabyte ou terabyte de armazenamento consumido.
  • Os recursos de rede permitem a comunicação entre servidores e, também, entre servidores e clientes.
  • O software que gerencia a infraestrutura de computação, rede e armazenamento.

Em seguida, vamos falar sobre os modelos populares de serviços em nuvem e como as abstrações mostradas acima facilitam o fornecimento desses modelos.

Modelos do serviço de nuvem

Os serviços oferecidos pelos provedores de nuvem se enquadram em três categorias conhecidas como modelos do serviço:

  • IaaS, a abreviação de infraestrutura como serviço
  • PaaS, a abreviação de plataforma como serviço
  • SaaS, a abreviação de software como serviço

A Figura 1.6 ilustra as diferenças. Em um ambiente de computação tradicional (sem nuvem), você é o proprietário do hardware e do software e é responsável por implantá-los e mantê-los. Se um servidor precisar de mais RAM, você será responsável pela instalação. Se um sistema operacional exigir correção, você também será responsável por isso. Com o IaaS, por outro lado, o provedor de serviços em nuvem fornece hardware virtualizado na forma de máquinas virtuais. Com alguns comandos ou cliques de botão, você pode criar uma máquina virtual completa com um sistema operacional. Você é responsável por manter o sistema operacional corrigido e por instalar e manter o software executado na máquina virtual. No entanto, você não é responsável por manter o hardware.

Figure 1.6: Cloud service models.

Figura 1.6: modelos de serviço de nuvem.

O PaaS dá um passo adiante e fornece uma plataforma para o desenvolvimento e a execução de aplicativos que você instala e mantém. Significativamente, o provedor de nuvem assume a responsabilidade de manter a plataforma. Um ótimo exemplo de um serviço de nuvem PaaS é o Serviço de Aplicativo do Azure, que fornece uma ou mais máquinas virtuais completas com um sistema operacional (Windows ou Linux), um servidor Web como o IIS (Serviços de Informações da Internet) e uma pilha de runtime como o Node.js, PHP ou ASP.NET Core para hospedagem de sites e aplicativos. Ele também oferece dimensionamento automático e balanceamento de carga interno. Em resumo, ele fornece uma plataforma completa para hospedagem de aplicativos Web e permite que você se concentre na criação de aplicativos, não na instalação e na manutenção de hardware e software.

O SaaS fornece uma plataforma totalmente gerenciada para realizar tarefas específicas. Aplicativos de email da Web são exemplos de SaaS. Você se conecta a um navegador e executa tarefas de email sem instalar nada no PC. Normalmente, você não sabe nem se preocupa com o tipo de servidor, real ou virtual, que está sendo usado ou o que está instalado no PC. Tarefas como a atualização e a correção de software são executadas pelo provedor de nuvem, daí o termo totalmente gerenciado.

Vamos explorar esses termos com mais detalhes, ver como eles se aplicam aos serviços disponíveis nas modernas plataformas de nuvem e entender os critérios para escolher um modelo de serviço.

O modelo de infraestrutura como serviço

Infraestrutura como serviço

(definição) A IaaS (infraestrutura como serviço) é um modelo de computação em nuvem no qual os provedores de nuvem disponibilizam recursos de computação para os clientes, geralmente na forma de máquinas virtuais

No modelo de IaaS, os provedores alugam recursos de computação na forma de máquinas virtuais (também conhecidas como "instâncias"), e você pode escolher entre uma grande variedade de configurações. Por exemplo, CPU, memória, disco e largura de banda de rede. Depois que uma VM é provisionada, um usuário de IaaS pode se conectar remotamente a ela e instalar plataformas e aplicativos. Esse modelo oferece aos usuários de IaaS a maior flexibilidade possível em termos de desenvolvimento e implantação de software. Em vez de comprar servidores, software, espaço de data center ou equipamento de rede, os usuários alugam esses recursos como um serviço totalmente terceirizado sob demanda.

O modelo de IaaS tem as seguintes características:

  • Os recursos de computação são fornecidos aos usuários como um serviço.
  • Os provedores de IaaS fornecem ferramentas que permitem aos usuários de IaaS dimensionar os recursos que eles implantam.
  • Os provedores de IaaS geralmente têm diferentes ofertas de recursos com custos diferentes e seguem um modelo de preços por uso (normalmente calculado por hora).
  • Os mesmos recursos físicos são compartilhados entre vários usuários.

Exemplos de IaaS

Amazon Web Services, Microsoft Azure, Google e Rackspace são exemplos de plataformas de nuvem que oferecem produtos IaaS. O EC2 (Elastic Compute Cloud) do AWS foi um dos primeiros produtos de IaaS comercialmente bem-sucedidos. O AWS EC2 aluga instâncias de vários data centers espalhados pelo mundo. Os usuários podem escolher entre vários tipos de instâncias, desde máquinas virtuais com pouca memória e CPUs que custam alguns dólares por mês, até instâncias de vários núcleos, de alto desempenho e aceleradas por GPU que custam centenas de dólares por mês. O serviço de Máquina Virtual do Azure é semelhante e oferece suporte ao Linux e ao Windows. Em setembro de 2018, aproximadamente metade das máquinas virtuais existentes no Azure eram máquinas virtuais Linux1.

Modelos de preços

O IaaS geralmente é cobrado por hora. Por exemplo, o EC2 oferece um espectro de recursos de computação como instâncias de SO virtualizadas, que variam em computação, memória, armazenamento e largura de banda. No momento da redação deste artigo, uma instância do Amazon EC2 t2.micro, que tem uma CPU virtual e 1 GB de memória, custa cerca de 1,2 centavos de dólar por hora quando executa o Linux. Uma máquina virtual B1S aproximadamente equivalente no Azure custa cerca de 0,8 centavos de dólar por hora. Dentro dos limites, ambos podem ser usados gratuitamente por até 12 meses.

Os provedores de serviços de nuvem também podem optar por cobrar de forma rateada ou não. Em uma base rateada, cada hora parcial é cobrada parcialmente, enquanto em uma base não rateada, cada hora parcial é cobrada como hora completa. Essa diferença se torna significativa quando os usuários de IaaS precisam de um grande número de instâncias por um curto período de tempo para processamento intermitente. Hoje, os provedor de serviços de nuvem populares cobram por segundo pela maioria das máquinas virtuais.

Casos de uso de IaaS

Usar o IaaS faz sentido em várias situações:

  • Para as novas organizações que não têm capital para investir em infraestrutura no local.
  • Quando as organizações precisam aumentar seus recursos de TI rapidamente, como empresas startups da Internet.
  • Para projetos temporários ou necessidades de infraestrutura temporárias (quando as organizações precisam de uma grande quantidade de potência de computação por um período limitado).
  • Quando as organizações movem cargas de trabalho locais para a nuvem executando um "lift-and-shift" de servidores físicos ou virtualizados existentes

A IaaS pode não ser a melhor opção quando:

  • A conformidade regulatória não permite que as cargas de trabalho sejam executadas fora do local.
  • Os aplicativos têm requisitos estritos de QoS (qualidade de serviço).
  • As organizações têm uma infraestrutura personalizada interna existente para atender às suas necessidades de TI.

O modelo de plataforma como serviço

Plataforma como serviço

(definição) PaaS (plataforma como serviço) é um modelo que fornece uma plataforma de software, como um servidor de banco de dados ou servidor Web, sem a complexidade de comprar, instalar e manter o hardware e software subjacentes

A PaaS muda a carga de instalação e manutenção do usuário para o provedor de nuvem. O Banco de Dados SQL do Azure, que é essencialmente uma versão de PaaS do Microsoft SQL Server na nuvem, fornece um ponto de referência útil para comparar a IaaS e a PaaS. Para executar o SQL Server em um cenário de IaaS, você deveria implantar uma máquina virtual e, em seguida, conectar-se remotamente nela e instalar o SQL Server. É claro que você será responsável por adquirir uma licença do SQL Server e manter o SQL Server atualizado. Com o Banco de Dados SQL do Azure, você simplesmente cria uma instância do serviço; o licenciamento e a manutenção são internos.

As ofertas de PaaS variam entre os provedores, mas normalmente apresentam alguma funcionalidade básica, que inclui:

  • Uma interface do usuário baseada na Web para usar e configurar a plataforma.
  • Arquitetura multilocatário em que vários usuários simultâneos utilizam as mesmas ferramentas.
  • Mecanismos internos que permitem que a plataforma seja dimensionada dinamicamente para atender à demanda.

Exemplos de PaaS

O Google App Engine é um exemplo de PaaS. Usando as APIs do Google, os desenvolvedores podem criar aplicativos Web e móveis que são executados na infraestrutura do Google. O Serviço de Aplicativo do Azure é outro exemplo, assim como o AWS Elastic Beanstalk, que fornece uma plataforma gerenciada para hospedar aplicativos desenvolvidos com o Go, Java, .NET, Node.js, PHP, Python e Ruby. Os provedores de nuvem frequentemente oferecem bancos de dados populares, como MySQL, Oracle e SQL Server também como serviços PaaS.

Uma das inovações mais recentes no PaaS é a computação sem servidor, na qual o provedor de nuvem fornece uma plataforma totalmente gerenciada para executar seu código. O Azure Functions, por exemplo, permite carregar código escrito em C#, JavaScript, Java ou Python no Azure e executá-lo em resposta a gatilhos predefinidos. A Amazon oferece um serviço semelhante chamado AWS Lambda, assim como o Google no Google Cloud Functions.

Outro exemplo de PaaS que está ganhando popularidade rapidamente é aquele que executa contêineres do Docker na nuvem. Nesse caso, a plataforma é uma pilha do Docker predefinida. A execução de aplicativos em contêineres dessa maneira impede que você precise implantar servidores, instalar e manter o runtime do Docker. Basta apontar o serviço de contêiner para uma imagem de contêiner em um registro de contêiner e deixar que o provedor de nuvem faça o restante. As plataformas de nuvem modernas dão suporte a registros de contêineres compatíveis com o Docker, o que permite que os contêineres iniciem de forma mais rápida pela colocalização de imagens de contêiner e pelos contêineres que as executam no mesma data center.

Modelos de preços

Ao contrário do modelo de preços da IaaS, que normalmente é cobrado por hora, a PaaS geralmente é cobrada com base no uso. Para simplificar a cobrança e tornar os custos mais previsíveis, os provedores de nuvem normalmente oferecem camadas de serviços que incluem recursos específicos e quantidades de utilização de recursos por um preço especificado mensal ou por hora.

À medida que a PaaS evolui, os modelos de preços também evoluem. Por exemplo, o Azure Functions, o Amazon Lambda e o Google Cloud Functions oferecem um modelo de preços baseado no consumo, no qual você paga apenas pelo tempo em que uma função é executada, e não pelo tempo gasto aguardando a função ser acionada novamente. Isso é extremamente benéfico do ponto de vista de custo para operações que ocorrem com pouca frequência e são executadas por períodos relativamente curtos, como backups noturnos ou execuções de cobrança semanais.

Caso de uso de PaaS

A PaaS é um modelo atraente para determinados tipos de aplicativos, como:

  • Cenários de desenvolvimento rápido de aplicativos.
  • Aplicativos que exigem a infraestrutura baseada na Web para lidar com cargas variadas dos usuários.
  • Aplicativos que podem não precisar de reimplantação ou migração para outras plataformas no futuro.

Há certos cenários no qual a PaaS pode não ser ideal, como:

  • Quando o aplicativo precisa ser altamente portátil em termos de onde ele está hospedado, porque as APIs de PaaS podem variar de um provedor de PaaS para outro.
  • Quando as linguagens ou APIs proprietárias podem afetar o processo de desenvolvimento ou causar problemas no futuro devido ao bloqueio do fornecedor.
  • Quando o desempenho do aplicativo requer a personalização do hardware e do software subjacentes.

O modelo de software como serviço

Software como serviço

(definição) O software como serviço (SaaS) é um modelo de entrega de software no qual o software é hospedado na nuvem. A infraestrutura, a plataforma e o próprio software são gerenciados pelo provedor de nuvem, e o software é consumido como um serviço.

O SaaS é o modelo no qual o provedor de nuvem fornece software como um serviço de Internet e não exige nenhuma instalação de software ou manutenção por parte do usuário. Nos casos em que os aplicativos SaaS são aplicativos de usuário final, os usuários acessam o software por meio de seus navegadores. O navegador carrega a versão mais recente do aplicativo SaaS de forma dinâmica e transparente.

O SaaS se tornou um modelo de entrega de software comum para muitos aplicativos de negócios, incluindo contabilidade, colaboração, CRM (gerenciamento de relacionamento com o cliente), MIS (sistemas de informações de gerenciamento), ERP (planejamento de recursos empresariais), faturamento, HRM (gerenciamento de recursos humanos), CM (gerenciamento de conteúdo), bem como gerenciamento da central de serviços.

Com o SaaS, o provedor mantém o software e a infraestrutura para executá-lo. O provedor desenvolve rotineiramente o software, e os aprimoramentos são disponibilizados automaticamente para todos os usuários sempre que fizerem logon no serviço. Além disso, todos os dados do aplicativo resultantes do uso do serviço residem na nuvem e estão disponíveis para o usuário em qualquer local.

Uma grande maioria das soluções de SaaS baseia-se no que é conhecido como arquitetura multilocatário. Nessa arquitetura, uma única versão do aplicativo, com uma única configuração, é usada para cada cliente (chamado de locatário). Para permitir que o serviço tenha um bom dimensionamento, ele poderá ser instalado em vários servidores no lado do provedor. O dimensionamento dinâmico é utilizado para permitir que mais usuários usem o serviço conforme ele se torna mais popular.

As características típicas de SaaS incluem:

  • Acesso baseado na Web ao serviço de software.
  • O software é gerenciado de um local central pelo provedor de nuvem.
  • O software é fornecido em um modelo de um para muitos, no qual "um" é o provedor de nuvem e "muitos" são os usuários de nuvem.
  • O provedor de nuvem lida com atualizações e patches de software.

Exemplos de SaaS

O Webmail é um dos exemplos iniciais de SaaS. O Webmail permite que os usuários com um navegador e uma conexão com a Internet acessem seus emails em praticamente qualquer lugar e a qualquer momento. As ofertas do Hotmail, do Yahoo! e do Gmail são extremamente populares. Esses serviços são baseados no modelo "freemium", em que os serviços básicos são gratuitos e os recursos mais avançados estão disponíveis com uma assinatura. Além disso, os provedores obtêm receita principalmente de anúncios que são exibidos para os usuários enquanto eles usam o serviço.

Outro exemplo popular de SaaS são os pacotes de escritório online, como o Google Drive e o Microsoft 365, que permite aos usuários criar, editar e compartilhar documentos online. A Google utiliza o modelo freemium para usuários individuais. A Microsoft tem um modelo de cobrança com base nos recursos necessários e no número de usuários por mês.

Os serviços SaaS nem sempre são criados para atender diretamente aos usuários finais, oferecendo interfaces do usuário da Web. Por exemplo, o Azure Stream Analytics e seu análogo da AWS, o Amazon Kinesis Analytics, fazem ingestão de dados transmitindo de aplicativos ou dispositivos IoT e permitem que os desenvolvedores extraiam informações dos fluxos de dados usando consultas SQL. Eles são frequentemente usados para compor soluções de ponta a ponta maiores e mais sofisticadas, unindo-as a outros serviços de SaaS.

Cada vez mais, os provedores de nuvem estão oferecendo APIs, funções que são chamadas pela Internet usando o protocolo HTTP(S) e que servem como blocos de construção para aplicativos, como serviços SaaS. Um exemplo é a API de Pesquisa Visual Computacional do Azure, que permite que os desenvolvedores escrevam códigos que identificam objetos em fotos, geram legendas e metadados de pesquisa para fotos, localizam faces em fotos e muito mais usando a IA (inteligência artificial). A Amazon oferece uma API semelhante chamada Rekognition, enquanto a Google chama sua oferta de API de Vision. As APIs de inteligência oferecidas na forma de serviços SaaS permitem que os desenvolvedores de software incluam a IA em seus aplicativos sem se tornarem especialistas de IA e exemplificam a evolução contínua da computação em nuvem.

Modelos de preços

Ao contrário do software tradicional, que é vendido no modelo de licenciamento de software (com um custo de licença inicial e uma taxa de suporte contínuo opcional), os provedores de SaaS geralmente precificam os aplicativos usando um valor de assinatura mensal ou anual. Esse modelo permite que o SaaS atenda uma das principais vantagens da computação em nuvem: reduzir as despesas de capital ou o custo inicial do software. Os provedores de SaaS normalmente cobram com base nos parâmetros de uso, como o número de usuários que usam o aplicativo.

No caso de APIs entregues usando o modelo de SaaS, a cobrança normalmente é realizada por chamada. Os provedores de nuvem costumam oferecem um determinado número de chamadas ou transações por mês por uma taxa fixa e cobram uma taxa um pouco menor para as atividades que ultrapassarem esse limite.

Caso de uso de SaaS

O SaaS é o modelo correto para determinados tipos de aplicativos, como:

  • Aplicativos com alta padronização e que não exigem soluções personalizadas. Um bom exemplo de um aplicativo bastante padronizado é o email.
  • Aplicativos com uma grande necessidade de acesso móvel/Web/remoto, como softwares móveis de gerenciamento de vendas.
  • Aplicativos com necessidades de curto prazo, como softwares colaborativos para um projeto específico.
  • Aplicativos em que a demanda aumenta bastante, como softwares de cobrança ou de impostos, usados uma vez por mês.

No entanto, há casos em que o SaaS pode não ser a melhor escolha, como:

  • Aplicativos que exigem acesso offline aos dados.
  • Aplicativos que exigem uma personalização significativa.
  • Aplicativos que têm a hospedagem externa de dados impedida por políticas ou regulamentos.
  • Aplicativos cujas soluções internas existentes atendem a todas as necessidades da organização.

Referências

  1. ZDNet (2018). O Linux já domina o Azure. https://www.zdnet.com/article/linux-now-dominates-azure/

Verificar seu conhecimento

1.

O software CRM (gerenciamento de relacionamento com o cliente) é um exemplo de qual camada nos blocos de construção da nuvem?

2.

O software de virtualização é um exemplo de qual camada nos blocos de construção da nuvem?

3.

Uma máquina virtual é um exemplo de qual modelo de serviço de nuvem?

4.

Qual destas é considerada uma característica da IaaS?

5.

O Google App Engine (GAE) é um exemplo de PaaS. Qual das declarações a seguir sobre GAE está incorreta?

6.

Os provedores de serviço de nuvem oferecem runtimes de função, como o Azure Functions, para executar o código que você carrega na nuvem em um ambiente sem servidor. A qual modelo de serviço pertencem os runtimes de função?

7.

Qual das seguintes tarefas é a mais adequada para o Azure Functions, o AWS Lambda e o Google Cloud Functions?