Che cos'è Serverless?


42

Tutti i fornitori di servizi cloud stanno commercializzando le loro soluzioni "senza server". La promessa è che serverless sostituirà il modo in cui gli sviluppatori sviluppano attualmente il loro software e le operazioni lo gestiscono in produzione.

Che cos'è "senza server"? Dove si può saperne di più su di esso e come può essere utilizzato oggi?


il serverless computing è "meno server", poiché un "hamburger di pollo" è vegano in quanto non hai incontrato personalmente il pollo
Sai Addanki,

Risposte:


43

L'articolo di Wikipedia sull'informatica senza server offre una discreta introduzione all'argomento:

Il computing senza server, noto anche come funzione come servizio (FaaS), è un modello di esecuzione del codice di cloud computing in cui il provider cloud gestisce completamente l'avvio e l'arresto della piattaforma container di una funzione come servizio (PaaS) in base alle necessità per soddisfare le richieste e le richieste sono fatturati da una misura astratta delle risorse necessarie per soddisfare la richiesta, anziché per macchina virtuale, all'ora.

L'idea è che uno sviluppatore non dovrebbe preoccuparsi affatto dell'infrastruttura del server . Il provider cloud gestisce i server fisici, il sistema operativo utilizzato e tutte le difficoltà tradizionali legate all'esecuzione di un server.

L'elaborazione senza server cambia la tua architettura dal pensare a cosa stanno facendo le macchine a quali funzioni stanno facendo. AWS Lambda è l'esempio che ti viene in mente: paghi ed esegui le funzioni , senza menzionare il tipo di infrastruttura fisica in esecuzione di seguito. Esistono anche serverless host concorrenti come Funzioni di Azure (oppure puoi semplicemente cercare se non sei interessato a nessuno di questi).

