Perché senza server

Le applicazioni Web sono tradizionalmente distribuite su server Web in esecuzione su macchine fisiche.

Come sviluppatore di software, dovevi essere consapevole delle complessità del server che esegue il tuo software. Per far funzionare un’applicazione su un server, puoi passare ore a scaricare, compilare, installare, configurare e connettere tutti i tipi di componenti. Il sistema operativo delle tue macchine deve essere costantemente aggiornato e patchato per le vulnerabilità di sicurezza.

La gestione dei server è un’attività che richiede tempo e che spesso richiede personale addetto alle operazioni di sistema dedicato ed esperto.

Qual è il punto di ingegneria del software?

Contrariamente a quanto alcuni potrebbero pensare, l’obiettivo dell’ingegneria del software non è fornire software. Il compito di un ingegnere del software è fornire valore, per mettere l’utilità del software nelle mani degli utenti.

Alla fine della giornata, hai bisogno di server per consegnare il software. Tuttavia, il tempo impiegato nella gestione dei server è il tempo che potresti aver impiegato per sviluppare nuove funzionalità e migliorare l’applicazione. Invece di preoccuparti dei server, vuoi concentrarti sulla spedizione .

Quando hai una grande idea, l’ultima cosa che vuoi fare è configurare l’infrastruttura. Come possiamo ridurre al minimo il tempo necessario per produrre impatto?

Negli ultimi decenni, i miglioramenti sia a livello di rete che a livello di piattaforma – tecnologie tra il sistema operativo e l’applicazione – hanno semplificato il cloud computing.

Ai tempi di allora (i primi anni ’90) gli sviluppatori disponevano solo di hardware bare metal per eseguire il loro codice e il processo per ottenere una nuova unità di calcolo può richiedere da giorni a mesi. Il ridimensionamento ha richiesto molta pianificazione dettagliata, un’enorme quantità di tempo e, soprattutto, denaro. Uno spostamento era inevitabile. L’invenzione delle macchine virtuali e l’hypervisor hanno ridotto il tempo necessario per eseguire il provisioning di una nuova unità di calcolo in pochi minuti attraverso la virtualizzazione. Oggi i container ci offrono una nuova unità di calcolo in pochi secondi.

DevOps si è evoluto e maturato in questo periodo, portando alla proliferazione dei fornitori di Infrastructure-as-a-Service (IaaS) e Platform-as-a-Service (PaaS). Queste piattaforme di terze parti ti consentono di delegare il compito di mantenere l’ambiente di esecuzione del loro codice a mani capaci, liberando lo sviluppatore del software dai problemi del server e della distribuzione.

Oggi, gli sviluppatori si sono allontanati dalla distribuzione di software su computer fisici seduti nel loro salotto. Invece di scaricare manualmente e sviluppare un sacco di tecnologie a livello di piattaforma su ciascuna istanza del server (e successivamente dover ripetere il processo quando si ridimensiona) è possibile passare a una semplice interfaccia utente Web sul provider PaaS preferito, fare clic su alcune opzioni, e avere l’applicazione distribuita automaticamente in un cluster con provisioning completo.

Quando l’utilizzo dell’applicazione aumenta, è possibile aggiungere capacità facendo clic su alcuni pulsanti. Quando sono necessari componenti di infrastruttura aggiuntivi, impostare pipeline di distribuzione o abilitare i backup del database, è possibile farlo dalla stessa interfaccia Web.

Lo stato di Platform-as-a-Service (PaaS) e il cloud computing oggi è conveniente e potente, ma possiamo fare di meglio?

Il prossimo importante spostamento nel cloud computing è comunemente noto come “Serverless” o “Funzioni come servizio” (FaaS.)

Tieni presente che la frase “senza server” non significa che i server non sono 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.

Serverless è un approccio di sviluppo software che mira a eliminare la necessità di gestire l’infrastruttura mediante:

  • Utilizzo di un servizio di elaborazione gestito (Functions-as-a-Service) per eseguire il codice e
  • Sfruttamento di servizi e API esterni ( prodotti Software-as-a-Service di terze parti).

Esistono numerosi servizi di terze parti: API che gestiscono pagamenti online, posta elettronica transazionale, analisi degli utenti, misurazione della qualità del codice, gestione dei contenuti, integrazione continua e altri problemi secondari. Nel nostro lavoro quotidiano utilizziamo anche strumenti esterni per la gestione dei progetti, la condivisione di file, l’amministrazione dell’ufficio e altro ancora.

Invece di spendere risorse preziose per sviluppare capacità secondarie come l’infrastruttura e la manutenzione dei server, gli sviluppatori possono concentrarsi sulla proposta di valore fondamentale .

Invece di costruire cose da zero, gli sviluppatori possono collegare insieme parti prefabbricate e eliminare la complessità secondaria dall’applicazione. Facendo uso di servizi di terze parti, è possibile creare architetture liberamente accoppiate, scalabili ed efficienti più rapidamente.

Il movimento Serverless e l’ubiquità delle piattaforme FaaS sono un passo importante verso la delega dei problemi di infrastruttura alle aziende che si trovano in una posizione molto migliore per affrontarle.

Non importa quanto diventi bravo con DevOps, Amazon / Google / Microsoft lo avranno quasi sicuramente fatto meglio. Ora puoi ottenere tutti i vantaggi di una moderna architettura di container container senza rompere la banca o passare anni a costruirla tu stesso.

Perché andare senza server? Quindi puoi sempre spedire .

Il libro Going Serverless ti insegna come creare applicazioni scalabili con il framework Serverless e AWS Lambda. Imparerai come progettare, sviluppare, testare, distribuire e proteggere applicazioni Serverless dalla pianificazione alla produzione. Ulteriori informazioni →


Originariamente pubblicato su yos.io il 2 gennaio 2018.