Con la diffusione del cloud computing, il serverless computing è gradualmente diventato una tendenza importante nel settore IT. Si riferisce a un servizio cloud che non richiede agli utenti di gestire risorse hardware o software. Gli utenti devono solo fornire codice applicativo o dati per eseguire il servizio corrispondente. Nonostante il termine “serverless” nel nome, questa tecnologia si basa comunque su un server per eseguire il codice dello sviluppatore.
Il serverless computing si riferisce all'astrazione dell'elaborazione, consentendo agli sviluppatori di concentrarsi maggiormente sulla logica dell'applicazione piuttosto che sull'infrastruttura sottostante.
La definizione di serverless si è evoluta nel tempo e ha diverse interpretazioni nel settore. Gli esperti suggeriscono di spostare l'attenzione dalle specifiche tecniche a una mentalità focalizzata su come il serverless può essere utilizzato per risolvere le sfide aziendali.
Tuttavia, la popolarità della tecnologia serverless non significa che tutto sia diventato semplice. Il suo utilizzo ha gradualmente trasferito la complessità che originariamente apparteneva al team operativo al team di sviluppo. Ciononostante, i team operativi devono comunque gestire aspetti quali autenticazione, networking, policy di sicurezza e ottimizzazione dei costi.
Nel mondo del serverless computing, gli sviluppatori possono trovarsi ad affrontare diverse sfide, una delle quali è rappresentata dal fatto che le applicazioni sono soggette a errori nel computing distribuito.
"Il controllo delle versioni è semplice, le transazioni di compensazione funzionano sempre e l'osservabilità è facoltativa". Questi sono i malintesi più comuni sul calcolo distribuito.
Inoltre, il monitoraggio e il debug delle applicazioni serverless sono difficili perché la loro natura distribuita e basata sugli eventi spesso le rende difficili da tracciare. Sebbene gli strumenti di monitoraggio tradizionali possano presentare dei limiti, le tecnologie moderne, come gli strumenti di tracciamento distribuito e la registrazione centralizzata, possono migliorare efficacemente questi problemi.
Secondo il rapporto OWASP, le applicazioni serverless sono ancora vulnerabili agli attacchi tradizionali e agli attacchi informatici che prendono di mira specificatamente le applicazioni serverless (come gli attacchi "wallet denial of service"). Ciò costringe gli sviluppatori a cambiare il loro modo di pensare e a prevenire questi rischi in nuovi modi.
Il serverless computing è spesso fornito da servizi di terze parti, il che significa che le applicazioni e il software sono vincolati a uno specifico provider cloud. Il problema del vendor lock-in diventa più evidente quando si considerano flussi di lavoro più complessi, poiché i provider cloud in genere consentono ai clienti solo di caricare codice sulle loro piattaforme e non possono configurare l'ambiente di base. Ciò rende quasi impossibile la migrazione dei carichi di lavoro serverless; pertanto, progettare e distribuire flussi di lavoro serverless da una prospettiva multi-cloud sta gradualmente diventando una soluzione praticabile.
Sebbene il serverless computing offra flessibilità e scalabilità in molti scenari, potrebbe non essere efficace quanto l'allocazione mirata delle risorse per determinati carichi di lavoro di high-performance computing (HPC). Quando i carichi di lavoro richiedono un utilizzo continuo o prevedibile delle risorse, il provisioning batch tradizionale dei server può talvolta risultare più conveniente rispetto a un modello di fatturazione a consumo.
"Per alcuni carichi di lavoro HPC, il serverless computing sembra essere sempre più adattabile a requisiti sempre più complessi."
Il vantaggio del serverless non è solo la sua ampia gamma, ma anche la flessibilità che offre e la capacità di soddisfare esigenze diverse. Gli sviluppatori devono trovare i modi migliori per applicare queste tecnologie anziché seguire ciecamente le tendenze.
Nelle architetture serverless, gli sviluppatori devono fare attenzione agli anti-pattern come "sand anti-pattern", che fa riferimento a funzionalità del sistema troppo granulari, con conseguente complessità di gestione e riduzione dell'efficienza delle prestazioni. Un altro anti-pattern, denominato "Lambda Pinball", comporta un numero eccessivo di chiamate di funzione, causando problemi di latenza e osservabilità.
Per risolvere questi problemi, le aziende possono prendere in considerazione l'idea di stabilire chiari confini di dominio per distinguere le interfacce pubbliche da quelle pubblicate, riducendo così la complessità delle dipendenze.
"L'adozione della tecnologia serverless deve essere abbinata a pratiche di sicurezza, in particolare l'applicazione di DevSecOps, che aiuta a migliorare l'efficienza e la sicurezza."
Nel complesso, la flessibilità e la scalabilità offerte dal serverless computing offrono numerose opportunità di business sia per gli sviluppatori che per le aziende. Tuttavia, in un simile contesto, dobbiamo anche essere consapevoli delle potenziali sfide e dei rischi. In futuro, il serverless computing diventerà un'opzione diffusa oppure i suoi limiti lo costringeranno ad adottare altre architetture?