Serverless: cos'è e perché è diverso
Pubblicato: 2019-01-11Che cos'è l'informatica senza server?
Potresti aver visto tutto il recente clamore intorno al serverless nella comunità degli sviluppatori. Quindi cos'è esattamente? Voglio dire, il codice deve ancora essere eseguito da qualche parte, quindi come è effettivamente serverless?
Tutto ciò significa che lo sviluppatore e il team operativo non devono supervisionare, gestire o anche preoccuparsi dei server effettivi. Può sembrare molto simile al cloud computing, ma ci sono alcune differenze chiave. E queste differenze risiedono principalmente in ciò che non conosci rispetto ad altri modelli.
Sistema operativo sconosciuto!?!?
Uno dei modi più semplici per differenziare il serverless da una qualche forma di orchestrazione cloud di fantasia come Kubernetes è che nessuno nella tua azienda sappia quale sistema operativo sta utilizzando il server che esegue il tuo codice. Potresti credere che dal momento che stai eseguendo del codice .Net sia Windows, o che poiché è Ruby sia su Linux, ma alla fine non ne sei sicuro e non ha alcuna conseguenza per il tuo sviluppo.
Sei in grado di scrivere codice utilizzando una lingua supportata dal provider serverless e finché rimani entro i limiti della casella che forniscono, sei A-Ok senza alcuna conoscenza di quale sistema operativo, versioni, ecc. che lo alimentano.
E in effetti, uno dei punti di forza del serverless è che in qualsiasi momento l'applicazione potrebbe essere in esecuzione su più sistemi operativi diversi. Tutto questo è gestito e gestito dal tuo provider per te.
Di quanti server hai bisogno per gestire il tuo traffico?
Se puoi rispondere a questa domanda con qualsiasi tipo di ipotesi sui server X o se abbiamo bisogno di CPU Y, allora non stai facendo uno sviluppo serverless.
Il contratto serverless implica che il numero e la potenza di qualsiasi elaborazione necessaria per alimentare la tua applicazione non sarà di alcun interesse per lo sviluppatore. Ciò non significa che non ti venga addebitato, solo che non è qualcosa che tu o il tuo team gestirete o a cui tenete. I buoni fornitori gestiscono automaticamente la gestione del servizio in modo che mantenga alta disponibilità e reattività.
Modello di fatturazione basato su elaborazione, archiviazione e rete. Non server, CPU e dischi rigidi
Visto che non sei a conoscenza di quale hardware effettivo viene eseguito sotto la tua applicazione, arriva un nuovo modo di fatturare. I fornitori di piattaforme cloud serverless fatturano l'utilizzo a consumo di calcolo, archiviazione e trasferimento di rete. Questo sostituisce altri modelli di fatturazione che addebitano tramite CPU, unità disco e connessioni di rete. In un mondo serverless, hanno il controllo di quel pezzo e ti viene addebitato solo l'utilizzo esatto per la tua app.
Questo avvicina l'informatica al modello dell'elettricità. La tua compagnia elettrica ti fattura in base al KWH che è il consumo di elettricità misurato. L'energia stessa è creata da carbone, nucleare, gas, qualunque cosa. Ma la fatturazione viene misurata allo stesso modo, indipendentemente dalla fonte.
Inattivo a zero
L'altro grande cambiamento in serverless è che quando l'app non è utilizzata, viene ridimensionata automaticamente a zero. Dal momento che non vieni fatturato dalla CPU, ma utilizzando il calcolo, quando non lo usi la tua fattura è zero.
Il provider è sempre pronto a misurare il calcolo secondo necessità, ma non è necessario che tu paghi per un server pronto per quando viene utilizzato. È semplicemente un calcolo del pagamento del secondo di calcolo effettivamente consumato durante l'esecuzione dell'app.
Puoi pensarlo un po' come un negozio di alimentari. È il loro lavoro mantenere il negozio rifornito di latte in modo che quando tu come cliente hai sete, puoi fare un salto, comprare il latte da bere e poi andartene. Non paghi in anticipo per aver bisogno del latte, e non paghi se hanno latte che va a male perché nessuno l'ha comprato. Questo è tutto il compito del negozio di alimentari è assicurarsi che abbiano scorte disponibili, facendo attenzione a non sovraccaricare e sprecare il latte avariato. Tutto quello che sai è che hanno quello che vuoi quando lo vuoi, e il resto è semplificato lontano dalle tue preoccupazioni.
Compromessi per serverless
Quindi tutta questa semplificazione suona abbastanza bene. Perché una persona non dovrebbe desiderare tutte queste cose: fatturazione più semplice, meno responsabilità operativa, scalabilità facile. Bene come con tutte le cose, questo arriva con alcuni compromessi. Allora parliamo di loro.
Sostituisci il blocco del sistema operativo con il blocco del provider cloud
In altri modelli, avevi vari compromessi e limitazioni a causa dei sistemi operativi o dei server su cui girava il tuo codice. Ora che i framework serverless scaricano questa responsabilità sul provider, ci sono nuovi vincoli che devi rispettare.
Al momento, non esiste un insieme concordato di standard che definiscano vincoli e garanzie tra i fornitori di servizi. Ciò significa che simile a quanto sarebbe stato difficile in passato spostare le applicazioni da Windows a Linux, ad esempio. Ora lo affronterai quando proverai a spostare le tue app serverless dal cloud di Google a quello di Amazon.
Queste aziende non forniscono ancora alcun framework comune per consentire ai clienti di spostare facilmente i carichi di lavoro serverless tra di loro. E francamente, non è nel loro interesse farlo in questo momento perché preferirebbero rinchiuderti nelle loro offerte il più possibile. Quindi devi essere molto consapevole del fatto che le prime offerte serverless hanno molti punti critici di proprietà che ti rendono difficile uscirne.
Meno visibilità su prestazioni e costi
Gli strumenti per immergersi nelle prestazioni del codice sono molto ben consolidati per i modelli di programmazione precedenti. Cose come capire quanta CPU o RAM sta utilizzando un determinato programma sono tutte cose comuni.
Con il modello serverless, le ottimizzazioni cambiano in base alla quantità di chiamate di calcolo, rete e API utilizzate dal codice. Ad essere onesti, questi sono legati alla CPU e alla RAM del passato. Ma man mano che vengono astratti ulteriormente, impedirà a questi strumenti di essere altrettanto utili.
Credo fermamente che i nuovi strumenti open source per il debug e l'ottimizzazione delle prestazioni sembreranno al servizio di questo mercato. Ma richiederanno una migliore comprensione di come l'architettura serverless viene implementata dai provider. Potrebbe significare che i fornitori di cloud sono gli unici in grado di fornire una visione sufficientemente approfondita da rendere efficaci questi strumenti. E non è nel loro interesse aiutarti a utilizzare meno risorse poiché fatturano tali risorse indipendentemente dal fatto che tu le abbia utilizzate in modo efficiente o meno.
Le applicazioni di lunga durata non sono il punto debole
Per ottenere tutta la flessibilità fornita dal serverless, in genere limita lo sviluppatore dell'applicazione a limitazioni basate sul tempo su queste funzioni come servizio. Ciò significa che ottimizza per consentire al tuo codice di rispondere a una richiesta Web in cui ha un massimo di 1 minuto per rispondere.
Questi tempi massimi fissi aiutano il provider a mantenere le promesse serverless. Si aspettano di essere in grado di spostare il carico di lavoro tra le CPU fisiche effettive e le posizioni secondo necessità per fornire ai team di sviluppo un servizio che si ridimensiona automaticamente e corregge da guasti alle apparecchiature. I carichi di lavoro di lunga durata infrangono questo presupposto. In effetti, questo è in genere elencato come uno dei requisiti della loro offerta. Dove il codice deve essere completato entro X tempo o essere terminato.
Per cose come le richieste web o le API delle applicazioni mobili, queste limitazioni non sono un grosso problema. Ma per altri casi d'uso come la codifica di video, il funzionamento di server di gioco in tempo reale o soluzioni di videoconferenza, queste limitazioni non sono fattibili. In molti casi, puoi aggirare questi limiti utilizzando in modo creativo le risorse serverless, ma di solito stai cercando una soluzione che ti costerà di più e che opererà molto più lentamente. I fornitori di servizi cloud saranno lieti di assisterti in questa operazione poiché un maggiore utilizzo è più dollari per loro. Quindi assicurati di utilizzare serverless per applicazioni Web e sistemi in cui è la soluzione migliore.