Il nostro sito web fa uso di cookies di terze parti. Per le informazioni sul loro funzionamento e sulle modalità di disabilitazione si veda la nostra cookie policy. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookies. Leggi di più.OK

Come gestiamo i nostri server?

Ciao a tutti,

spesso ci viene chiesto quale sia la struttura hardware e software del progetto.
Senza dare troppi dettagli, che potrebbero impattare sulla sicurezza, vogliamo comunque condividere il modello di sviluppo.

La premessa è che tutto il codice prodotto è gestito attraverso il sistema di controllo versione GIT e, che lo stesso GIT, viene utilizzato, in abbinamento con GITLAB-CI (di cui parleremo in un futuro articolo), per effettuare la compilazione e la distribuzione in ambiente di produzione.

A livello di flusso, adottiamo il più classico degli approcci all’utilizzo di GIT:

  1. Si crea un branch per ogni nuova funzionalità
  2. Quando la funzionalità è pronta per essere testata, si passa tutto sul branch ‘develop’
  3. Quando sono stati effettuati i test, in un ambiente reale con un database completo di dati, e sono soddisfatti tutti i regression test, si procede al merge su ‘master’.

Fino a questo momento non accade nulla nei server di produzione, dato che abbiamo deciso di affidare il deploy a GITLAB-CI, che provvede a fare un deploy automatico in base ad un evento scatenante. In questo caso, abbiamo deciso che il deploy avvenga solamente nel momento in cui viene creato un nuovo tag (che corrisponde alla marchiatura della versione del software).

A questo punto, GITLAB-CI provvede al deploy, compilazione, e configurazione del nuovo ambiente. Tuttavia i singoli clienti non vengono passati automaticamente, ma si provvede con una seconda procedura alla migrazione dei singoli setup verso la nuova versione, dato che ogni nuova release potrebbe comportare anche una migrazione al database o altre configurazioni.

Abbiamo poi sviluppato un manager interno che tiene costantemente monitorato l’intero deployment, tutti i server e tutti i sottodomini, creando statistiche sia di richieste evase istantanee che storicizzate.

Attualmente stiamo utilizzando RRDTool, script in PERL che interroga NGINX per ottenere statistiche base, il risultato è già più che soddisfacente, però a breve migreremo verso Nginx Plus, soluzione enterprise e commerciale che implementa anche delle statistiche molto più dettagliate.

Questo è il nostro risultato attuale, come si può vedere la nostra dashboard gestisce i vari branch creati e le statistiche in tempo reale.

metags_mgr