# Platform as a service

Platform as a service (PaaS) è una tipologia di architettura a servizi che consiste nel servizio di messa a disposizione di piattaforme di elaborazione (Computing platform) e di solution stack. Gli elementi del PaaS permettono di sviluppare, sottoporre a test, implementare e gestire le applicazioni aziendali senza i costi e la complessità associati all'acquisto, alla configurazione, all'ottimizzazione e alla gestione dell'hardware e del software di base.
Gli elementi del PaaS possono essere impiegati per lo sviluppo di applicazioni e di servizi applicativi come la collaborazione in team, l'integrazione Web, l'integrazione del database, la sicurezza e la gestione dello stato. Tali servizi possono essere impiegati come una soluzione integrata sul Web.

## La storia

La prima piattaforma come servizio disponibile pubblicamente è stata Zimki, lanciata da Fotango, un'azienda londinese di proprietà di Canon Europe. È stata sviluppata nel 2005, con una versione beta lanciata nel marzo 2006 e presentata pubblicamente all'Eurocon 2006. È stata seguita da Heroku, AWS Elastic Beanstalk e dotCloud, che in seguito si è evoluta in Docker.
Al momento della sua chiusura, Zimki contava diverse migliaia di account di sviluppatori. Questo ha dimostrato la fattibilità tecnica della Platform-as-a-service, ma è stato anche il primo esempio dei pericoli della dipendenza da un singolo fornitore. Questo aspetto è stato sottolineato quando l'amministratore delegato (Simon Wardley, famoso per le mappe Wardley) ha annunciato all'OSCON 2007 che Zimki non sarebbe più stato rilasciato come open source e ha discusso il futuro di quello che all'epoca veniva chiamato framework-as-a-service (successivamente chiamato platform-as-a-service), parlando dell'importanza di un mercato di fornitori basato su un modello di riferimento open source.
L'intento originario del PaaS era quello di semplificare la scrittura del codice, con l'infrastruttura e le operazioni gestite dal fornitore del PaaS. Inizialmente, tutti i PaaS erano nel cloud pubblico. Poiché molte aziende non volevano avere tutto nel cloud pubblico, sono state create opzioni PaaS private e ibride (gestite dai dipartimenti IT interni).

## Tipologie

* Add-on di impianti di sviluppo che permettono di modificare le applicazioni SaaS (Software as a service) esistenti.
* Stand alone: ambienti di sviluppo intesi a fornire un ambiente di sviluppo generalizzato.
* Ambienti di applicazioni finalizzati alla distribuzione che forniscono servizi come la sicurezza, la gestione della continuità e disponibilità, ecc.
* Solution stack: insieme di diversi sistemi, ad esempio i middleware o software applicativi raggruppati insieme per produrre un risultato complessivo integrato (soluzione). Esistono diverse "pile di soluzione" precompilate (ad esempio: WISA, VINCE, WIMP, WAMP, LAMP).
* Open Platform as a Service consente allo sviluppatore di utilizzare qualsiasi linguaggi di programmazione, qualsiasi database, sistemi operativi, server, ecc.

## Principali caratteristiche
### Servizi per sviluppare, testare, implementare e mantenere applicazioni host nello stesso ambiente di sviluppo integrato

Diversi elementi del PaaS forniscono diverse combinazioni di servizi, in modo da fungere da supporto al ciclo vitale di sviluppo di un'applicazione. Comprehensive PaaS dovrebbe fornire tutte le opzioni dei servizi in un ambiente di sviluppo integrato dentro l'attuale piattaforma di distribuzione target con il controllo di un codice sorgente, il controllo di versione con un test dinamico e interattivo che può avere molteplici usi e tramite il roll-out e roll-back con l'abilità di individuare e monitorare chi apporta date modifiche quando è necessario raggiungere dati scopi.

### Strumenti per la creazione di interfaccia utente basata su web

Gli elementi del PaaS tipicamente forniscono un qualche livello di supporto per facilitarne la creazione degli user interface, o basati su standard come HTML e JavaScript, o basati su altre tecnologie Rich Internet Application, come l'Adobe Flex, Flash e Air. Possono essere definiti ambienti e scenari ricchi, interattivi e che permettono molteplici usi, collaudati da persone (non programmatori), con strumenti che rendono semplice log out o single out, caratteristiche che infastidiscono i principianti o gli esperti. Gli strumenti di creazione permettono alle interfacce di essere definite per i diversi profili degli utilizzatori tramite la funzione e la competenza. Le caratteristiche dei PaaS hanno migliorato l'esperienza degli utenti per mezzo dell'incorporazione di canali per il feedback della gente reale attraverso la creazione, il design, lo sviluppo, la produzione... l'intero ciclo vitale.

### L'architettura multi-tenant

Elementi dei PaaS tecnicamente tentano di supportare l'uso dell'applicazione attraverso molti utenti simultanei. L'architettura permette di definire il "rapporto di fiducia" tra gli utenti per ciò che riguarda la sicurezza, l'accesso, la distribuzione del codice sorgente, la storia della navigazione, i profili dell'utente, storia dell'interazione e uso dell'applicazione.

### Integrazione con i servizi web e i database

Il supporto per le interfacce SOAP e REST permette agli elementi dei PaaS di creare composizioni di molteplici servizi web, a volte chiamate "mash-up", così come ai database di accesso e ai servizi riutilizzabili mantenuti dentro i network privati. L'utilizzo di questo genere di soluzioni, ad oggi, permette di abbattere i tempi di realizzazione del software ed apre le porte a scenari in cui i programmi possano cooperare tra loro mediante metodi ed interfacce condivise.

### Supporto per lo sviluppo della collaborazione di squadra

L'abilità di dare vita e condividere un codice con un team accresce la produttività degli elementi del PaaS. Possono così essere definiti orari, team, possessori di diverse aree di responsabilità, ruoli di disegnatori, sviluppatori, ecc. aggiornati e monitorati basati sui diritti di accesso.

### Strumenti di grado utilitario

Gli elementi del PaaS forniscono agli sviluppatori una visione all'interno dei lavori delle loro applicazioni e all'interno del comportamento dei loro utenti. Alcuni elementi dei PaaS usano delle informazioni sul comportamento dell'utente per permettere pay-per-use. L'evidenza storico-pratica può aiutare a:
* determinare se i servizi sono di valore per gli utenti/clienti
* paragonare il valore dei servizi
* monitorare l'attività basata sui costi e i guadagni
Gli strumenti di visualizzazione potrebbero mostrare tipologie di uso, esponendo le relazioni funzionali e correlazionali fra:
* servizi e/o interazioni dell'utente
* il valore all'utente o utenti
* il costo dei percorsi di servizi alternativi come il web e il cellulare.

### Open Source Platform-as-a-Service

* Cloud Foundry

### Soluzioni commerciali basate su CloudFoundry

* IBM Bluemix
* Predix