Header Ads

O que é computação sem servidor e quando você deve usá-la?

A computação sem servidor é um novo paradigma de codificação que permite executar código sem configurar servidores. Ele está sendo oferecido como um serviço por muitos provedores de nuvem, incluindo Amazon e Google. Sobre o que é todo esse hype?

O que é sem servidor?

“ Sem servidor ” é um nome ligeiramente impróprio — seu código ainda será executado em um servidor em algum lugar. Você simplesmente não precisará se preocupar com isso, porque o metal em que ele funciona será totalmente gerenciado para você “ na nuvem ” deixando você se concentrar exclusivamente no software. Esse é o fascínio das soluções sem servidor; cortar o custo de gerenciamento de servidores economiza dinheiro, tanto o custo de mão de obra dos administradores de sistemas quanto o custo de execução de um VPS, especialmente um que pode ser mais do que você precisa.

Sem servidor é uma categoria ampla, mas a maioria dos serviços incluirá três coisas principais:

  • Nenhum servidor para gerenciar (obviamente).
  • Escalonamento automático sem configuração extra. Como o código é executado em pequenos contêineres, é fácil acionar vários contêineres em paralelo.
  • Faturamento pago por uso. Isso pode tornar o código sem servidor mais barato do que uma solução tradicional baseada em VPS, já que você provavelmente não está operando aquele VPS com carga máxima o tempo todo.

Isso torna o sem servidor um modelo competitivo baseado apenas no custo. Para um site como o Bustle, a mudança para o AWS Lambda proporcionou uma economia de 84% em relação à arquitetura antiga. O escalonamento de soluções sem servidor é muito mais linear, porque você não terá que pagar por instâncias de servidor individuais.

PaaS vs. FaaS

É importante esclarecer a diferença entre PaaS e FaaS “ sem servidor ” modelos, porque o marketing para cada tipo é basicamente o mesmo.

A plataforma como serviço (PaaS) corta os servidores, mas não altera o código subjacente ou impõe novas práticas de codificação. Isso geralmente é feito por meio de contêineres como Docker, onde instantâneos de seu aplicativo podem ser implantados muito rapidamente em vários servidores. Com alguns serviços, como AWS Fargate e Azure Container Instances, você não precisa se preocupar com os servidores, tornando-os “ sem servidor. ” Com outros serviços, como o Heroku, você ainda é cobrado por servidor, mas não precisa se preocupar em configurá-lo sozinho, e escalar em várias instâncias é fácil.

Função como serviço (FaaS) elimina totalmente a ideia de servidores. Em vez disso, seu código é acionado, executa uma função rápida e cobra pela memória e pelo tempo de computação que você usou. Os modelos FaaS reforçam a ideia de “ microsserviços, ” dividir seu aplicativo em suas partes componentes e desenvolver cada uma individualmente. Isso não funciona para tudo, mas quando funciona, pode acelerar bastante o desenvolvimento e a manutenção em comparação ao tradicional “ monolítico ” designs de aplicativos. AWS Lambda, Google Cloud Functions e Azure Functions são todos modelos FaaS.

FaaS é geralmente considerado como “ sem servidor ” calcular, embora talvez esse não seja o termo mais descritivo para isso. “ Microsserviços ” é muito mais representativo das ideias por trás de FaaS e “ serverless ” modelos. Você ainda pode criar microsserviços com serviços PaaS, mas o FaaS força você a fazê-lo.

Onde os microsserviços brilham

Imagine que seu aplicativo é um aplicativo grande e monolítico, com muitas partes móveis diferentes.

Todas essas partes do seu aplicativo se comunicam e dependem umas das outras para fazer tudo funcionar. Mas é complicado, tudo está entrelaçado e o gerenciamento de dependências se torna uma dor. Se você deseja ter várias equipes trabalhando em partes diferentes do aplicativo, vocês ficarão batendo os ombros uns nos outros com frequência.

Um modelo de aplicativo baseado em microsserviços divide tudo em seu próprio serviço. Eles ainda podem ser executados na mesma máquina, mas talvez você queira empacotá-los com o Docker para serem executados em servidores separados ou escaloná-los em um cluster com Kubernetes. Isso é muito mais fácil de fazer quando você pode dimensionar uma peça separadamente das outras.

