IaaS, CaaS, Pass, SaaS ou FaaS. Qual a melhor opção ?

As abstrações são os blocos de construção fundamentais da computação. Quando criamos uma aplicação Web, não escrevemos código de máquina ou construímos pacotes TCP/IP. Nós usamos linguagens de alto nível tal como Java ou Javascript para enviar e receber mensagens HTTPS. Na infraestrutura computacional usamos também as abstrações. Em 1972 já se tinha sistema operacional baseado em máquina virtual, que é uma abstração da computador real. Hoje em dia toda a infraestrutura da Internet, dos Data Centers e da Nuvem computacional pública (Amazon AWS, Azure, Google Cloud, DigitalOcean, etc) são construídas sobre abstrações. 

Os termos IaaS, CaaS, PasS, SaaS e FaaS referem-se a tipos de serviços de computação fornecidos na nuvem com modelo de pagamento flexível dependendo da utilização. Estes tipos diferem fundamentalmente em seu nível de abstração de recursos computacionais. As três últimas letras dos acrônimos significam As A Service, ou seja, Como Serviço e a primeira letra significa o nível de abstração desejado: I para infraestrutura, C para Contêiner, P para plataforma, S para Software e F para Função. E qual a importância de conhecer a diferença entre estes modelos de serviço na nuvem ? Conhecer ajuda a escolher a melhor opção para solucionar um dado problema, já que existem vantagens e desvantagens em cada uma dessas abordagens, e é necessário a avaliação da relação custo/benefício para cada projeto.

Modelos de Serviços Nuvem

A figura acima mostra em azul tudo que é responsabilidade do provedor de serviço de nuvem e em cinza tudo que é responsabilidade do cliente em termos de gestão. Em verde está o ponto de entrada do cliente. No caso da Infraestrutura como serviço (primeira coluna à esquerda) o administrador da infraestrutura por parte do cliente escolhe e instala o sistema operacional (em verde na figura) e portanto terá responsabilidade de gerir todos os recursos que porventura venha instalar no Sistema Operacional escolhido, mas a Virtualização e o Hardware (Discos, Rede, CPU, etc) são gerenciados pelo provedor de nuvem. Num cenário de aplicação Serverless, por exemplo, podemos ter a configuração mostrada na figura onde a aplicação usa Functions sobre um ambiente de Runtime Serverless rodando sobre contêineres Docker no Sistema Operacional escolhido. O custo de Gestão de Infraestrutura neste caso é o mais alto dentre todos os modelos escolhidos mas a contrapartida é o controle total por parte do cliente de todos os recursos que aparecem em cinza. 

IAAS

A opção IaaS pode ser boa para pequenos projetos onde seja necessário um maior controle sobre o processo e que não necessite de balanceamento de carga das cargas de trabalho (workload). Porém no caso do cliente precisar de um cluster na nuvem numa aplicação de BigData esta opção adiciona custo de gestão do orquestrador de contêineres (Kubernetes, por exemplo) e passa a ser mais vantajoso escolher o modelo CaaS, fornecido pelos principais players de Nuvem. Considerando este último exemplo com aplicação BigData quando usamos o modelo IaaS, o cliente do serviço de nuvem deve instalar e configurar o Docker e o orquestrador de contêineres Kubernetes em todos os hosts. Isto não é um trabalho fácil e pode requerer muitas horas de trabalho árduo, dependendendo do Sistema Operacional escolhido, e da versões do Docker e Kubernetes. Além disso existe um custo de manutenção da plataforma (CAPEX), que não é desprezível. 

CaaS

Por outro lado (no modelo CaaS), num serviço gerenciado de contêineres como o GKE (Google Kubernetes Engine) ou AKS (Azure Kubernetes Service) é possível criar um cluster gerenciado e elástico com pouquíssimos comandos, e à partir daí todo o gerenciamento fica por conta do provedor de nuvem. 

Todos os profissionais de TI adoram contêineres pois oferecem muita liberdade no trabalho do dia-a-dia, permitindo empacotar um aplicativo com todas as suas dependências em um package fácil-de-mover (easy-to-move) facilitando o trabalho dos desenvolvedores e operadores. A diminuição de custos de gerenciamento da plataforma é espantosa e agrada a direção das empresas. 

Veja abaixo um exemplo de criação de Cluster elástico na nuvem da Google gerenciado com Kubernetes. Este exemplo demonstra a simplicidade da solução e como é fácil iniciar um projeto no modelo CaaS.

Kubernetes na GCP

PaaS

