LFCA: Aprenda Computação Sem Servidor, Benefícios e Armadilhas – Parte 15

A tecnologia Serverless gerou muita expectativa na comunidade de tecnologia, provocando muita curiosidade e recebendo algum backlash em pequena medida. É uma tecnologia que começou com o lançamento do AWS Lambda em 2014, que logo foi seguido pelo Azure Functions posteriormente em 2016.

O Google posteriormente seguiu o exemplo com o lançamento das funções do Google Cloud em julho de 2018. Então, o que é a tecnologia serverless? Para responder melhor a essa pergunta, vamos voltar à computação tradicional baseada em servidores.

No modelo de TI tradicional, você estava encarregado basicamente de tudo. Como proprietário de um negócio, você teria que orçar para servidores e outros equipamentos de rede, como roteadores e switches, e racks para a montagem dos servidores.

Você também teria que se preocupar em obter um centro de dados impecável e seguro e garantir que ele possa fornecer refrigeração suficiente e energia e serviço de internet redundantes. Uma vez configurado, você teria então que instalar o sistema operacional e, posteriormente, implantar suas aplicações. Além disso, seria necessário configurar sistemas de monitoramento e implementar recursos de segurança, como firewalls e sistemas de prevenção e detecção de intrusões.Como você deve ter imaginado, isso é intensivo em recursos, custoso e desgastante.

Como você deve ter adivinhado, isso é intensivo em recursos, caro e desgastante.

Então computação em nuvem entrou no mundo da tecnologia, revolucionando completamente a maneira como implantamos e gerenciamos servidores e aplicativos. Isso marcou uma nova era em que os desenvolvedores rapidamente criariam servidores e bancos de dados na nuvem e começariam a trabalhar em seus aplicativos. Sem preocupações com problemas associados a computação tradicional de TI, como tempo de inatividade, equipamentos caros e aluguel de datacenters.

Embora a computação em nuvem trouxesse a conveniência e economias de escala na implantação de recursos de TI, algumas empresas adquiririam unidades de espaço em servidor e recursos como RAM e CPU em antecipação a um aumento na rede ou atividade que poderia sobrecarregar aplicativos.

Embora seja um movimento prudente, o resultado não intencional é a subutilização de recursos de servidor que muitas vezes são desperdiçados. Mesmo com dimensionamento automático, ainda assim um aumento inesperado e repentino poderia ser caro. Além disso, você ainda precisaria realizar outras tarefas, como configurar balanceadores de carga, que também provavelmente aumentariam os custos operacionais.

É evidente que, apesar de fazer a transição para a nuvem, ainda persistem alguns gargalos que têm o potencial de aumentar os custos e causar desperdício de recursos. E é aí que entra o computação sem servidor.

O que é Computação sem Servidor

Computação serverless é um modelo de nuvem que fornece serviços de backend aos usuários com base no pagamento conforme o uso. Em termos simples, o provedor de nuvem aloca recursos de computação e cobra apenas pelo tempo em que as aplicações estão em execução. Isso é equivalente a mudar de um plano mensal para pagamento de TV a cabo para pagar apenas quando você está assistindo aos seus programas de TV.

O termo ‘serverless’ pode ser um pouco enganador. Existem servidores envolvidos? Com certeza, no entanto, neste caso, os servidores e a infraestrutura subjacente são totalmente tratados e mantidos pelo provedor de nuvem. Como tal, você não precisa se preocupar com eles. Como desenvolvedor, seu foco é puramente desenvolver suas aplicações e garantir que elas estejam funcionando conforme sua satisfação.

Ao fazer isso, a computação serverless elimina a dor de cabeça de gerenciar servidores e economiza seu precioso tempo para trabalhar em suas aplicações.

Serviços de Backend Fornecidos pela Computação Serverless

A perfect example of serverless backend service is Function-as-a-Service (FaaS) platform. FaaS is a cloud computing model that enables developers to develop, execute, and manage code in response to events without the complexity of building and managing an underlying infrastructure usually associated with the deployment of microservices.

FaaS é uma subcategoria da computação serverless com diferenças sutis. A computação serverless engloba uma ampla gama de serviços, incluindo computação, banco de dados, armazenamento e API, para citar alguns. FaaS está focado exclusivamente em um modelo de computação orientado a eventos, onde as aplicações são executadas sob demanda, ou seja, em resposta a uma solicitação.

Exemplos de modelos de computação FaaS incluem:

  • AWS Lambda da AWS
  • Azure Functions da Microsoft
  • Cloud Functions do Google
  • Cloudflare Workers da Cloudflare

