Η ανάγκη για έναν νέο backend ελέγχου πηγής
Η κλίμακα και ο ρυθμός ανάπτυξης λογισμικού στο OpenAI έχουν αλλάξει δραστικά χάρη στη χρήση αυτοματοποιημένων συστημάτων όπως το Codex. Οι μηχανικοί και τα αυτόνομα πράκτορες (agents) εκτελούν παράλληλα εργασίες σε τεράστια κλίμακα, παράγοντας πολλαπλάσια branches, pushes, merges και fetches. Σε αυτό το περιβάλλον, το παραδοσιακό monorepo άρχισε να αντιμετωπίζει σοβαρά σημεία συμφόρησης (bottlenecks), με την αξιοπιστία να πέφτει κάτω από το 90% και τους χρόνους απόκρισης να αυξάνονται επικίνδυνα.
Αντί να εγκαταλείψουν το οικοσύστημα του Git, οι μηχανικοί του OpenAI επέλεξαν να διατηρήσουν την πλήρη συμβατότητα με το πρωτόκολλο και τους clients, επανασχεδιάζοντας εξ αρχής το backend. Έτσι γεννήθηκε το Pando, ένα σύστημα σχεδιασμένο να προσφέρει οριζόντια κλιμακούμενες εγγραφές και μέγιστο throughput ανάγνωσης.
Αρχιτεκτονική του Pando και αιτιώδης συνέπεια
Τα παραδοσιακά συστήματα Git απαιτούν συνοχή σε ολόκληρο το αποθετήριο (repository-wide consistency), γεγονός που αναγκάζει τα pushes σε άσχετα μεταξύ τους branches να ανταγωνίζονται σε ένα κοινό σημείο συντονισμού. Το Pando παραβλέπει αυτή την απαίτηση υιοθετώντας την αιτιώδη συνέπεια (causal consistency):
- Ανεξάρτητος συντονισμός branch: Οι ενημερώσεις σε διαφορετικά branches προχωρούν παράλληλα. Κάθε αλλαγή καταγράφεται ως μία έκδοση αναφοράς (ref version) που συνδέεται με το packfile της και τις απαραίτητες εξαρτήσεις της.
- Επαναχρησιμοποίηση packfiles: Αντί να δημιουργείται εξατομικευμένο packfile για κάθε client ανάλογα με το τοπικό του ιστορικό, το Pando επαναχρησιμοποιεί αποθηκευμένα πακέτα, εξοικονομώντας τεράστιους πόρους σε CPU και δίσκο.
Βελτιστοποίηση δικτύου και απόδοση γραμμής (line-rate fetch)
Κατά τη διάρκεια ενός fetch ή clone, το Pando αξιοποιεί πλήρως το χαρακτηριστικό packfile-uri του πρωτοκόλλου Git. Ο server επιστρέφει συνδέσεις λήψης για τα απαιτούμενα packfiles, τα οποία σερβίρονται μέσω περιφερειακών caches (Express service) με ποσοστά επιτυχίας (cache hit rates) που ξεπερνούν το 99%.
Με αυτόν τον τρόπο, οι servers του Pando περιορίζονται σε λειτουργίες διαπραγμάτευσης και επιλογής πακέτων, επιτρέποντάς τους να τρέχουν σε εικονικές μηχανές γενικής χρήσης (commodity hardware) και να εξαντλούν τα όρια δια των διασυνδέσεων 10 Gbps των clients.
Συμπίεση τύπου LSM-tree (Compaction)
Για να αποφευχθεί η υποβάθμιση της απόδοσης από τη συσσώρευση χιλιάδων μικρών πακέτων («L0» packfiles) κάθε μέρα, το Pando ενσωματώνει έναν μηχανισμό compaction παρόμοιο με τα Log-Structured Merge-Trees. Οι εργασίες υπόβαθρου συνδυάζουν σταδιακά τα packfiles σε ανώτερα επίπεδα (έως L4), βελτιώνοντας τους λόγους συμπίεσης και μετατρέποντας τη διαδικασία επιλογής πακέτων σε μια γρήγορη αναζήτηση λογαριθμικής πολυπλοκότητας.