Nei giorni scorsi GitHub ha annunciato una nuova tecnologia redundancy-based costruita intorno alle tecniche di controllo versione del core di git al fine di ottenere un sistema di storage per le repository che sia più affidabile e dalle performance migliori: DGit. Nonostante git sia stato progettato come sistema distribuito (qualsiasi copia di una repository contiene l’intera storia), di per sé non supporta il mirroring. Quello che fa DGit è andare a salvare i dati di ogni repository in tre server differenti.

DGit inoltre utilizza internamente i protocolli di git per mantenere sincronizzati i vari mirror. Questo obiettivo viene raggiunto a livello di applicazione invece che al livello di storage e ciò assicura più flessibilità e più opzioni per la manutenzione.

Nell’annuncio viene spiegata l’idea di funzionamento così: “Se un file server necessita di essere messo offline, DGit determina automaticamente quali repository vengono lasciate con meno di tre repliche e ne crea automaticamente di nuove su dei file server differenti. Questo processo di “guarigione” utilizza tutti i server rimanenti sia come sorgenti che come destinazioni.”

I file server salvano tutti i dati su degli SSD locali, assicurando così una minore latenza ed una mole di dati in ingresso maggiore. Git stesso ha al suo interno delle tecniche per funzionare meglio quando ha accesso a dei dischi più veloci.

dgit-1

Caratteristiche e benefici

  • La topologia dei file server diventa più flessibile;
  • Quando un server ha qualcosa che non va, DGit produce velocemente nuove copie delle repository hostate su di esso e le distribuisce attraverso il cluster;
  • L’instradamento per aggirare le situazioni critiche è meno distruttivo: si ferma semplicemente il traffico verso il server infetto;
  • Non c’è bisogno di hot-spares: tutte le CPU e tutta la memoria sono disponibili per gestire il traffico utente. Le operazioni di lettura e scrittura possono essere gestite separatamente da server diversi;
  • Il carico di lavoro è più bilanciato fra i server: una grossa repository non può peggiorare le performance delle altre sullo stesso server;
  • Disaccoppiamento delle repliche: copie di una stessa repository possono essere presenti in zone di disponibilità diverse, o addirittura in data center differenti.

Stato di rilascio

Dopo aver effettuato la migrazione delle repository degli sviluppatori di DGit, GitHub ha effettuato tre mesi di test sulle proprie repository private, per poi spostare anche quelle pubbliche. Le prossime sulla linea di lavoro sono le grandi repository pubbliche come Ruby, Rilas, Bootstrap e D3. Volendo dare qualche numero, attualmente circa il 58% delle repository ed il 96% dei Gist ha effettuato la migrazione a DGit, ciò rappresenta circa il 67% delle operazioni di Git.

[Fonte]

No more articles