PaaS, Platform as a Service, il cloud per gli sviluppatori

Il cloud PaaS, acronimo di Platform as a Service, si pone come strato intermedio nelle tipologie di cloud tra l'IaaS e il Saas, ed e talvolta definito middleware.

Abbiamo visto nella precedente puntata come l’IaaS sia il primo livello di cloud, il più basso, il livello in cui l’utente ha in carico tutta la gestione della piattaforma, avendone un controllo completo sia in termini di configurazione che di gestione. Il cloud PaaS, acronimo di Platform as a Service, si pone come strato intermedio nelle tipologie di cloud tra l’IaaS e il Saas, ed è talvolta definito middleware; rappresenta quindi lo step successivo e si appoggia sull’infrastruttura IaaS.

 

Prima di proseguire sulla via del PaaS, è necessaria una breve precisazione, utile soprattutto a quanti si approcciano allo sviluppo di applicazioni software e soprattutto negli ultimi tempi allo sviluppo delle app per sistemi mobili, smartphone, xpad, e simili. Lo sviluppo di un’applicazione, non è limitato alla semplice scrittura di codice, e testing finale, che lo potrebbero ridurre spesso ad una semplice attività di copia/incolla di blocchi di codice presi qua e la, o sfruttando plugin e/o componenti riusabili. Il software è caratterizzato da un ciclo di vita che, partendo da una fase di scouting di ciò che serve, arriva al prodotto finale attraversando le fasi progettazione, sviluppo, test e manutenzione. Tutte queste fasi sono caratterizzate da una serie di attività che per essere svolte hanno bisogno di software specifici, in particolare le fasi di sviluppo, test e manutenzione.

 

Quando si parla di ambiente di sviluppo e di runtime, si intende proprio tutti i software necessari opportunamente configurati che supportano lo sviluppo stesso e consentono l’esecuzione dell’applicazione, e che vanno dal sistema operativo, ai compilatori, editor, software di debugging, validation, profilig e testing, eventuali application server o framework vari. Alla luce di questa precisazione si capisce come preparare un ambiente di sviluppo si un’attività tutt’altro che di secondo piano e che può portare via diverso tempo, condizionare gli sviluppi e soprattutto ha un costo.

Chi gestisce la piattaforma

L’idea alla base della definizione di questa categoria di cloud (PaaS) è proprio portare un vantaggio a questa attività riducendone costi, minimizzando i tempi di preparazione e riducendo le risorse necessarie, in quanto tutto lo sviluppo può essere confinato all’interno di questo “strato di cloud”, in cui il provider mette a disposizione un’infrastruttura completa che va dal sistema operativo,  all’ambiente per eseguire e distribuire le applicazioni .

 

La piattaforma è vista come un servizio che esporta tool e API per lo sviluppo della propria applicazione e l’utente che sceglie un servizio di cloud PaaS è quindi uno sviluppatore, o più genericamente una software house, che non deve preoccuparsi di configurare l’infrastruttura, di cui non conosce i dettagli, in quanto acquista una soluzione hardware/software completa per lo sviluppo ed il deployment delle proprie applicazioni, ignorandone così gli aspetti legati all’organizzazione dei server, dello storage, o della rete.

 

 

 

Chi si occupa per esempio di quanto spazio allocare ad una applicazione o ad un servizio, o di come devono essere bilanciati e distribuiti i carichi di lavoro? Sono queste attività in carico al provider che fornisce un servizio PaaS, rimane all’utente l’unica responsabilità confinata all’ambito di ciò che riguarda semplicemente lo sviluppo ed il rilascio della propria applicazione.

 

Nella figura sottostante è messo in evidenza come nelle tre tipologie di cloud trattate in questa guida, a partire da un generico stack hardware/software il confine tra cosa gestisce il provider e cosa gestisce l’utente finale si sposta sempre più verso l’alto, ed il PaaS si pone in una condizione intermedia, dove l’utente controlla come già detto solo la propria applicazione. La figura è esaustiva per mostrare come, già visto nello Iaas l’utente può invece scendere fino al livello della virtualizzazione. La figura 2 mostra invece la stessa stratificazione dettagliando però come le diverse tipologie di cloud non siano indipendenti ma interagiscano tra di loro. Per un ulteriore approfondimento: Il confine tra IaaS e PaaS in continua evoluzione.

 

PaaS: i benefici per gli sviluppatori

 

 

