Heroku: un servizio Cloud di Platform as a Service multilinguaggio

In questo articolo vedremo come utilizzare il servizio Cloud di Platform as a Service offerto da Heroku. Da premettere che il servizio gratuito offerto da Heroku permette ad ogni applicazione di utilizzare un “solo” dyno, dove un dyno è un singolo processo, che a scelta può essere o di tipo web o batch (denominato worker), che risponde alle richieste HTTP ed esegue l’applicazione. Per quanto riguarda il database, utilizzando il piano dev all’interno dello Starter Tier, è possibile utilizzare gratis  fino a 10 mila righe di database per massimo 20 connessioni e senza caching in-memory.

I linguaggi supportati da Heroku comprendono Ruby,  Java, Node.js, Scala, Clojure, Python e PHP ed il Sistema Operativo alla base è Debian o Ubuntu.

Prima di iniziare introduciamo alcuni dei termini utilizzati all’interno della Piattaforma Heroku. Ritorniamo sul concetto di dyno: esso è l’unità base all’interno di Heroku ed è un container (di tipo lightweight) che esegue un singolo comando (per utente). Possiamo assimilarlo ad un container unix virtualizzato che può lanciare un comando nell’ambiente selezionato (nel nostro caso il Cedar Stack). Il comando eseguito in un dyno può essere un processo web, un processo worker (batch) o un altro tipo di processo la cui sintassi è consentita nel file Procfile.

Il Celadon Cedar Stack è il runtime stack di default di Heroku; con runtime stack si intende l’ambiente completo per il deploy, il quale comprende il S.O., i linguaggi di programmazione e le librerie. Di seguito indichiamo i due stack supportati (anche se lo stack Bamboo è ormai obsoleto e non è possibile pubblicare nuove App su di esso) ed i linguaggi supportati da essi:

Base Technology MRI 1.8.6 REE 1.8.7 MRI 1.9.2 Node.js Clojure Java Python Scala
Badious Bamboo Debian Lenny 5.0
Celadon Cedar Ubuntu 10.04

La piattaforma è inoltre legata al servizio di Social Coding ( e Versioning)  Github come si evidenzia nella figura:

L’integrazione tra Heroku e Github

E’ possibile infatti scaricare un progetto da Github (che può essere stato sviluppato da diversi collaboratori) e poi pubblicare la releas finale in automatico sulle macchine Heroku.

Per poter utilizzare il servizio, bisogna innanzitutto registrarsi fornendo la propria mail a questo indirizzo:

Registriamoci su Heroku

Riceveremo una mail con un link di attivazione, seguendo il link otteniamo:

Scegliamo una password per il nostro account

Scegliamo una password e clicchiamo su Send, verremo automaticamente loggati sui Server Heroku.

Per poter pubblicare una nostra applicazione su Heroku, dobbiamo installare un programma client denominato Heroku Toolbelt, esso comprende:

  • Heroku Client: il client (a linea di comando) per interfacciarsi col servizio;
  • Foreman: un programma per eseguire localmente le proprie applicazioni (opzionale);
  • Git: per poter pubblicare le applicazioni su Heroku;
  • un runtime Ruby: serve per il funzionamento di tutti gli altri software.

Heroku Toolbelt è scaricabile all’indirizzo:

https://toolbelt.herokuapp.com/

ed è disponibile per molti S.O. compresi Windows, Linux (Ubunu e Debian) e Mac OS X.

Per chi  avesse un ambiente con già installato Ruby e Git, è possibile installare il solo client Heroku come “gemma” tramite il comando:

gem install heroku

tornando invece all’Heroku Toolbelt, una volta scaricato, lo lanciamo facendo doppio click (in Windows è un file .exe).

Installazione Heroku Toolbelt

Clicchiamo su Next:

Scegliamo il Path d’installazione

Indichiamo il Path d’installazione e clicchiamo su Next.

Osservazione: quello che indichiamo è il Path d’installazione dell’ Heroku Client (e non di tutti gli altri software che compongono il pacchetto Toolbelt), infatti installando sulla macchina di prova mi ritrovo la cartella Heroku correttamente sulla partizione E: , mentre sia l’ambiente Ruby che Git vengono installati su C: (sempre in Program Files(x86)).

Custom Installation: selezioniamo i programmi opzionali da installare

A questo punto possiamo scegliere tra la Full Installation o la Custom Installation: nella Custom Installation possiamo decidere se installare o meno Foreman o Git (nel caso in cui avessimo già una precedente installazione).

Clicchiamo su Next ed otteniamo una schermata di riepilogo. Clicchiamo su Install.

L’installazione provvederà anche ad includere il percorso “E:Program Files (x86)Herokubin”  (quello che abbiamo scelto durante l’installazione) nella variabile d’ambiente PATH , così come i path alle cartelle bin dell’ambiente Ruby e Git.

Prima di continuare, vi segnalo un piccolo problema che potrebbe insorgere con la configurazione di Ruby: come detto verrà installato anche l’ambiente Ruby, ma quando proviamo a lanciare la “Command Prompt with Ruby“, che troviamo nel menù “Tutti i Programmi“:

L’ambiente ruby installato

potrebbe essere segnalato il seguente errore(“C:Program” non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch):

Errore al lancio del file setrbvars.bat

questo errore avviene perchè abbiamo installato Ruby in un path il cui nome ha all’interno degli spazi (“Program Files”), come workaround basta aggiungere degli apici quando viene richiamato il path: facciamo tasto destro su “Command Prompt with Ruby” e poi clicchiamo su Proprietà:

