Το MobileConfig επιτρέπει στους προγραμματιστές να διαχειρίζονται κεντρικά τις παραμέτρους διαμόρφωσης μιας εφαρμογής για κινητά στα κέντρα δεδομένων μας. Μόλις αλλάξει μια τιμή παραμέτρου στον κεντρικό μας διακομιστή, δισεκατομμύρια συσκευές εφαρμογών ανακτούν αυτόματα και εφαρμόζουν τη νέα τιμή χωρίς ενημερώσεις εφαρμογών. Αυτές οι παράμετροι διαμόρφωσης απομακρυσμένης διαχείρισης εξυπηρετούν διάφορους σκοπούς, όπως δοκιμή A/B, διάθεση δυνατοτήτων και εξατομίκευση εφαρμογών. Το MobileConfig βρίσκεται σε παραγωγή από το 2015 και εξυπηρετεί ορισμένες από τις πιο ευρέως χρησιμοποιούμενες εφαρμογές στον κόσμο, όπως το Facebook, το Instagram και το Messenger.
Σε αυτό το ιστολόγιο, περιγράφουμε πώς το MobileConfig επιτρέπει την ταχεία καινοτομία στο Meta Quest και Έξυπνα γυαλιά Ray-Ban Meta.
Προκλήσεις διαμόρφωσης σε μικτή πραγματικότητα
Οι συσκευές Reality Labs μπορούν να έχουν εκτεταμένους κύκλους ανάπτυξης και κυκλοφορίας. Έτσι, η αξιόπιστη διαμόρφωση και ο πειραματισμός είναι ζωτικής σημασίας για τη συνέπεια, την ταχύτητα προγραμματιστή, την ασφάλεια και τη συνολική αξιοπιστία.
Καθώς το οικοσύστημα μικτής πραγματικότητας (MR) έχει αναπτυχθεί, έχουμε εισαγάγει πολλές περισσότερες εφαρμογές. Αυτές οι εφαρμογές συχνά χρειάζονται κοινή χρήση τιμών διαμόρφωσης. Καθώς δεν υπάρχουν κοινά μοτίβα για τη χρήση των παραμέτρων, υπάρχουν αντι-μοτίβα όπου οι μηχανικοί ανακαλύπτουν εκ νέου τον τροχό ή δημιουργούν ad hoc τρόπους λήψης διαμόρφωσης που είναι πολύ συγκεκριμένοι για κάθε εφαρμογή. Είδαμε επίσης μοτίβα χρήσης όταν οι εφαρμογές και οι υπηρεσίες χρειάζονταν να ανακτήσουν τιμές νωρίς κατά την εκκίνηση, γεγονός που έκανε αυτά τα προβλήματα πιο περίπλοκα. Αυτές οι προκλήσεις έκαναν τη διαμόρφωση και τον πειραματισμό στην μαγνητική τομογραφία πολύ πιο προκλητική.
Εισαγάγετε MobileConfig
Στο MobileConfig, μια διαμόρφωση (config για συντομία) ορίζεται ως ένα σύνολο παραμέτρων με συγκεκριμένο τύπο δεδομένων και μπορεί να ελέγξει διαφορετικές πτυχές της συμπεριφοράς μιας εφαρμογής. Οι προγραμματιστές αποφάσισαν τον τύπο δεδομένων (Boolean, int, double, string) για την παράμετρο που θα χρησιμοποιηθεί κατά τη δημιουργία της. Το MobileConfig προσφέρει μια βιβλιοθήκη πελατών και API πολλαπλών πλατφορμών που επιτρέπει στους προγραμματιστές να διαβάζουν εύκολα κάθε παράμετρο διαμόρφωσης στις πολλές διαφορετικές εφαρμογές και υπηρεσίες μας. Παρέχει επίσης ένα πλήρες σύνολο εργαλείων υποστήριξης, επιτρέποντας στους προγραμματιστές να ελέγχουν με ακρίβεια ποιες τιμές λαμβάνει μια δεδομένη παράμετρος με βάση το περιβάλλον πελάτη, όπως η περιοχή ή ο τύπος συσκευής.
Το MobileConfig έχει πολλές περιπτώσεις χρήσης, συμπεριλαμβανομένων σημαιών χαρακτηριστικών, δοκιμών A/B και διαχείρισης εκδόσεων. Ένας προγραμματιστής μπορεί να χρησιμοποιήσει το MobileConfig για να ελέγξει την κυκλοφορία μιας νέας δυνατότητας ξεχωριστά από την κυκλοφορία της εφαρμογής, τοποθετώντας την πίσω από μια παράμετρο διαμόρφωσης. Η παράμετρος διαμόρφωσης μπορεί να συνδεθεί με μια δοκιμή A/B και να ενεργοποιηθεί για ένα μικρό τμήμα χρηστών, ενώ παρακολουθεί κρίσιμες μετρήσεις εφαρμογής, όπως η απόδοση ή η αφοσίωση.
Εναλλακτικά, η παράμετρος μπορεί να χρησιμοποιηθεί ως σημαία χαρακτηριστικού, επιτρέποντας στους προγραμματιστές να ελέγχουν ποιος έχει πρόσβαση στη δυνατότητα ενώ είναι υπό ανάπτυξη. Μόλις η λειτουργία βρίσκεται πίσω από το MobileConfig, ο προγραμματιστής μπορεί να κάνει όλες αυτές τις αλλαγές χωρίς να αγγίξει τον κώδικα από την πλευρά του πελάτη.
Το ιστολόγιό μας στο “Διαμόρφωση κινητού στο Meta” συζητά περισσότερα για τον τρόπο υλοποίησης του MobileConfig και τις αποφάσεις σχεδιασμού πίσω από την τεχνολογία.
Επέκταση του MobileConfig ως πλατφόρμα στο MR
Δεδομένης της εμπειρίας μας με την ανάπτυξη εφαρμογών για κινητά, ήταν σαφές ότι η οικογένεια συσκευών της Meta θα χρειαζόταν επίσης ένα σύστημα διαμόρφωσης για να κινηθεί γρήγορα, να ενεργοποιήσει τον πειραματισμό και να ελέγξει από απόσταση διάφορες πτυχές των συστημάτων. Αποφασίσαμε ότι το MobileConfig θα ήταν η καλύτερη λύση για να καλύψει τις ανάγκες αυτών των πλατφορμών λόγω της αποδεδειγμένης αξιοπιστίας και απόδοσης, της υπάρχουσας σουίτας εργαλείων για την αντιμετώπιση προβλημάτων και τον εντοπισμό σφαλμάτων και την ικανότητά του να απελευθερώνει αλλαγές με ασφάλεια.
Συγκεντρώσαμε όλα τα αιτήματα διαμόρφωσης μέσω μιας ενιαίας υπηρεσίας Android (MobileConfigService), με αποτέλεσμα ελαφρούς πελάτες που δεν χρειάζεται να ανακτούν ρυθμίσεις παραμέτρων, να αναφέρουν τηλεμετρία ή να κατανοούν πρωτόκολλα υποστήριξης. Επίσης συγκεντρώσαμε τον έλεγχο ταυτότητας υπηρεσιών, επιτρέποντας στις εφαρμογές της συσκευής να αξιοποιούν διαμορφώσεις που βασίζονται σε περιόδους σύνδεσης με ή χωρίς πληροφορίες χρήστη. Εδώ, με συνέπεια σε επίπεδο συσκευής, η υπηρεσία μπόρεσε να επιτρέψει τον πειραματισμό σε πολλές εφαρμογές και υπηρεσίες ταυτόχρονα, απλοποιώντας τη διαδικασία ενσωμάτωσης για νέες εφαρμογές και επιτρέποντάς τους να επικοινωνούν με την κορυφαία υπηρεσία μέσω IPC χωρίς να χρειάζεται να παρέχουν πρόσθετο έλεγχο ταυτότητας ή build-tooling (για διαμόρφωση).
Επιπλέον, έχουμε δημιουργήσει βιβλιοθήκες πάνω από το MobileConfig σε πλατφόρμες όπως τα Windows για να επιτρέπεται η ανάκτηση ρυθμίσεων όπου το MobileConfig API δεν μπορεί να κατασκευαστεί ως έχει (γνωστός και ως χρησιμοποιώντας buck). Συνολικά, αποφύγαμε την επανεφεύρεση του τροχού σε μεγάλη κλίμακα και είχαμε μια σταθερή εμπειρία χρήστη στο MR, καθώς η οικογένεια των εφαρμογών μας παρείχε ένα όχημα για καθαρή αύξηση της ταχύτητας προγραμματιστών με πολύ χαμηλότερη καμπύλη εκμάθησης.
Επέκταση του MobileConfig στην οικογένεια συσκευών της Meta
Η νέα επαναχρησιμοποίηση της υπηρεσίας MobileConfig μας έδωσε τη δυνατότητα να βελτιστοποιήσουμε τη διαδικασία ανάπτυξής μας και να βελτιώσουμε τη λειτουργικότητα άλλων συσκευών χαμηλής κατανάλωσης. Ποτέ δεν είχαμε σκοπό να χρησιμοποιήσουμε βιβλιοθήκες MobileConfig σε μικροελεγκτές. Ωστόσο, τα επανατοποθετήσαμε σε thin client(s) και καταργήσαμε τις εξαρτήσεις για να μειώσουμε το συνολικό αποτύπωμα μνήμης. Επιπλέον, βελτιστοποιήσαμε τη ροή συγγραφής προγραμματιστών, επιτρέποντας στους προγραμματιστές να στοχεύουν συσκευές χωρίς τυπική ενσωμάτωση buck. Η εργασία εδώ επιτρέπει στις συσκευές μας χαμηλής κατανάλωσης να επικοινωνούν και να καταναλώνουν ρυθμίσεις παραμέτρων μέσω Bluetooth και Wi-Fi.
Πολλές από αυτές τις συσκευές, όπως τα έξυπνα γυαλιά Ray-Ban Meta, έχουν πολλαπλές αρχιτεκτονικές μικροελεγκτών έλεγχος των διαφόρων πτυχών του προϊόντος, συμπεριλαμβανομένης της ισχύος, των καμερών κ.λπ. Σε αυτές τις περιπτώσεις, χρησιμοποιούμε διάφορες τεχνολογίες και πρωτόκολλα, όπως IPC και SPI, για να συγχρονίσουμε τις τιμές διαμόρφωσης με τα διάφορα στοιχεία. Σε περιπτώσεις όπου το συγκεκριμένο υλικό δεν μπορούσε να εκτελέσει την βασική βιβλιοθήκη MobileConfig λόγω περιορισμών γλώσσας, θα μπορούσαμε να χρησιμοποιήσουμε ξανά την εξαιρετικά αποδοτική σχεδίαση της κρυφής μνήμης και τις δομές δεδομένων για την παροχή τιμών διαμόρφωσης. Αφαιρέσαμε αυτές τις λεπτομέρειες από την εμπειρία προγραμματιστή, επιτρέποντας μια ενοποιημένη ροή εργασιών διαμόρφωσης.
Τώρα, οι συσκευές, ειδικά οι συσκευές χαμηλής κατανάλωσης, δεν είναι πάντα συνδεδεμένες στο Διαδίκτυο και πρέπει να εκτελούν πειράματα και να εκκινούν λειτουργίες ανεξάρτητα από τις εκδόσεις συσκευών. Οι σχεδιαστικές μας επιλογές μας βοήθησαν να δημιουργήσουμε μια απρόσκοπτη εμπειρία συνοδευτικών εφαρμογών που χρησιμοποιεί τις ίδιες βιβλιοθήκες διαμόρφωσης για κινητά με την άλλη οικογένεια εφαρμογών μας, επιτρέποντας σε αυτές τις συσκευές χαμηλής κατανάλωσης την ίδια σουίτα λειτουργιών. Αυτή η νέα ευελιξία επιταχύνει σημαντικά τη διαδικασία ανάπτυξής μας και τον χρόνο για την εμπορία, επιτρέποντάς μας να παρέχουμε τεχνολογία αιχμής στους πελάτες μας πιο γρήγορα και αποτελεσματικά.
Ενεργοποίηση μελλοντικών συσκευών με περιορισμένη συνδεσιμότητα και περιορισμένους πόρους
Μετά την επιτυχία μας με τις συσκευές MR, ενοποιήσαμε τις προσπάθειες για να αξιοποιήσουμε το MobileConfig ως μια κεντρική πλατφόρμα. Στόχος μας είναι να ενεργοποιήσουμε την επόμενη γενιά συσκευών με την ίδια σειρά λειτουργιών και δυνατοτήτων. Αυτές οι συσκευές νέας γενιάς έχουν διαφορετικές προκλήσεις και το MobileConfig πρέπει να είναι υψηλής απόδοσης και βελτιστοποιημένο για την κατανάλωση υπολογιστικών πόρων στη συσκευή.
Βελτιστοποιήσαμε την υπηρεσία μας ώστε να λειτουργεί μόνο υπό συγκεκριμένες συνθήκες (π.χ. κατά τη φόρτιση ή με Wi-Fi). Ακόμη και με τους συγχρονισμούς της διαμόρφωσης με τον διακομιστή, τα libs μας διασφαλίζουν ότι δεν εξαντλούμε την μπαταρία, καθώς υπάρχει ελάχιστη παροχή (πολύ διαφορετική από την οικογένεια των εφαρμογών μας). Δημιουργήσαμε επίσης προσαρμοσμένα IPC API για μείωση της χρήσης μνήμης και CPU. Η εργασία εδώ επιτρέπει σετ δυναμικής διαμόρφωσης σε πρόσφατα εγκατεστημένες εφαρμογές για λήψη τιμών διαμόρφωσης από μια κεντρική υπηρεσία MobileConfig.
Ενώ βρισκόμαστε σε ένα τόσο περιορισμένο περιβάλλον, ενεργοποιήσαμε με επιτυχία τον πειραματισμό σε επίπεδο λειτουργικού συστήματος με προσαρμοσμένες AOSP Java και Native API διατηρώντας παράλληλα την ίδια εμπειρία χρήστη με την άλλη οικογένεια εφαρμογών που χρησιμοποιούν τα εργαλεία της Meta. Έχουμε επίσης αναπτύξει ένα προσαρμοσμένο εργαλείο που επιτρέπει στους προγραμματιστές να χρησιμοποιούν γρήγορα και αποτελεσματικά τη διαμόρφωση με περιορισμένη ακίνητη περιουσία οθόνης, ξεκλειδώνοντας περαιτέρω την αποτελεσματικότητα των προγραμματιστών. Οι εξελίξεις στις συσκευές μελλοντικής γενιάς μας επέτρεψαν να παρέχουμε την καλύτερη υπηρεσία στην κατηγορία μας που μας ξεχωρίζει από τους ανταγωνιστές μας και προσφέρει σημαντική επιχειρηματική αξία.
Ένα άλμα στο μέλλον
Η υποδομή του Meta ενδυναμώνει μια νέα γενιά συσκευών, βοηθώντας τους προγραμματιστές να κινηθούν γρήγορα. Καθώς χτίζουμε περισσότερες συσκευές και εφαρμογές, θα αξιοποιήσουμε το MobileConfig ως μια κεντρική πλατφόρμα, δεδομένων των δυνατοτήτων και της επιτυχίας του με την υπάρχουσα σειρά μας.
Οι προσπάθειες εδώ επιτρέπουν στις ομάδες προϊόντων μας να κλιμακωθούν με ρυθμούς που διαφορετικά θα χρειάζονταν μήνες και τεράστιες προσπάθειες μηχανικής για τον συντονισμό. Οδηγούμε με κοινούς στόχους σε οργανισμούς που θέτουν τις ανάγκες των χρηστών μας στην πρώτη γραμμή.