Na terceira coluna da figura temos o PaaS, que difere do CaaS por fornecer, além dos contêineres, o ambiente de Runtime gerenciado. Obviamente perde-se flexibilidade pois a aplicação deve ser escrita para aquele runtime específico, como por exemplo o AWS Elastic Beanstalk, Heroku ou GAE (Google App Engine).  O GAE por exemplo impõem algumas restrições sobre as tecnologias e linguagens de programação usadas na aplicação para que possa rodar na nuvem. A grande vantagem desta abordagem é a elasticidade do serviço. O gerenciamento exige menos recursos do cliente quando comparado ao modelo CaaS, ou seja perde-se flexibilidade mas economiza-se com a gestão da infra-estrutura.

SaaS

O modelo SaaS não exige nenhum esforço do cliente da nuvem, basta apontar o browser para a URL e usar. Os exemplos mais conhecidos são Google Drive, Google Docs, Office 365, Dropbox e Salesforce. A responsabilidade pelo gerenciamento é toda do provedor de nuvem e o único inconveniente são as limitações do modelo de domínio. O cliente não tem acesso às fontes dos aplicativos e ficam limitados a uso de plugins para adicionar funcionalidade. Neste caso pode ser necessário promover uma mudança cultural na empresa e modificações nos processos internos para se adequar às funcionalidades disponíveis no serviço SaaS. Em muitas situações isto é possível e ocorre uma diminuição considerável de custos para as empresas. O Salesforce, por exemplo, fornece serviço de gerenciamento de relacionamento com o cliente (CRM) além de um conjunto complementar de aplicativos corporativos focados no atendimento ao cliente, automação de marketing, etc. num licenciamento flexível por usuário cadastrado. Isto permite que pequenas e médias empresas usem a plataforma sem precisar licenciar um caríssimo software de CRM e arcar com a gestão da infraestrutura relacionada. Entretanto certos negócios não podem usar este modelo pois o custo de adaptação de seus processos às limitações impostas pelo software não compensa a economia com Infraestrutura de TI.

FaaS

O último e mais recente modelo de serviço de nuvem é o FaaS (Functions as a Service). As funções como serviço são o nível mais alto de abstração disponíveis no momento, mas pode ser que surjão no futuro modelos ainda mais abstratos. As arquiteturas FaaS e Serverless (sem servidor) ainda são um conceito relativamente novo para muitos desenvolvedores e setores de TI. À medida que as plataformas amadurecem e a adoção aumenta, os desenvolvedores criam funções de código (aberto ou fechado) que outros desenvolvedores poderão usar em seus aplicativos. Essas funções pré-criadas usarão os serviços FaaS existentes e abstraem o código dos desenvolvedores.

FaaS não é a mesma coisa que computação serverless, na verdade FaaS é mais um tipo de  computação serverless. O que caracteriza o modelo FaaS é o fato de a unidade de deploy na nuvem ser a Function e além disso as functions podem ser invocadas por eventos. Outros serviços de computação serverless conhecidos são: serverless HTTP applicationsserverless containers que podem ser implementadas nas nuvens Azure ou Google Cloud Platform.

Conclusão

Neste artigo definimos os termos IaaS, CaaS, PasS, SaaS e FaaS que se referem aos tipos de serviços de computação fornecidos pelos provedores de nuvem. Eles implementam níveis diferentes de abstrações de recursos computacionais e certamente cada aplicação da empresa, que esteja sendo migrado do deploy on-premise para a nuvem publica, pode se encaixar em um desses modelos descritos, considerando os requisitos de escalabilidade, elasticidade, confiabilidade, disponibilidade e segurança da informação definidos para o projeto de migração.

Ou seja, o Azure, AWS e Google Cloud Platform oferecem estas opções de computação e hospedagem, ou tipos de serviços de computação que incluem principalmente:

  • trabalhar em um ambiente sem servidor (FaaS);
  • usar uma plataforma de aplicativos gerenciados (PaaS);
  • aproveitar as tecnologias de contêiner para ter mais flexibilidade (CaaS);
  • criar a própria infraestrutura na nuvem para ter mais controle e flexibilidade (IaaS).

A escolha correta depende do fato de que de um lado, boa parte das responsabilidades pelo gerenciamento de recursos seja sua e, de outro, o provedor de nuvem é quem cuide da maioria delas. Isso implica que uma escolha errada para aumentar e muito os custos envolvidos se considerarmos, é claro, o custo total de propriedade (TCO).

Para comentar este post clique aqui e faça scroll para o fim do artigo. Nós apreciamos seu comentário e isso nos ajuda a melhorar o conteúdo no site

0 respostas

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *