Η πρόκληση της κλίμακας agents στο Git
Η μαζική είσοδος των αυτόνομων agents στην ανάπτυξη λογισμικού έχει μεταβάλει δραστικά τον φόρτο εργασίας στα αποθετήρια (repositories). Ενώ παραδοσιακά τα πιο πολυσύχναστα repositories δέχονταν μερικές δεκάδες εγγραφές ανά δευτερόλεπτο, η παράλληλη εκτέλεση agents γύρω στο 24ωρο δημιουργεί τεράστιες αιχμές traffic. Για να υποστηριχθεί αυτή η πραγματικότητα, η νέα αρχιτεκτονική του GitHub σχεδιάστηκε ώστε να ελαχιστοποιεί τον συντονισμό (minimize coordination) και να αποζευγνύει την αποθήκευση από την υπολογιστική ισχύ (decouple storage from compute).
Ref-CAS και διαχείριση αναφορών υψηλής απόδοσης
Τα αντικείμενα Git (Git objects) είναι εξ ορισμού αμετάβλητα (immutable) και προσδιορίζονται από το περιεχόμενό τους, γεγονός που σημαίνει ότι πολλαπλοί συγγραφείς μπορούν να τα αποθηκεύσουν ταυτόχρονα χωρίς συμφωνία. Το μόνο στοιχείο που απαιτεί συγχρονισμό είναι η ενημέρωση των αναφορών (reference updates).
Για να αποφευχθούν τα σημεία συμφόρησης (bottlenecks) των παραδοσιακών μονολιθικών προσεγγίσεων σε object storage, δημιουργήθηκε το Ref-CAS (Reference Compare-and-Swap). Πρόκειται για μία υπηρεσία καταγεγραμμένης ροής (replicated log service) όπου κάθε ενημέρωση αναφοράς αποτελεί μια πράξη compare-and-swap που επικυρώνεται από απαρτία (quorum), κλειδώνοντας αποκλειστικά τις επηρεαζόμενες αναφορές.
Εικονικά αντίγραφα και ασύγχρονη συμπίεση
Στο επίπεδο εξυπηρέτησης αιτημάτων, τα αιτήματα δρομολογούνται μέσω του Spokes σε ομάδες από virtual replicas. Τα τελευταία αποτελούν αναλώσιμους υπολογιστικούς πόρους των οποίων ο τοπικός δίσκος λειτουργεί ως προσωρινή κρυφή μνήμη (cache), η οποία μπορεί να ανασυσταθεί ανά πάσα στιγμή. Παράλληλα, τα μόνιμα δεδομένα (packs και indexes) αποθηκεύονται στο Azure Blob Storage.
Η βαριά εργασία της συμπίεσης των packs και της απομάκρυνσης μη προσβάσιμων αντικειμένων (garbage collection) έχει αφαιρεθεί πλήρως από τους κόμβους εξυπηρέτησης κίνησης. Εκτελείται αποκλειστικά στο παρασκήνιο από ειδικούς κόμβους compaction, οι οποίοι αξιοποιούν μισθώσεις (leases) και ενημερώνουν το Ref-CAS για την εξέλιξη της κατάστασης, επιτυγχάνοντας επίπεδη καμπύλη latency ακόμα και υπό ακραίο φόρτο.