lunedì 28 agosto 2017

Un giro di OpenWhisk per tutti - Parte 1

Il serverless computing è un modo di far girare del software davvero interessante.

Tutorial su OpenWhisk in Bluemix
Livello: beginners
Tempo di esecuzione: < 20 minuti

>>>NOTA DI SETTEMBRE 2017: ora OpenWhisk si chiama Function, quindi eseguendo gli step proposti, tenetene conto. <<<


Uno dei problemi che i gestori di sistemi software devono affrontare è quello della determinazione del Total Cost of Ownership (TCO) di un sistema, cioè quanto viene a costare in modo omnicomprensivo l'avere quel sistema in esercizio.
Per i sistemi che girano su macchine presso i datacenter locali, il costo è un miscuglio di elementi: hardware, energia elettrica, presidio, manutenzione, affitto o gestione del locale, stipendi del personale ecc.
Inoltre c'è l'obsolescenza e l'ammortamento degli investimenti.



Il serverless computing invece è una modalità con cui una buona parte di un sistema software, in particolare quelle parti del sistema che vengono eseguite all'accadere di una certa condizione o evento, non implica nessun costo quando il software non è eseguito e quando invece esso lo è, il costo è ben determinato e collegato ai millisecondi di esecuzione.
Essendo questa modalità di esecuzione ottenibile in Cloud sulla piattaforma Bluemix, evidentemente non ci saranno costi aggiuntivi di ammortamento, energia elettrica, hardware ecc. ed il TCO diviene non solo prevedibile e misurabile, ma direttamente correlato con numero di istruzioni software che il sistema esegue.
Cioè il costo del sistema viene ad essere una componente fissa del business che quel software sta instrumentando. Ad esempio, se oggi col mio sistema che gestisce il mio shop on-line, per 10 vendite ho un costo x,  domani facendo 100 vendite, il costo sarà 10x.




In IBM il serverless computing su Bluemix si chiama OpenWhisk e il software in esso allocato segue i concetti di Action, di Trigger e di Sequenza
In questo tutorial voglio mostrare in modo molto semplice come iniziare a scrivere delle action OpenWhisk affinché si capisca meglio questo eccellente meccanismo per costruire architetture complesse a piacere, totalmente robuste, ma eccezionalmente poco costose.

Step 1) Accesso a OpenWhisk

Iniziamo con l'aprire il nostro account Bluemix, selezioniamo lo Space che preferiamo e clicchiamo il menù con le tre lineette in alto a sinistra, selezionaniamo quindi OpenWhisk:







Comparirà la pagina di Overview che consiglio di leggere, clicchiamo il pulsante StartCreating:


Step 2) Creazione Action

Nella pagina successiva clicchiamo su Create Action.
Si apre una pagina di dettaglio dove inseriremo il nome della nostra Action selezioneremo il linguaggio in cui vogliamo scrivere il sorgente, scelto tra Node.JS, Python3 e Swift.
Io ho scelto il nome salutami e come linguaggio Node.js:

clicchiamo il pulsante Create e arriviamo a scrivere il codice:

 Nella schermata 'Code' scrivere il seguente codice (o altro a vostra scelta):

/**
 * Hello world as an OpenWhisk action.
 */
function main(params) {
    var name = params.name || 'Mondo';
    return {payload:  'Ciao, ' + name + '!'};
}


A questo punto siamo pronti a salvare e ad eseguire questa prima Action cliccando in alto a destra Salva e Invoca.

Vediamo un basso nella pagina il risultato:
{
  "payload": "Ciao, Mondo!"
}
 
Ragioniamo un attimo su cosa abbiamo fatto: abbiamo preso un pezzo di codice 
sorgente, vi abbiamo applicato un nome e senza nessuna compilazione o deploy evidente 
ne abbiamo invocato l'esecuzione. 
In pratica ogniqualvolta quel codice viene invocato, esso viene installato ed eseguito. Robusto ed efficace!
Poiché abbiamo scritto un programma con un parametro proviamo ad instanziare il parametro 
ed eseguiamo ancora una volta la nostra action.
Clicchiamo su Change Action Input
e scriviamo questo statement, magari inserendo il vostro nome:
 
{
    "name" : "Ferdinando"
}







Clicchiamo Apply e poi invochiamo di nuovo l'action cliccando Invoke in alto a destra.
Vediamo che effettivamente l'action fornisce un risultato differente.
 



Ora questa Action può essere invocata anche da programmi esterni usando l'URI impostata
 automaticamente al momento della creazione.

Step 3) Monitoraggio esecuzioni

Ora vediamo come monitorare le chiamate alla nostra action.
Clicchiamo in alto a destra il pulsante Open in Develop View
Nel menù di sinistra clicchiamo Monitoring.
Si apre una schermata dove possiamo vedere quante volte abbiamo invocato la nostra Action ed altri indicatori:



Per il momento mi fermo qui, ma prossimamente vedremo come generalizzare l'utilizzo di Actions OpenWhisk utilizzandole anche dall'esterno di Bluemix, per monetizzare le nostre invenzioni software!