Serverless

Nel momento in cui rilasciamo una soluzione software, sempre più spesso lo facciamo distribuendo il Backend su un ambiente in Cloud.

Esistono diversi fornitori, tra cui il più popolare è Amazon.

Amazon, come i suoi diretti competitor, da qualche anno, sta costruendo servizi serverless.

Cosa si intende per serverless?

Semplificando, possiamo dire che sono servizi dove non ti devi più preoccupare di gestire i server, non perché quest’ultimi siano scomparsi, ma perchè non occorre conoscerne i dettagli e soprattutto non occorre gestirli in prima persona.

Questo non significa che wow, non devo più occuparmi di aspetti sistemistici, ma significa che
si semplificano aspetti di gestione. Ovviamente non illudiamoci che tutto sia più semplice o economico, certamente però si possono liberare risorse prima destinate alla gestione dei server, per concentrarsi su altri aspetti tecnologici.

Il serverless su Amazon si divide in 2 tipologie:

  • prodotti serverless
  • computazione on-demand

Prodotti serverless

I primi sono servizi dove Amazon attiva un servizio già gestito da loro. Questi ultimi sono orientati per essere interrogati dalle API che Amazon stessa ti mette a disposizione e spesso hanno a corredo anche un SDK, del codice necessario per poter interagire con tale servizio.

In questo c’è un risparmio di gestione (patch, aggiornamenti etc) e un risparmio di sviluppo software (API, SDK).

Inutile elencare tutti i prodotti serverless perché ne nascono di nuovi tutti i giorni, ne cito solo alcuni per i database: DynamoDB, con linguaggio NoSQL o ancora RDS, che ricorda un database relazionale tradizionale.

Computazione on-demand

Ricadono in questa categoria il servizio AWS Lambda, o meglio delle “lambda functions”, caso particolare di FAAS (Functions As A Service).
Cosa significa? L’idea è di implementare ed eseguire parti di codice (functions) scrivendo solo la funzione necessaria alle tue esigenze con uno dei linguaggi supportati (js, java, python, etc).

L’intento di provider come AWS è quello di farti costruire interamente la tua applicazione nel loro sistema utilizzando prodotti e functions come mattoncini, senza preoccuparti di gestire server e senza preoccuparti della scalabilità.

Ovviamente non si sceglie di realizzare un’intera applicazione su AWS solo per questi due motivi, ma senz’altro vale la pena ragionare su questi due motivazioni, che sono garantiti fin dall’inizio con il cloud.

Quali altri vantaggi porta con sè il “movimento” serverless?

Possiamo citare altri vantaggi quali:

Atomicità del costo. Se posso rifattorizzare il mio codice rendolo un insieme di funzioni atomiche, allora conoscendo il costo computazionale della singola funzione, posso prevedere degli scenari e fare una valutazione, previsione e ottimizzazione dei costi.
Vantaggio tecnologico e innovazione. Se sono all’interno di un ecosistema cloud pieno di servizi, posso aggiungere o integrare un servizio e verificarne l’impatto, “innovando” la mia soluzione con una semplicità e una celerità difficili in altri contesti.
Modularità. Siccome ogni prodotto serverless genera eventi possiamo concatenare servizi e funzioni tra loro per creare la nostra applicazione.

Quali sono gli svantaggi?

Ovviamente l’utilizzo di un prodotto ha dei lati negativi da tenere in considerazione. Tra gli svantaggi, più o meno impattanti a seconda del contesto in cui applicheremo il cloud, possiamo citare :

Lock-in con il provider. Di fatto se costruisco e usufruisco di prodotti all’interno della piattaforma Amazon mi sto legando alla stessa. Si, esistono soluzioni software che promettono di essere agnostiche dal provider (alcuni fornitori che creano un layer astratto, che permette di essere indipendente dalla piattaforma), ma il lock-in alla piattaforma non è comunque da sottovalutare.
Costi. Possiamo ottimizzare i costi ma i singoli “ingredienti” non sono a buon mercato.
Costo formativo. Se non deleghiamo l’attività di configurazione, gestione e manutenzione del cloud dobbiamo considerare un costo di formazione.
Costi di sviluppo. Dobbiamo affrontare lavori di ri-fattorizzazione del codice e ripensare l’architettura per trarre maggiori vantaggi dal cloud.

Come sempre vantaggi e svantaggi vanno calati al vostro contesto e alle vostre esigenze. Questo dimostra quanto una strategia IT è fondamentale quanto altri tipi di strategia per ogni azienda che voglia sfruttare appieno i vantaggi tecnologici del cloud.

Leave a Reply

Your email address will not be published. Required fields are marked *