Em resumo, vimos que com FaaS, você paga apenas pelo tempo que sua aplicação está em execução e o provedor de nuvem basicamente faz tudo por você, incluindo o gerenciamento da infraestrutura subjacente. Gerenciar servidores é a menor de suas preocupações.

Benefícios da Computação Serverless

Agora, você tem uma boa ideia de alguns dos méritos que a computação serverless traz para a mesa. Vamos aprofundar nas vantagens de adotar a tecnologia.

1. Sem Gerenciamento de Servidores

Este é talvez um dos maiores benefícios de adotar o modelo de computação serverless. Embora o termo ‘serverless’ possa ser mal interpretado para implicar que não há servidores envolvidos, o fato é que as aplicações ainda são executadas em servidores. A essência da questão é que o gerenciamento de servidores é inteiramente responsabilidade do fornecedor de nuvem, o que lhe proporciona mais tempo para trabalhar em suas aplicações.

2. Escalabilidade Fácil e Eficiente

A infraestrutura serverless fornece escalonamento automático de aplicações em resposta a um aumento no uso, demanda ou crescimento da base de usuários. Se a aplicação estiver sendo executada em várias instâncias, os servidores iniciarão e pararão quando necessário. Em um setup tradicional de computação em nuvem, um pico de tráfego ou atividade pode facilmente sobrecarregar os recursos do servidor, levando a inconsistências na execução da aplicação.

3. Disponibilidade Incorporada

Como desenvolvedor, você não precisa construir nenhuma infraestrutura especial para tornar suas aplicações altamente disponíveis. A computação serverless oferece alta disponibilidade integrada para garantir que suas aplicações estejam em funcionamento quando necessário.

4. Redução dos Custos Operacionais

A computação serverless aloca recursos com base no pagamento pelo uso. Sua aplicação só precisará de funções de backend quando o código for executado e dimensionará automaticamente com base na carga de trabalho.

Isso proporciona economia de escala, pois você é cobrado apenas pelo tempo em que as aplicações estão em execução. No modelo de servidor tradicional, você tem que pagar pelo espaço do servidor, bancos de dados, entre outros recursos, independentemente de a aplicação estar em execução ou ociosa.

5. Implantações Mais Rápidas de Aplicações

A arquitetura serverless elimina a necessidade de configuração de backend e de upload manual de código para servidores, como na configuração tradicional. É fácil para os desenvolvedores fazerem o upload de pequenos trechos de código de maneira eficiente e lançar um ótimo produto.

A facilidade de implantação também permite que os desenvolvedores corrijam e atualizem facilmente determinados recursos do código sem alterar toda a aplicação.

Desvantagens da Computação Serverless

Existem algumas desvantagens associadas ao modelo serverless? Vamos descobrir.

1. Segurança

As aplicações mal configuradas representam um dos maiores riscos associados à computação serverless. Se optar pelo AWS, por exemplo, é prudente configurar diferentes permissões para sua aplicação, o que, por sua vez, determinará como elas interagirão com outros serviços dentro do AWS. Quando as permissões são vagas, uma função ou serviço pode ter mais permissões do que o necessário, deixando espaço amplo para violações de segurança.

2. Bloqueio do Fornecedor

Optar por um modelo serverless pode apresentar desafios ao migrar para outro fornecedor. Isso ocorre principalmente porque cada fornecedor possui seus próprios recursos e fluxos de trabalho que variam ligeiramente dos demais.

3. Dificuldade em Testar e Depurar Aplicações

Outro desafio apresentado pelo modelo serverless é a dificuldade em reproduzir um ambiente serverless para testar e monitorar o desempenho do código antes de ser lançado. Isso ocorre principalmente porque os desenvolvedores não têm acesso aos serviços de backend, que são um privilégio do provedor de nuvem.

4. Dificuldade em Monitorar Aplicações Serverless

Monitorar aplicações serverless é uma tarefa complexa pelos mesmos motivos pelos quais a depuração e teste são uma tarefa difícil. Isso tem sido agravado pela falta de ferramentas com integração aos serviços de backend, como o AWS Lamba.

Conclusão

A computação serverless continua a ganhar tração e aceitação entre empresas e desenvolvedores por 3 razões-chave. Uma delas é a acessibilidade, o que implica custos operacionais reduzidos. Em segundo lugar, a computação serverless facilita o escalonamento automático e rápido, e, finalmente, os desenvolvedores não precisam se preocupar com a infraestrutura subjacente, que é tratada pelo fornecedor.

Enquanto isso, os provedores de nuvem estão trabalhando incansavelmente para abordar algumas das armadilhas associadas à computação serverless, como a dificuldade em depurar e monitorar aplicativos.

Source:
https://www.tecmint.com/serverless-computing/