O que é sem servidor?

42

Todos os provedores de nuvem estão comercializando suas soluções "sem servidor". A promessa é que o servidor não substituirá a maneira como os desenvolvedores atualmente desenvolvem seu software e as operações o gerenciam na produção.

O que é "sem servidor"? Onde podemos aprender mais sobre isso e como ele pode ser usado hoje?

Evgeny
fonte
computação sem servidor é "menos servidor", pois um "hambúrguer de frango" é vegano porque você não conheceu pessoalmente o frango
Sai Addanki

Respostas:

43

O artigo da Wikipedia sobre computação sem servidor fornece uma introdução decente ao tópico:

A computação sem servidor, também conhecida como função como serviço (FaaS), é um modelo de execução de código de computação em nuvem no qual o provedor de nuvem gerencia totalmente o início e a parada da plataforma de contêiner da função como um serviço (PaaS) conforme necessário para atender solicitações e solicitações são cobrados por uma medida abstrata dos recursos necessários para atender à solicitação, e não por máquina virtual, por hora.

A idéia é que um desenvolvedor não precise se preocupar com a infraestrutura do servidor . O provedor de nuvem gerencia os servidores físicos, o sistema operacional usado e todas as dificuldades tradicionais envolvidas na execução de um servidor.

A computação sem servidor muda sua arquitetura, pensando no que as máquinas estão fazendo e nas funções . O AWS Lambda é o exemplo que vem à mente: você paga e executa funções , sem nenhuma menção sobre o tipo de infraestrutura física em execução abaixo. Também existem hosts concorrentes sem servidor, como o Azure Functions (ou você pode simplesmente pesquisar se não estiver interessado em nenhum deles).

Existem algumas vantagens no servidor sem servidor (embora você precise escrever de uma maneira um pouco diferente do que em alguns casos, porque é uma arquitetura totalmente diferente):

  • A escalabilidade é essencialmente gratuita - porque você está apenas pagando para executar uma função, o provedor de nuvem pode dedicar facilmente mais hardware conforme necessário para executar seu código. Você também pode potencialmente escalar conforme a demanda aumenta, em vez de pagar uma taxa fixa, independentemente de seu aplicativo ser usado uma vez ou um milhão de vezes.

  • O software e o hardware do servidor não precisam mais ser gerenciados por um desenvolvedor - o provedor da nuvem lida com isso. Se você já usou algo como o Arch em um servidor, saberá como é fácil acabar com um pacote crítico e quebrar tudo!

  • Isso libera os desenvolvedores para se concentrarem no que eles são bons - código . A maioria dos desenvolvedores provavelmente não será boa em infraestrutura e programação de servidores - sem servidor apenas remove um problema da equação.

Aurora0001
fonte
"não precisa se preocupar com a infraestrutura do servidor". Isso é realmente uma coisa boa porque, na minha experiência, muitos deles já / não /, com consequências desastrosas!
Phill W.
15

Martin Fowler tem uma boa visão geral:
https://martinfowler.com/articles/serverless.html

TL; DR
"Sem servidor" descreve o desenvolvimento e a arquitetura de aplicativos que projetam aplicativos nos quais a infraestrutura é efêmera , o que significa que eles tendem a ser baseados em contêineres e podem "ir e vir" com base em um mecanismo de dimensionamento dinâmico. Isso prescreve o uso de arquiteturas sem estado que dependem de tecnologias distribuídas (como armazenamentos de chave / valor).

Dave Swersky
fonte
2
Não apenas efêmero, mas abstraído completamente. Em muitas configurações modernas sem servidor (como o AWS EC2 ASGs), a infraestrutura também é efêmera; uma instância do EC2 em um ASG pode ser encerrada a qualquer momento.
Adrian
14

'Sem servidor', como muitas coisas em nosso espaço, está se tornando um termo sobrecarregado. Mas geralmente o que isso significa é "Funcionalmente, nossa arquitetura não depende do provisionamento ou manutenção contínua de um servidor"

