Recém-chegados à computação em nuvem podem ficar um pouco confusos pelo número de siglas em uso, já que há muitas delas. Além disso, quase tudo é vendido como aaS (as a Service) hoje em dia, inclusive transporte, como no caso dos aplicativos de motoristas autônomos. Para tentar esclarecer o que fazem alguns desses serviços ofertados, vamos dar uma olhada nas siglas aaS, como infrastructure as a service (IaaS), platform as a service (PaaS), containers as a service (CaaS) e serverless, também conhecido como function as a service (FaaS).
Para decidir qual dessas opções é a mais indicada para você, um jeito fácil de descobrir é respondendo à seguinte pergunta: quanto dinheiro você tem para gastar?
1 – Começo
|
2 – Quanto dinheiro você tem para gastar?
|
3 – Um caminhão de dinheiro? –– Sim –> Construa seu próprio datacenter
| Não
4 – Muito dinheiro? –– Sim ––> laaS
| Não
5 – Uma boa quantia? –– Sim –> CaaS
| Não
6 – Não muito? –– Não tão pouco ––> PaaS
| Bem pouco
7 – FaaS
Muito dinheiro
Vamos começar com a solução de nvestimento mais alto e seguir baixando valores. Caso você tenha orçamento ilimitado, é possível que nem precise dessas soluções. Você pode comprar a sua própria estrutura, enchê-la de servidores e equipamentos de rede, contratar a sua própria equipe para fazer a instalação, executá-la e mantê-la. Provavelmente, será necessário um sistema de ar-condicionado apropriado também.
Mas esse não deve ser o caso. Até mesmo entidades governamentais com recursos limitados contratam companhias externas para rodar e manter data centers. Por quê? Porque, na verdade, fazer tudo sozinho pode trazer muita dor de cabeça — essa, provavelmente, é uma das razões que deram origem à computação em nuvem. Isso nos leva ao primeiro ponto para discussão: infrastructure as a service.
O oposto de uma infraestrutura em ruínas
IaaS é o que mais se assemelha a ter seu próprio data center. Você pode controlar quantas máquinas quiser dos mais variados tipos, a rede que as conecta (ou as separa) e as maneiras de armazenar seus dados. É possível alugar um hardware em si ou adquirir máquinas virtuais que se comportem exatamente como as físicas. Essa é a alternativa mais cara, mas oferece o maior controle.
Isso resolve a questão de utilidade garantida pelo investimento como um indicador daquilo que mais atende às suas necessidades. Não é sempre que custos são a sua única limitação, mas é uma questão bem importante. Uma decisão mais acertada seria considerar quão complexos são seus objetivos. Podemos também analisar essa perspectiva considerando, por exemplo, o nível de controle que você precisa ter.
Função acima de estrutura
O que você pretende fazer pode ser dividido em pequenos pedaços de código? Em caso afirmativo, uma implementação de function as a service (FaaS) pode ser uma boa escolha. Veja um exemplo de um projeto no qual trabalhei recentemente. Quando um problema GitHub recebia uma label específica, eu queria que um novo repositório fosse criado:
Nesse exemplo, uma ação é executada quando um webhook do GitHub é gerado. Ela verifica se a label procurada foi aplicada e, em caso afirmativo, faz com que uma API solicite ao GitHub a criação do repositório desejado. Isso funciona muito bem como uma função na nuvem, já que se trata de um pequeno código que é acionado por um evento facilmente identificado. Nesse cenário, a economia pode ser grande. Você só é cobrado pelo tempo necessário para a execução de um pedaço de código. Se seu código é executado poucas vezes por dia, a quantia pode se resumir a poucos segundos utilizados.
Chegando à platform as a service
Embora a FaaS possa ser extremamente útil para dividir pequenas tarefas, não é exatamente uma boa opção caso você precise implantar uma aplicação maior ou mais complexa. Platform as a service (PaaS) pode ser a escolha mais adequada. Uma plataforma como a IBM Cloud Foundry permite a você publicar, atualizar e escalar sua aplicação sem se preocupar com o tipo de hardware no qual ela está sendo executada. Você adquire um pouco mais de controle com a PaaS, como a possibilidade de especificar o número de instâncias executadas e a quantidade de memória que pode ser consumida. Com uma PaaS, sua aplicação está sempre rodando, ao contrário da FaaS, na qual seu código só é executado quando necessário. Assim, na PaaS, mais recursos são executados e o preço sobe.
Começo
Sua funcionalidade pode ser facilmente separada em partes pequenas?
Sua aplicação é independente?
Tudo bem dividir kernel?
IaaS
FaaS
PaaS
CaaS
Um bom candidato para implantação utilizando PaaS é o que normalmente chamam de front-end. Essa é a parte exposta ao usuário de uma aplicação na web que se conecta e utiliza outros serviços back-end aos quais um usuário não tem acesso, como o banco de dados.
A aplicação mais popular do repositório Cloud Foundry no GitHub é a spring-music, um app que permite ao usuário pesquisar e editar coleções de músicas. Ela funciona bem para implementação no PaaS, pois pode ser escalada quando necessário enquanto o banco de dados pode ser gerenciado separadamente (sendo um backup resiliente).
Outro ponto importante a se considerar na escolha de um serviço aaS é se a sua implementação precisa ou não salvar o estado. Aplicações stateful acompanham as interações e seu progresso, enquanto as stateless se baseiam em solicitações realizadas, não em acompanhamento de informações. É certamente mais fácil usar um código stateless e aproveitar serviços gerenciados de uma plataforma para solicitar históricos. Se a sua implementação exigir apenas dados utilizados individualmente, containers podem ser a escolha certa.
Contenha sua expectativa
No meio do caminho entre as opções PaaS e laaS, estão os containers as a service (CaaS), nos quais aplicações rodam como em um sistema operante. Como o nome sugere, você implanta um ou mais containers ao contrário de apenas uma aplicação, como no PaaS. Entretanto, não se trata de uma máquina virtual completa, por compartilhar o kernel com outros containers, que têm suas próprias ramificações de segurança. Um grande benefício do CaaS é a habilidade de implantar múltiplos containers ao mesmo tempo que eles trabalham em conjunto uns com os outros. Em uma grande implementação, é possível ter containers separados para o front-end de sua aplicação, seu banco de dados subjacente, capacidade de busca, armazenamento e processamento de log etc. Tudo pode ser gerenciado como um único grupo, chamado de cluster.
O diagrama a seguir mostra um dos exemplos mais simples de uma aplicação em container, chamada da Guestbook.
Ao se dedicar às documentações Kubernetes, implantar uma aplicação Guestbook é o primeiro passo. Trata-se de uma única instância fundamental Redis para armazenar entradas Guestbook, ou seja, várias instâncias Redis replicadas para exibir leituras e várias instâncias voltadas ao front-end. Caso você deseje gerenciar tanto front quanto back-end e também ter controle sobre como ambos se comunicam, a CaaS se alinha muito melhor às suas necessidades.
Você é quem escolhe o que fazer
Apresentar as decisões de progresso de maneira assertiva, como fiz aqui, não é uma abordagem adequada, especialmente porque nenhum dos serviços acima é excludente. Em tempos de microsserviços, misturar algumas das opções ou utilizar todas elas ao mesmo tempo é perfeitamente possível se isso o auxiliar a alcançar a implementação desejada. Você pode até hospedar um container como uma função de nuvem. É possível que a função desejada nem sempre seja executada, trazendo instabilidade. Ainda assim, é algo viável. As possibilidades são tão numerosas quanto as siglas utilizadas para implementá-las.
Esperamos que, agora, você tenha uma boa noção de onde começar a sua jornada pela nuvem.
...
Quer ler mais conteúdo especializado de programação? Conheça a IBM Blue Profile e tenha acesso a matérias exclusivas, novas jornadas de conhecimento e testes personalizados. Confira agora mesmo, consiga as badges e dê um upgrade na sua carreira!
Categorias