Ir para o conteúdo

Serverless Computing – Prós e Contras

serverless

Como saber se serverless é a solução ideal?

A procura de serviços de computação tem sido uma constante ao longo dos últimos tempos, com muitos países…, com muitos países em desenvolvimento a registar novos e-commerces de rápido crescimento, mas sem capacidade de lidar com a infraestrutura necessária para executar essas aplicações e plataformas num ritmo tão rápido. É aqui que uma abordagem como serverless é benéfica.

Para efeitos deste texto, iremos focar-nos apenas nas soluções serverless (vulgarmente designadas por Function-as-a-Service), especificamente nas vantagens que podem trazer aos seus clientes e também em algumas desvantagens que podem transmitir.

Function as a Service (FaaS) é o mais comparado a uma arquitetura serverless, permitindo que os utilizadores executem partes do código acionado por eventos, podendo fazer parte dele, sem representar todo o sistema. O FaaS é, essencialmente, a parte de serverless focada em computação, que contém mais serviços como armazenamento de objetos, gateways HTTP, funções sob demanda (FaaS), armazenamento de dados (de vários tipos), filas e muitos outros serviços.

Nas próximas secções deste artigo veremos uma lista de vantagens e cuidados que deve ter em consideração ao planear a sua implantação.

Os Prós

  • Redução de custos

A redução de custos é uma das maiores vantagens de adotar uma solução serverless. O cliente é cobrado através do modelo “pay-as-you-go”, ou seja, não há custos quando os serviços não estão em uso. Desta forma, as empresas reduzem os custos iniciais em hardware ao ter a sua infraestrutura implementada e gerida pelo fornecedor de cloud ao mesmo tempo que conseguem reduzir os custos com recursos humanos, pois a necessidade de engenheiros de infraestrutura são reduzidos ao mínimo.

  • Sem requisitos de infraestrutura

Neste tipo de arquitetura, não é necessária nenhuma gestão de servidor. Embora a arquitetura de serverless computing esteja hospedada em servidores reais, os programadores não precisam de lidar com eles, porque os servidores são geridos pelo fornecedor, o que facilita o redimensionamento de aplicações à medida. O objetivo desta solução é aliviar os programadores da preocupação com provisionamento, gestão e patches em servidores de back-end.

  • Escalabilidade

Serverless oferece uma maior escalabilidade, mais flexibilidade e tempos de entrega mais rápidos a um custo reduzido. A infraestrutura escala automaticamente à medida que o uso e o número de utilizadores aumentam.

Como as soluções serverless executam funções apenas quando necessário, elas são capazes de lidar com a mesma eficiência uma única solicitação de um único utilizador ou com um número excepcionalmente alto de solicitações.

  • Código

Ao usar uma coleção de funções oferecidas pelo fornecedor como fonte para executar uma aplicação, os programadores têm mais facilidade quando precisam de atualizar, corrigir, criar patches ou adicionar novos recursos. Desta forma, eles podem fazer upload do código de uma só vez ou uma função de cada vez. Isto resulta em tempos de implementação e atualização menores.

  • Linguagens de programação

Existem várias linguagens de programação suportadas pelos diferentes fornecedores de cloud e os programadores podem escolher, com base na sua preferência, uma linguagem para escrever o seu código. Ao usar o FaaS, estas linguagens podem estar bloqueadas para uma versão específica, no entanto, existe a opção de usar o CaaS, que permite ao utilizador escolher o tempo de execução preferido.

  • Time-to-Market

Ao adotar uma arquitetura serverless, os programadores deixam de ter de se preocupar com a gestão da infraestrutura, e podem concentrar-se no mais importante para eles, como resolver os problemas relatados pelos clientes, trabalhar em novos recursos e focar-se na experiência do utilizador, diminuindo assim o tempo de chegada ao mercado, pois as aplicações serão corrigidas e implementadas mais rapidamente.

  • Event-driven

Serverless existe sem estado, ou seja, executa uma tarefa e não armazena ou reutiliza nenhuma solicitação. Cada parte da aplicação é independente e os eventos acionam-se uns aos outros. Se houver uma falha, ela afetará apenas esse evento e não o log inteiro.

  • Computação mais ecológica

Nos últimos anos, houve um aumento maciço no tamanho e no número de data centers em todo o mundo. Aos recursos necessários para construção destas instalações, acresce ainda os gastos energéticos associados, sendo grande parte destes gastos desnecessariamente com servidores parados. No entanto, os fornecedores têm investido amplamente em opções de energias renováveis com a intenção de reduzir o a dependência da queima de combustível fóssil.

Os Contras

  • Aplicações de longa duração