A primeira instância que vem à mente é um aplicativo javascript de página única, que usa armazenamento local e é armazenado em algo como Amazon S # ou Github Pages (ou qualquer site estático - esses são apenas exemplos comuns). Imagine algo como um aplicativo no estilo 'todo' ou 'fazendo as coisas' ser executado inteiramente no seu navegador. Seu navegador acessa um serviço como o S3 para baixar o código, e os itens armazenados são todos armazenados no armazenamento local do navegador. Não há servidor que você mantenha para isso.

A segunda instância, e é um pouco mais complicada (e também a que popularizou o termo 'sem servidor'), usa um serviço como o AWS Lambda. Deixe-me explicar isso apresentando o problema que resolve:

Muitas vezes na minha carreira, resolvi um problema de negócios para um cliente com pouco mais do que algum código ruby ​​que executava extrações, transformações e carregamentos periódicos (geralmente escritos como uma tarefa de rake). Uma vez resolvido, normalmente eu o automatizava com o cron. Então o problema se torna 'onde eu hospedo essa coisa que é executada uma vez a cada hora?' Para alguns clientes, configuramos um servidor em sua infraestrutura existente. Para outros, configuramos uma instância do EC2, mesmo estando inativa 99% do tempo. Em qualquer uma dessas circunstâncias, há um servidor que requer provisionamento, aplicação de patches, monitoramento, atualização etc.

Com o Amazon Lambda, posso pegar essa tarefa de rake e executá-la em seu serviço como uma 'função' pura. Eu posso até agendar. Esse cliente não precisaria mais de uma infraestrutura para uma coisa tão simples de uma vez por hora.

Com 'sem servidor' ainda existe um servidor, assim como com 'nuvem' ainda há um computador. Existe apenas um nível de abstração que exige algumas das responsabilidades ambientais para você.

David Bock
fonte
Meu voto positivo para o exemplo da vida real de um trabalho de uma em uma hora que normalmente precisava de um EC2. Agora você só precisa de uma função Lambda!
HopeKing
10

Todas ótimas respostas já. Eu estava lendo a postagem do blog Pensando em sem servidor - como novas abordagens atendem às necessidades modernas de processamento de dados em alta escalabilidade, onde encontrei esta excelente explicação sobre o que significa sem servidor:

A frase "sem servidor" não significa que os servidores não estão mais envolvidos. Significa simplesmente que os desenvolvedores não precisam mais pensar muito sobre eles. Os recursos de computação são usados ​​como serviços sem precisar gerenciar capacidades ou limites físicos. Os provedores de serviços assumem cada vez mais a responsabilidade de gerenciar servidores, repositórios de dados e outros recursos de infraestrutura ... A ausência de servidores permite que os desenvolvedores mudem seu foco do nível do servidor para o nível da tarefa. As soluções sem servidor permitem que os desenvolvedores se concentrem no que seu aplicativo ou sistema precisa fazer, eliminando a complexidade da infraestrutura de back-end.

E mais um aprendizado da minha experiência pessoal na construção de infraestrutura sem servidor é:

  • Os pipelines de dados sem servidor realmente não precisam ser apenas em tempo real. É possível criar pipelines eficientes sem servidor de processamento em lote por meio dos mecanismos de alerta CloudWatch da AWS, que permitem monitorar as ferramentas e gerar alertas para a computação do ADA (Lambda).

Como por exemplo: armazene os arquivos em uma fila do AWS SQS. Quando o número de mensagens na fila atingir 10, dispare um evento no Lambda.

Dawny33
fonte
6

Além de simplesmente explicar a definição do termo Sem servidor, as origens do termo e sua história também fornecem algumas dicas sobre seu significado. O conceito se originou com o framework JAWS de Austen Collins , que mais tarde foi renomeado como Serverless . Aprendi sobre isso primeiro na sessão AWS re: Invent 2015 , que pode ser ajudada a datar o conceito. Foi isso que cunhou o termo sem servidor, que se espalhou rapidamente para outros sistemas em nuvem:

Jiri Klouda
fonte