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?
terminology
serverless
Evgeny
fonte
fonte
Respostas:
O artigo da Wikipedia sobre computação sem servidor fornece uma introdução decente ao tópico:
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.
fonte
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).
fonte
'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ê.
fonte
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:
E mais um aprendizado da minha experiência pessoal na construção de infraestrutura sem servidor é:
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.
fonte
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:
fonte