Clicchiamo sul tab Collegamento

clicchiamo su Collegamento e in destinazione troviamo:

C:WindowsSystem32cmd.exe /E:ON /K  C:Program Files (x86)ruby-1.9.2binsetrbvars.bat

quindi poniamo degli apici quando troviamo il richiamo al file setrbvars.bat :

C:WindowsSystem32cmd.exe /E:ON /K  "C:Program Files (x86)ruby-1.9.2binsetrbvars.bat"

Il file setrbvars.bat serve ad inizializzare l’ambiente Ruby, in particolare setta la variabile d’ambiente PATH, in realtà l’installazione dell’Heroku Toolbelt già provvedere a settare tale Variabile d’Ambiente, quindi questa modifica potrebbe non essere necessaria.

A questo punto l’installazione dovrebbe essere perfettamente funzionante, quindi lanciamo una finestra di comando e digitiamo il seguente comando per loggarci ad Heroku:

heroku login

ci verranno richieste le credenziali di accesso (email e password).

Loggiamoci su Heroku

viene inoltra generata la chiave pubblica per la connessione SSH.

Possiamo ora creare una App di test con il comando:

heroku create

così facendo però sara Heroku ad assegnare un nome univoco alla nostra App (il nome deve essere univoco all’interno di tutta la piattaforma Heroku, quindi non solo all’interno delle nostre App, altrimenti riceviamo un errore del tipo “Name is already taken“), altrimenti possiamo passarglielo come parametro:

heroku create test-app

per avere una lista delle App già inviate al server basta digitare:

heroku apps

per cancellare una App:

heroku destroy nomeApp

verrà poi chiesto di ridigitare il nome della App. Per conoscere gli altri comandi disponibili basta digitare:

heroku help

l’help è però suddiviso in sezioni, quali:

  • addons
  • apps
  • config

per interrogare l’help di una particolare sezione basta precedere il nome della sezione dalla keyword help:

heroku help apps

Otteniamo questo output:

Output del comando heroku help apps

Possiamo gestire le nostre applicazioni anche tramite browser andando all’indirizzo:

https://dashboard.heroku.com/apps

una volta autenticati, possiamo scorrere la lista delle nostre App:

La lista delle nostre Applicazioni pubblicate su Heroku

ad esempio l’Applicazione che abbiamo creato in precedenza ha assunto il nome casuale di mighty-reef-5917: cliccando sul nome dell’App si aprirà una dashboard tramite la quale possiamo gestire diversi parametri associati alla nostra App (ad esempio possiamo aggiungere degli Addons, cambiare nome all’App, aggiungere dei collaboratori, avere uno storico delle attività svolte sull’App, ecc…) :

Visualizziamo la nostra Applicazione

Per eseguire l’applicazione clicchiamo su Open Application:

La nostra prima App

L’Applicazione creata è una semplice pagina web che visualizza un messaggio di benvenuto.

Creiamo ora una Applicazione utilizzando del codice sorgente, per questa prima prova utilizzeremo del codice Ruby.

Su Github è presente un progetto di esempio in Ruby (realizzato dagli sviluppatori di Heroku stessa)  che visualizza il classico messaggio Hello World:

https://github.com/heroku/ruby-sample

la prima cosa  da fare è scaricare il progetto in una nostra cartella locale, per farlo utilizzeremo il comando clone di git:

git clone https://github.com/heroku/ruby-sample.git

verrà creata una cartella ruby-sample nella directory corrente (quella da cui abbiamo lanciato il comando precedente):

Contenuto del progetto ruby-sample

il file web.rb contiene il seguente codice Ruby:

require 'sinatra'
get '/' do
  "Hello, world"
end

quindi un semplice print della stringa Hello World. L’unico prerequisito è la libreria Open Source Sinatra che implementa il pattern architetturale del Model View Controller, simile a Rails, Merb o Camping. Il file Gemfile descrive invece quali gemme sono richieste per il funzionamento del progetto, nel nostro caso è richiesta la gemma Sinatra. La presenza  di questo file è inoltre necessaria per poter far riconoscere alla piattaforma Heroku che siamo in presenza di un progetto Ruby, quindi va incluso anche se vuoto. Il file Procfile contiene il comando utilizzato per poter far partire il proprio dyno, nel nostro caso esso è di tipo web e deve lanciare il codice del file web.rb.

web: bundle exec ruby web.rb -p $PORT

Ora ci spostiamo nella cartella ruby-sample col comando:

cd ruby-sample

e creiamo una nuova applicazione su heroku:

heroku create ruby-sample-appuntisoftware

così facendo creiamo anche un nuovo remote repository di nome heroku. A questo punto possiamo fare l’upload del nostro codice tramite Git:

git push heroku master

ritorniamo alla lista delle applicazioni pubblicate su heroku e clicchiamo sulla app appena creata, oppure possiamo utilizzare direttamente il link fornito in fase di creazione dell’applicazione (sarà sempre del tipo http://nomeapp.herokuapp.com), otteniamo il nostro bellissimo ( 🙂 ) messaggio di Hello World.

Con questo termina il nostro primo tutorial, nel prossimo articolo vedremo come pubblicare una applicazione in linguaggio Java.

1 Stella2 Stelle3 Stelle4 Stelle5 Stelle (2 voti, media: 5,00 di 5)
Loading...
You can leave a response, or trackback from your own site.

Leave a Reply

*