Isso pode ser dividido ainda mais com os provedores FaaS, onde agora esses blocos de construção podem ser funções únicas em vez de serviços inteiros. Por exemplo, você pode ter uma função para redimensionar imagens automaticamente para dispositivos diferentes, como o Seattle Times usa Lambda para. Você pode construir funções separadas para cada endpoint da API REST e deixar de executar um servidor de API por completo.

Obviamente, este modelo não funciona para todos os aplicativos. Algumas coisas não foram projetadas para serem divididas, e fazer isso retroativamente pode ser uma dor enorme. Mas quando funciona, você pode acabar com um aplicativo muito estruturado que é mais fácil de consertar quando começa a quebrar.

Microserviços Aren &’ t Sempre mais simples

Os microsserviços são mais limpos e, quando você coloca tudo para fora, eles parecem muito mais bonitos do que o design monolítico bagunçado que muitos aplicativos usam. Mas alguém precisa projetar toda essa estrutura.

Construir um aplicativo baseado em microsserviços coloca muita pressão em seu ciclo de DevOps, especialmente ao planejar tudo. Embora você possa inicializar um aplicativo monolítico e construir tudo à medida que avança, os microsserviços exigem um planejamento cuidadoso desde o início. Isso requer bons arquitetos e boa comunicação com o resto da equipe sobre a estrutura do aplicativo.

E com mais serviços vêm mais coisas para monitorar, depurar e manter. Se você tiver apenas uma pequena equipe de desenvolvimento, tentar criar e corrigir muitos serviços de uma vez pode ser muito difícil.

O FaaS especificamente também força o aprisionamento do fornecedor. Embora você geralmente possa pegar uma imagem Docker e implantá-la em um provedor diferente, construir seu aplicativo em um serviço como o Lambda força você a usar o Lambda apenas para hospedar seu aplicativo. Você fica preso ao ecossistema e, de repente, não está mais escrevendo o código JavaScript, mas sim o código Lambda. Você ainda tem controle sobre o que escreve, por isso é possível portá-lo para outro serviço, mas se desconectar de um serviço do qual você depende geralmente é mais difícil do que parece.

Além disso, os serviços FaaS geralmente não foram projetados para serem executados 24 horas por dia, 7 dias por semana. Se você estiver usando as funções do Lambda para construir um aplicativo que esteja constantemente acionando as funções do Lambda, sua conta será mais alta do que apenas pagar por um VPS.

Quando e quando não usar sem servidor

Os serviços PaaS como o AWS Fargate simplesmente executam aplicativos em contêineres sem incomodá-lo sobre o metal em que estão sendo executados. Você poderia mudar toda a sua infraestrutura de aplicativo para um serviço como este sem problemas. Além disso, com PaaS vem fácil clustering, e adotar alguns ideais do modelo de microsserviços pode ajudá-lo a melhorar a escalabilidade de seu aplicativo sem muita reestruturação.

Os serviços FaaS são mais complicados. Eles não são adequados para tudo, mas são muito úteis quando usados ​​corretamente. Eles são ótimos para serviços de back-end simples e leves que não precisam de muita configuração ou de um VPS inteiro para executá-los. Você pode usá-los como complementos para seu aplicativo existente e, embora possa construir um aplicativo completo baseado em microsserviços usando apenas funções de nuvem sem servidor, essa decisão é muito mais complexa.

Mas o dinheiro também é um fator importante e, embora os microsserviços e os modelos de aplicativos sem servidor possam ser mais difíceis de planejar, se você conseguir fazer isso, economizará muito dinheiro.

O AWS Lambda também é muito útil em conjunto com outros serviços da AWS. As funções do Lambda podem ser acionadas com base em ações em sua infraestrutura AWS, como a execução automática de uma função quando um arquivo é colocado em um bucket S3. Se você já está usando os serviços da AWS, o Lambda pode ser uma ótima ferramenta de automação.

Nenhum comentário