Il vantaggio di questa soluzione è la semplificazione del processo di sviluppo delle applicazioni esulando però dai problemi di costo e complessità legati all’ acquisto ed alla gestione dello strato hardware/software sottostante. Inoltre in una soluzione PaaS, il provider fornisce all’utente anche i tool necessari ad agevolare il supporto al ciclo di vista del software, dallo sviluppo al rilascio.

 

E’ quindi evidente che il PaaS è una scelta quasi obbligata per gli sviluppatori, in quanto i vantaggi che ne possono decretare il successo a scapito della scelta di un’altra tipologia di cloud sono essenzialmente legati all’incremento della produttività ed alla riduzione dei costi operativi:

 

    • Il Time to Market, vale a dire il tempo che intercorre dall’ideazione di un prodotto alla sua effettiva commercializzazione, si riduce, con conseguente possibilità di “monetizzare” l’applicazione in tempi più brevi.

 

    • Non sono richiesti investimenti  iniziali se non quello per la sottoscrizione del contratto di servizio, e conseguentemente sono ridotti i costi operative.

 

    • La gestione di tutto il processo di sviluppo è centralizzata, con un conseguente aumento della produttività, legato anche alla possibilità di poter accedere, modificare, verificare e rilasciare il codice in ogni momento e da ogni luogo, senza mai perdere di vista gli aspetti di sicurezza e privacy dei dati.

 

    • Il PaaS favorisce per sua natura la collaborazione tra gli utenti del servizio, mettendo a disposizione strumenti di sviluppo collaborativo, ed è questa una caratteristica essenziale nello sviluppo “collegiale” di un’applicazione, perché favorendo lo scambio di informazioni e la condivisione di know how viene accelerato il processo di sviluppo.

 

    • La possibilità di integrazione con servizi web garantisce agli sviluppatori di non avere limiti nella customizzazione delle proprie applicazioni

 

Quali sono gli svantaggi di questa tipologia di cloud

Ovviamente come tutte le soluzioni, il PaaS non presenta solo vantaggi. Il fatto stesso di essere un’infrastruttura managed e di rimuovere dalle responsabilità dell’utente i gravosi compiti di configurazione e gestione ne riduce la flessibilità perché l’utente non ha un controllo completo come in una soluzione Iaas e quindi risulta vincolato alle scelte del provider.

 

Supponiamo che un provider che metta a disposizione un servizio di PaaS per lo sviluppo ed il rilascio di un servizio web, realizzi la propria infrastruttura su una soluzione LAMP (Linux, Apache, MySql, Perl/Php).

 

La scelta di questo servizio ovviamente conduce l’utente ad utilizzare tutte le tecnologie supportate solo da quella scelta imposta, e non poter migrare ad una soluzione Windows, o utilizzare un supporto di database o di scripting diverso. È questo il vincolo principale, anche se aggirabile grazie alla vasta scelta di soluzioni proposte dai provider, per cui può non essere difficile trovare ciò che si ritiene più opportuno.

 

Il problema rimane se occorre stravolgere l’applicazione o semplicemente svilupparla in parte per una piattaforma diversa una volta sottoscritto il contratto, proprio per l’impossibilità di avere il controllo sullo strato sottostante.

Google AppEngine

L’attenzione a voler dare alle aziende la possibilità di concentrare i propri sforzi, sia in termini economici sia di tempo, nella ricerca e nell’innovazione piuttosto che sprecare risorse e sostenere i costi di gestione di un’infrastruttura hardware talvolta anche molto complessa, è sicuramente uno degli obiettivi di quanti forniscono infrastrutture PaaS come Microsoft con il suo Windows Azure, Google con AppEngine o Cloud Foundry d VmWare.

 

Google App Engine nasce con il linguaggio Python ed il framework Django due prodotti open source, per poi garantire anche il supporto a Java. Gestisce automaticamente la scalabilità, attivando delle java virtual machines on-the-fly su un elevatissimo numero di server fisici occupandosi del  load balancing.

 

Questa caratteristica consente ad App Engine di poter gestire in maniera automatica e veloce da pochi a milioni di utenti nei propri servizi online, supportando picchi di carico senza compromettere le attività degli utenti. Inoltre l’elevata ridondanza dei dati garantisce un livello di sicurezza per l’utente da essere un incentivo alla scelta verso questa soluzione. Per supportare la scalabilità per un numero di utenti e di applicazioni che solo Google e pochi altri oggi conoscono sul mercato, App Engine sfrutta pesantemente BigTable, il database di Google che gestisce ogni giorno Petabyte di informazioni, notizie, ricerche, immagini, video, mappe.

 

