Software, infrastrutture, piattaforme e funzioni… serverless!
La diatriba on-premise o on-cloud va avanti ormai da anni. Prima di addentrarci però in questa eterna lotta occorre fare un po’ di chiarezza su cosa significa realmente cloud.
È d’obbligo parlare di almeno tre tipologie classiche di cloud, più una new entry. Iniziamo con il definire la tipologia più antica, la cosiddetta SaaS, ovvero Software as a Service.
È un modello di distribuzione del software applicativo dove un produttore di software sviluppa, opera (direttamente o tramite terze parti) e gestisce un’applicazione web che mette a disposizione dei propri clienti via Internet previo abbonamento.
I servizi SaaS sono quindi quei software forniti all’utente finale non tramite l’acquisto degli stessi, ma con l’acquisizione di una licenza che consente il mero utilizzo, di solito tramite piattaforma web. Pensiamo alla G Suite di Google che offre in abbonamento la posta elettronica, un disco remoto o il calendario condiviso.
La seconda tipologia di cloud è l’IaaS, ovvero Infrastructure as a Service.
Refers to online services that provide high-level APIs used to dereference various low-level details of underlying network infrastructure like physical computing resources, location, data partitioning, scaling, security, backup etc.
In breve, esternalizzare tutta l’infrastruttura (composta da server fisici, sistemi di storage, rete, switch, …) in un datacenter remoto, non di proprietà, gestito di solito (ma non obbligatoriamente) tramite tecniche di virtualizzazione (come Xen, KVM, VMware ESX/ESXi, …). È quindi possibile creare la propria rete, gestire i propri storage o le proprie macchine (fisiche o virtuali) senza dover acquistare le fibre ottiche, il rame, gli switch, i server e gli armadi rack o le costose SAN.
In ultimo la più recente PaaS, cioè la Platform as a Service.
È un’attività economica che consiste nel servizio di messa a disposizione di piattaforme di elaborazione (Computing platform) e di solution stack.
Sfido chiunque a capire immediatamente di cosa si tratti dalla definizione presa da Wikipedia. Provando a spiegarla meglio, si usano piattaforme come servizi quando, piuttosto che installare sulle proprie macchine - acquistate o disponibili tramite IaaS - un database relazionale (come MySQL, PostgreSQL o Microsoft SQL Server) si utilizza, ad esempio, la piattaforma Google Cloud SQL o Amazon Relational Database Service; piuttosto che installare il proprio server - fisico o virtuale - e su di esso Node.js, PHP o Python, si utilizza Google App Engine per eseguire la propria applicazione. Non si ragiona più a server, rete o storage come nello IaaS ma a servizi… e ormai esiste davvero un servizio per tutto!
Un breve accenno ad una new entry, il FaaS, ovvero Function as a service.
Is a category of cloud computing services that provides a platform allowing customers to develop, run, and manage application functionalities without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app
Attraverso il FaaS ci si sta muovendo velocemente verso una dematerializzazione totale non solo dell’infrastruttura ma anche della piattaforma. Si entra nel campo delle architetture serverless grazie alle quali non solo non si devono gestire i server ma neppure le piattaforme messe a disposizione da un cloud provider. Il ragionamento ruota intorno alla funzione piuttosto che all’applicazione e infatti la politica di prezzo è per tempo di elaborazione piuttosto che per tempo di esecuzione dell’applicativo server: micro-funzioni, senza stato, che vengono lanciate in parallelo, molteplici volte ed eseguite in una manciata di millisecondi.
Quindi, on-premise oppure on-cloud? Ma soprattutto, quale cloud?
Provo a dare qualche spunto di riflessione in questo articolo, ispirato dal CTO Meeting al Codemotion di Milano 2017. Buona lettura.