Ci sono alcuni vantaggi di serverless (anche se in alcuni casi è necessario scrivere in un modo leggermente diverso rispetto al solito, perché è un'architettura totalmente diversa):

  • La scalabilità è essenzialmente gratuita - poiché stai solo pagando per eseguire una funzione, il provider cloud può facilmente dedicare più hardware necessario per eseguire il tuo codice. Puoi anche potenzialmente ridimensionare all'aumentare della domanda, piuttosto che pagare una tariffa fissa se l'applicazione viene utilizzata una volta o un milione di volte.

  • Il software e l'hardware del server non devono più essere gestiti da uno sviluppatore: il provider cloud lo gestisce. Se hai mai usato qualcosa come Arch su un server, saprai quanto è facile cancellare un pacchetto critico e rompere tutto!

  • Libera gli sviluppatori a concentrarsi su ciò che sono bravi a - codice . La maggior parte degli sviluppatori non sarà probabilmente brava sia con l'infrastruttura del server che con la programmazione - serverless risolve solo un problema.


"non dovrebbe interessarsi affatto dell'infrastruttura del server". Questa è davvero una buona cosa perché, nella mia esperienza, troppi di loro già / non /, con conseguenze disastrose!
Phill W.

15

Martin Fowler ha una buona panoramica:
https://martinfowler.com/articles/serverless.html

TL; DR
"Serverless" descrive lo sviluppo di applicazioni e l'architettura che progetta applicazioni in cui l'infrastruttura è effimera , il che significa che tendono ad essere basati su container e possono "andare e venire" sulla base di un meccanismo di ridimensionamento dinamico. Ciò prescrive l'uso di architetture senza stato che dipendono da tecnologie distribuite (come archivi chiave / valore).


2
Non solo effimero, ma completamente sottratto. In molte moderne configurazioni non serverless (come AWS EC2 ASG), l'infrastruttura è anche effimera; un'istanza EC2 in un ASG può essere terminata in qualsiasi momento.
Adrian,

14

"Serverless", come molte altre cose nel nostro spazio, sta diventando un termine sovraccarico .. ma generalmente ciò che significa è "Funzionalmente, la nostra architettura non dipende dal provisioning o dalla manutenzione continua di un server"

La prima istanza che viene in mente è un'app javascript a pagina singola, che utilizza l'archiviazione locale e viene archiviata su qualcosa come Amazon S # o Github Pages (o qualsiasi sito statico - questi sono solo esempi comuni). Immagina qualcosa come un'applicazione "todo" o "fare cose" che gira interamente nel tuo browser. Il tuo browser ha un servizio come S3 per scaricare il codice e gli elementi che memorizzi sono tutti archiviati nella memoria locale del tuo browser. Non esiste un server da mantenere per questo.

La seconda istanza, ed è un po 'più complicata (e anche quella che ha reso popolare il termine "senza server"), utilizza un servizio come AWS Lambda. Lasciatemi spiegare questo presentando il problema che risolve:

Molte volte nella mia carriera ho risolto un problema di business per un cliente con poco più di un codice ruby ​​che eseguiva periodicamente l'estrazione, la trasformazione e il caricamento (in genere scritto come attività di rake). Una volta risolto, in genere lo automatizzavo con cron. Quindi il problema diventa "dove posso ospitare questa cosa che viene eseguita una volta ogni ora?" Per alcuni clienti, avremmo installato un server nella loro infrastruttura esistente. Per altri, avremmo creato un'istanza EC2, anche se era inattiva il 99% delle volte. In una di queste circostanze, esiste un server che richiede provisioning, patch, monitoraggio, aggiornamento, ecc.

Con Amazon Lambda, posso svolgere quel compito di rake ed eseguirlo al loro servizio come pura "funzione". Posso persino programmarlo. Quel client non avrebbe più bisogno di un'infrastruttura per una cosa così una volta ogni ora.

Con "serverless" c'è ancora un server, proprio come con "cloud" c'è ancora un computer. C'è solo un livello di astrazione su di esso che si assume alcune delle responsabilità ambientali per te.


Il mio voto per l'esempio di vita reale di un lavoro ogni ora che in genere aveva bisogno di un EC2. Ora hai solo bisogno di una funzione Lambda!
HopeKing

10

Tutte ottime risposte già. Stavo esaminando il post sul blog Thinking Serverless - In che modo i nuovi approcci affrontano le esigenze moderne di elaborazione dei dati in HighScalability, dove ho trovato questa eccellente spiegazione di ciò che significa serverless:

La frase "senza server" non significa che i server non siano più coinvolti. Significa semplicemente che gli sviluppatori non devono più pensare molto a loro. Le risorse informatiche vengono utilizzate come servizi senza dover gestire capacità o limiti fisici. I fornitori di servizi si assumono sempre più la responsabilità della gestione di server, archivi dati e altre risorse dell'infrastruttura ... La mancanza di server consente agli sviluppatori di spostarsi dal livello del server al livello delle attività. Le soluzioni senza server consentono agli sviluppatori di concentrarsi su ciò che la loro applicazione o sistema deve fare eliminando la complessità dell'infrastruttura di back-end.

E, un altro apprendimento dalla mia esperienza personale nella costruzione di infrastrutture senza server è:

  • Le pipeline di dati senza server non devono essere realmente solo in tempo reale. È possibile creare pipeline senza server di elaborazione batch efficienti tramite i meccanismi di avviso CloudWatch di AWS, che consente di monitorare gli strumenti e generare avvisi per il calcolo (AWS) Lambda.

Come ad esempio: archivia i file in una coda AWS SQS. Quando il numero di messaggi nella coda raggiunge 10, attiva un evento su Lambda.


6

Oltre a spiegare semplicemente la definizione del termine Serverless, le origini del termine e la sua storia forniscono anche alcune informazioni sul suo significato. Il concetto è nato con l' JAWS quadro dalla Austen Collins , che ha ottenuto in seguito ribattezzata come Serverless . L'ho imparato prima nella sessione AWS re: Invent 2015 , che può essere aiutata ad uscire con il concetto. Questo è ciò che in realtà ha coniato il termine Serverless, che poi si è diffuso rapidamente ad altri sistemi cloud:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.