Multi-Tenant

Multi-Tenant. La stessa istanza di un software può essere utilizzata da più organizzazioni mantenendo i dati isolati. Un concetto semplice. Un concetto che và a nozze con il SaaS (Software as a service).

Wikipedia ci dice cosa vuol dire SaaS.

Wikipedia ci dice anche cosa vuol dire Multi-Tenant.

Multi-tenant si riferisce ad una architettura software in cui una singola istanza del suddetto software gira su un server ed è utilizzata da più di una client organization (tenant). La multi-tenancy rappresenta il concetto opposto all’architettura multi-istanza, nella quale separate istanze del software sono dedicate alle client organization.
In un’architettura multi tenant, un’applicazione software è progettata per partizionare virtualmente i suoi dati e la sua configurazione in modo che ogni client lavori con un’istanza virtuale personalizzata.

Wikipedia non ci aiuta però a realizzare praticamente qualcosa. Per questo ci sono altre fonti di informazione.

Questa immagine (fonte: quì) ci spiega la differenza tra multitenant e singletenant in modo molto semplice!

singletenant-multitenant multi-tenant

Quì è possibile trovare un interessante ed esaustivo articolo in merito a questa tematica.

Quì ci sono delle slide interessanti sul multitenant ed il PHP.

GitLab – Conosciamolo

Prima di conoscere GitLab è meglio conoscere Git.
Consiglio quindi di leggere quà: link

Se non basta c’è anche questa guida veloce per conoscere Git!

Installare GitLab su una debian è semplice. Basta seguire quei quattro passi che propone l’howto ufficiale ed in 10 minuti il tutto è funzionante.
Io l’ho fatto su di una macchina in cui ho Apache2 che gira ed ho quindi dovuto creare un virtualhost per farlo funzionare sotto Apache2.

Attenzione! Ho volutamente provato ad ignorare i requisiti minimi per l’installazione, lasciando alla VM solo 512mb di RAM, ma l’installazione si bloccava restituendo gli errori più disparati.
A questo punto sono andato sul sito ufficiale ed ho controllato i requisiti minimi dichiarati ed ho quindi dato alla VM 2GB e l’installazione di ha messo 13 secondi per terminare con successo. Tenetelo presente.

Virtual host per Apache2:

<VirtualHost *:80>
ServerName gitlab.example.com
ServerSignature Off
ProxyPreserveHost On
<Location />
Order deny,allow
Allow from all
ProxyPassReverse http://127.0.0.1:8080
ProxyPassReverse http://gitlab.example.com/
</Location>
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA]
# needed for downloading attachments
DocumentRoot /home/git/gitlab/public
#Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up.
ErrorDocument 404 /404.html
ErrorDocument 422 /422.html
ErrorDocument 500 /500.html
ErrorDocument 503 /deploy.html
</VirtualHost>

Poi lanciare i seguenti comandi (necessari per abilitare i moduli su apache):

a2ensite gitlab
a2enmod proxy_http
a2enmod proxy
a2enmod rewrite
service apache2 restart

Disabilitare Nginx a favore di Apache2:

nginx['enable'] = false

Riconfigurare e restartare GitLab:

gitlab-ctl reconfigure
gitlab-ctl restart

 

Quì un bellissimo link che spiega come utilizzare Git con NetBeans: Link
Esistono poi una infinità di client per tutte le piattaforme. Evito di linkare tutto quì che tanto basta cercare su Google!

Una utile immagine per capire come funziona (grazie Maruko):

MgaV9

E quì l’illuminante articolo dell’autore!

Link fonte del virtual host su apache2