Esta solução pode não ser a mais adequada para aplicações com processos de execução longos, pois seria menos económica. Ser cobrado à hora por funções que estão constantemente em execução e com uma carga de trabalho previsível poderá tornar-se mais caro do que os setups tradicionais. Também não existe a portabilidade da arquitetura e uma migração significaria começar do zero.

A migração de aplicações legacy para uma infraestrutura totalmente nova com uma arquitetura totalmente diferente pode apresentar um desafio proibitivamente difícil que não justifica o tempo e esforço necessários.

A forma como alguns fornecedores abordam tarefas é estabelecendo um tempo máximo para as funções terminarem, por exemplo, cinco minutos por função – se até então a tarefa não for concluída, começa um nova com um novo cronómetro e assim em diante até que a tarefa esteja concluída. O número de funções simultâneas também é limitado, por isso se existirem muitas em execução ao mesmo tempo, a aplicação poderá sofrer uma “negação de serviço” (DoS).

Por todos esses motivos, para além das aplicações que são projetadas desde o início para uma arquitetura serverless, estas plataformas geralmente são usadas como apoio aos servidores internos, para executar tarefas que exigem grandes recursos computacionais.

  • É altamente opinativo

Ao adotar uma arquitetura serverless com um fornecedor, o cliente aumenta a dependência nesse fornecedor específico. Há pouca padronização entre plataformas, cada fornecedor tem recursos e fluxos de trabalho diferentes, portanto, não é fácil simplesmente mudar de um fornecedor para outro conforme o desejo do cliente.

A parte mais difícil da migração para serverless não são as funções de computação, mas, na verdade, a maneira como as aplicações comunicam com os sistemas conectados, como armazenamento de objetos, gestão de identidade e filas. As funções podem ser facilmente movidas, mas o restante da aplicação não é facilmente portátil, o que pode se tornar mais caro e menos ágil do que o esperado.

  • Cold start

Um problema que os clientes podem enfrentar quando a sua aplicação não é usada por algum período de tempo é o Cold Start – as funções iniciam-se muito lentamente pela primeira vez. Isso pode ser agravado com o tamanho do código destas funções, por isso manter o código conciso pode ajudar a reduzir o impacto dos arranques a frio, mas os programadores podem discordar, pois a gestão de várias funções menores pode tornar-se um inconveniente.

  • Múltiplos inquilinos

Uma arquitetura serverless envolve a execução de várias instâncias de software para vários clientes diferentes numa infraestrutura “partilhada”. Por vezes, ainda que não seja frequente, as soluções com múltiplos utilizadores podem levar a alguns problemas de segurança (como um cliente ser capaz de aceder aos dados de outro), robustez (o software de um cliente causar falhas no software de outro) e desempenho (aumento das solicitações num cliente que obriguem outro a desacelerar).

  • Debug

Fazer debug do código executado no FaaS não é uma tarefa fácil, pois alguns fornecedores não fornecem as ferramentas necessárias para ajudar nessa tarefa. Esta ainda é uma área em melhoria e os fornecedores já voltaram a sua atenção para esse problema e neste momento, estão ativamente a trabalhar para encontrar uma solução para o enfrentar.

  • Monitorização e observabilidade

O mesmo vale para os recursos de monitorização. Embora os fornecedores ofereçam aos clientes algum suporte, inevitavelmente, os clientes estão dependentes da quantidade de dados que os fornecedores disponibilizam, o que pode não ser ideal para alguns clientes para os quais é essencial supervisionar as suas aplicações na totalidade.

  • Educação

Com qualquer nova tecnologia, é preciso formação e treino, o que acarreta custos financeiros e de tempo. Os programadores precisam de aprender a utilizar as novas plataformas, ambientes e infraestruturas e os novos métodos de como implantar o seu código.

Veredicto

Com toda a informação mencionada neste artigo, deixaremos o leitor fazer suas próprias conclusões sobre esta tecnologia e os desafios específicos que ela pode resolver. Esta tecnologia ainda está em desenvolvimento e, portanto, aqui fica a nossa visão sobre o que podemos esperar dela no futuro.

Serverless, como vimos, não é uma abordagem perfeita para todos os tipos de aplicações. Existem casos de uso específicos em que traz grandes vantagens para a mesa e outros em que uma abordagem tradicional será a melhor escolha. É uma ferramenta que está disponível para utilizar e combinar com todas as outras ferramentas da caixa de ferramentas de computação em cloud.

Ao adotar uma mistura de arquiteturas serverless e on-prem, os programadores podem facilmente adaptar parte das suas aplicações às suas necessidades e evitar a gestão da infraestrutura quando não for necessário.

Esta tecnologia ainda tem muito espaço para evoluir ao longo dos anos, graças ao investimento dos fornecedores e mais frameworks estão a ser desenvolvidas e já existe um maior suporte às já existentes.

Descubra ainda tudo o que precisa de saber para fazer uma transformação dos seus processos digitais neste artigo!