Google AppEngine è una offerta tipicamente PaaS: non fornisce alcun controllo sulle versioni del software installato sui server, ma garantisce esclusivamente il deployment del codice e il funzionamento delle applicazioni. Vi sono alcuni parametri impostabili per queste ultime, ma si deve sottolineare che si rimane sempre e comunque in un ambiente di “Lock-in”, Google AppEngine sfrutta infatti delle API proprietarie di Google che rendono poi difficile migrare direttamente dalla cloud di Google AppEngine ad un’altra, ad esempio Cloud Foundry o Azure.

Tipologie_cloud_computing_guida-hostingtalk

VMware e Cloud Foundry

Cloud Foundry invece si pone come un open PaaS, e permette di scegliere tra un più ampio insieme di framework e linguaggi, ambienti per il deployment di cloud e servizi applicativi eterogenei. Questa caratterisctica consente  a Cloud Foundry garantisce un alto grado di portabilità e di minimizzare il rischio di lock-in (in parole semplici i costi che i consumatori devono sostenere quando migrano da una tecnologia vecchia ad una nuova) permettendo agli sviluppatori di migrare le applicazioni tra diversi ambienti, tra cloud provider e all’interno dei loro stessi datacenter senza bloccare né modificare le applicazioni stesse.

 

Sul fenomeno del lock-in nelle piattaforme PaaS è possibile dare una lettura all’articolo PaaS, l’ostacolo al suo utilizzo è il lock-in.

 

Cloud Foundry non è vincolato ad alcun particolare ambiente cloud né richiede un’infrastruttura VMware per funzionare , e supporta i più diffusi framework per la produttività come Spring for Java, Ruby on Rails, Sinatra for Ruby e Node.js, consentendo però, grazie alla sua architettura aperta, di supportare rapidamente in futuro anche ulteriori framework di programmazione. Per i servizi applicativi critici Cloud Foundry supporta i database MongoDB, MySQL e Redis e i servizi VMware vFabric per il cloud messaging, la gestione flessibile dei dati, il bilanciamento del carico e la gestione delle prestazioni.

cloud_foundy_guida_cloud_computing_hostingtalk

Microsoft Azure

La vision di Microsoft sul cloud Paas si chiama Windows Azure, che  offre diverse modalità di utilizzo della cloud ai suoi utenti:

 

    • Windows Azure Storage Services : un’infrastruttura per l’utilizzo e la storicizzazione di dati strutturati e non strutturati;

 

    • Windows Azure Hosted Services, si tratta di un completo ambiente di runtime per le applicazioni;

 

    • Windows Azure platform AppFabric, è un set di servizi per la creazione di applicazioni distribuite utilizzabili anche da soluzioni ibride on-premise e nella cloud;

 

    • SQL Azure, una versione di SQL Server adattata per l’esecuzione in un ambiente di cloud computing.

 

Il core del sistema è Windows Azure Fabric Controller, il kernel di Windows Azure, l’elemento che internamente si occupa di gestire le risorse allocate, di monitorare i servizi attivi, di verificare che i nodi su cui è distribuita l’applicazione correttamente in esecuzione, le attività di load balancing. In particolare è responsabile di mantenere attivi:

 

    • disponibilità delle applicazioni;

 

    • distribuzione geografica;

 

    • scalabilità su grandi quantità di dati;

 

    • gestione delle anomalie;

 

In questo modo Azure mette a disposizione la sua visione di una piattaforma completa ed efficace, fornendo un’infrastruttura dinamica, affidabile e mutevole nel tempo a seconda delle risorse necessarie per rendere efficaci gli sviluppi applicativi.

 

Microsoft Windows Azure è da tempo una soluzione molto gettonata nel mondo degli sviluppatori .NET, per via della forte integrazione con i software di sviluppo di casa Microsoft; la piattaforma da qualche tempo non è più solamente Platform as a Service, ma permette anche di creare vere e proprie istanze virtuali Linux o Windows, andando quindi a coprire il settore Infrastructure as a Service.

 

 

 

 

Guida_cloud_computing_HostingTalk

Guida_cloud_computing_2_HostingTalk

Facci sapere cosa ne pensi!

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *