Το Snapchat είναι πολύ γνωστό μεταξύ των tweens και των εφήβων. Μάλλον είσαι πάνω από 25 αν δεν μπορείς να καταλάβεις πώς λειτουργεί. Το Snapchat, μια από τις πιο δημοφιλείς εφαρμογές μέσων κοινωνικής δικτύωσης, παρέχει στα παιδιά και τους εφήβους ακριβώς αυτό που θέλουν: μια εύκολη μέθοδος για να μοιράζεστε συνηθισμένα περιστατικά, ενώ παράλληλα τα κάνει να φαίνονται κουλ.
Σε αντίθεση με το Facebook και το Twitter, που καταγράφουν και δημοσιεύουν ό,τι κάνετε, το Snapchat χρησιμοποιεί μηνύματα που υποτίθεται ότι εξαφανίζονται (δείτε πώς δεν το κάνουν).
Υπάρχουν πολλά για το Snapchat, και αν είστε προγραμματιστής είναι ακόμα περισσότερα. Έτσι, αυτή η ανάρτηση θα σας δώσει μια προβολή υψηλού επιπέδου του Snapchat σχεδιασμός συστήματος και πολλές περισσότερες γνώσεις.
Εισαγωγή
Το Snapchat έχει έδρα στις ΗΠΑ κοινωνικής δικτύωσης εφαρμογή που επιτρέπει στους χρήστες να συνδέονται άμεσα, να μοιράζονται εικόνες και πολλά άλλα.
- Τα μηνύματα και οι εικόνες (ή τα στιγμιότυπα) έχουν χρονικό όριο 24 ωρών. Ενθαρρύνει τους ανθρώπους να μοιράζονται τις ιστορίες τους σε ομάδες.
- Το Snap Map επιτρέπει στους χρήστες να βλέπουν σε έναν χάρτη πού βρίσκονται οι φίλοι τους.
- Οι αναμνήσεις θυμίζουν στους χρήστες φωτογραφίες που αποθήκευσαν ή μοιράστηκαν ένα χρόνο αργότερα.
- Το Snapchat είναι εξαιρετικά δημοφιλές στις νεότερες γενιές, ειδικά στους εφήβους. Υπάρχουν 319 εκατομμύρια ενεργοί χρήστες στην εφαρμογή και 5.4 δισεκατομμύρια στιγμιότυπα αποστέλλονται καθημερινά.
Σημαντικοί όροι σχεδιασμού
Μονολιθική Αρχιτεκτονική – Μια εφαρμογή μονού επιπέδου που λειτουργεί ανεξάρτητα από άλλες εφαρμογές είναι γνωστή ως μονόλιθος (μονολιθική αρχιτεκτονική). Ένας μονόλιθος έχει σχεδιαστεί για να εκτελεί και να χειρίζεται όλες τις δραστηριότητες που απαιτούνται για την ολοκλήρωση μιας εργασίας. Η εφαρμογή εκτελεί όλες τις λειτουργίες από την αρχή μέχρι το τέλος.
Μικροεπιχειρήσεις – Είναι πολικό αντίθετο των μονόλιθων. Μικροεπιχειρήσεις είναι μια αρχιτεκτονική προσέγγιση που οργανώνει μια εφαρμογή ως συλλογή υπηρεσιών. Αυτές οι υπηρεσίες χρησιμοποιούνται για τον έλεγχο πολλών πτυχών μιας εφαρμογής. Ένας πελάτης δίνει μια παραγγελία, ένας σερβιτόρος την παίρνει και την παραδίδει και ένας σεφ την ετοιμάζει. Σε αυτό το παράδειγμα, κάθε στοιχείο λειτουργεί ανεξάρτητα και χωριστά από τα άλλα. κανείς δεν ξέρει τι ακριβώς κάνουν οι άλλοι και κανείς δεν έχει πρόσβαση στις ίδιες πληροφορίες.
JSON: Είναι μια μορφή που βασίζεται σε κείμενο που μπορεί να χρησιμοποιηθεί για την εμφάνιση αντικειμένων JavaScript, κυριολεκτικά, πίνακες και δεδομένα. Αυτή η μορφή που βασίζεται σε κείμενο προορίζεται να είναι απλή στην ανάγνωση και εγγραφή, καθώς και να είναι εύπεπτη από το λογισμικό. Το JSON χρησιμοποιείται συνήθως για τη μεταφορά δεδομένων και πληροφοριών μεταξύ διακομιστών και διαδικτυακών εφαρμογών.
Ορχήστρα: Η τεχνική της αυτοματοποίησης πολλών λειτουργιών είναι γνωστή ως ενορχήστρωση. Αυτές οι εργασίες περιλαμβάνουν τη διαμόρφωση συστημάτων υπολογιστών και λογισμικού, τον συντονισμό και τη διαχείριση.
πληρεξούσιο: Ένας διακομιστής μεσολάβησης λειτουργεί ως ενδιάμεσος μεταξύ ενός πελάτη που αναζητά έναν πόρο και του διακομιστή που τον παρέχει.
Πλέγμα: Ένα πλέγμα υπηρεσιών είναι ένα μοτίβο αρχιτεκτονικής λογισμικού που προσθέτει ένα επίπεδο σε ένα επίπεδο υποδομής για να επιτρέπει ρυθμιζόμενη, παρατηρήσιμη και ασφαλή επικοινωνία μεταξύ υπηρεσιών μέσω διακομιστή μεσολάβησης.
Σχεδιασμός υψηλού επιπέδου
Μονολιθικά Προβλήματα
Το Snapchat δημιουργήθηκε ως μονόλιθος που βασίζεται σε σύννεφο και βασίζεται στο Google App Engine. Ωστόσο, καθώς το πρόγραμμα αυξανόταν σε δημοτικότητα και απέκτησε περισσότερους χρήστες και δεδομένα, η επεκτασιμότητα έγινε πρόβλημα.
Επιπλέον, με μια τεράστια ακτίνα έκρηξης εντός του μονόλιθου, οι διαταραχές σε όλο το σύστημα ήταν πιο πιθανές. Ένα από τα προβλήματα του Snapchat ορίστηκε ως μια «τραγωδία των κοινών», στην οποία τα χαρακτηριστικά ανταγωνίζονταν για πρόσβαση σε πόρους. Οι λειτουργίες φορτώνονταν κατά την έναρξη της εφαρμογής, επιτρέποντας σε ορισμένες λειτουργίες να φορτώνουν πιο γρήγορα, αλλά σε άλλες να φορτώνουν πιο αργά.
Οι μηχανικοί αναζήτησαν επίσης σαφή ορατότητα, διαχωρισμό και ιδιοκτησία των εξαρτημάτων τους από αναπτυξιακή σκοπιά, έτσι ώστε η υπηρεσία να είναι ευέλικτη και αποτελεσματική.
Μεταμόρφωση
Καθώς το Snapchat επεκτεινόταν, η εταιρεία συνειδητοποίησε ότι έπρεπε να σπάσει τη μονολιθική της υποδομή σε μικρότερα, πιο αποτελεσματικά κομμάτια. Προκειμένου να παρέχει μειωμένο λανθάνοντα χρόνο, ο οργανισμός αποφάσισε να αναπτύξει ένα σχέδιο βασισμένο σε μικροϋπηρεσίες.
Για να εκπληρώσει αυτούς τους στόχους, το Snapchat επέλεξε να ενημερώσει το λογισμικό του χρησιμοποιώντας το Amazon DynamoDB, μια κλιμακούμενη υπηρεσία βάσης δεδομένων NoSQL. Η εταιρεία κατάφερε να μειώσει τη μέση καθυστέρηση κατά 20% ως αποτέλεσμα των προσπαθειών της.
Η εφαρμογή ξαναγράφηκε σε πολλές μικρότερες εφαρμογές από την εταιρεία. Το Snapchat ξεκίνησε με πολλές εφαρμογές, όπως κάμερα, συνομιλία, μνήμες, επεξεργασία εικόνας, κατανάλωση περιεχομένου και χάρτη. Αν και η ενσωμάτωση αυτών των προγραμμάτων σε ένα ενιαίο μονόλιθο ήταν βολική για τους καταναλωτές, έθετε ένα σοβαρό τεχνικό ζήτημα όσον αφορά τη διατήρηση της καλής απόδοσης.
Για μια επανεγγραφή, η εταιρεία θέσπισε πολλούς βασικούς κανόνες. Μην προφορτώνετε. κάθε δυνατότητα θα πρέπει να είναι η δική της εφαρμογή και θα πρέπει να είναι γρήγορη. Το Snapchat σταμάτησε τις τροποποιήσεις σε πολλά σημεία για να επιτρέψει την επανεγγραφή, καθιστώντας το αυστηρά τεχνική εργασία.
Ενσωμάτωση πρόσθετων χαρακτηριστικών
Η εφαρμογή κάμερας του Snapchat διαθέτει φακούς, φίλτρα, bitmojis και τη δυνατότητα προσθήκης κινούμενων εικόνων επαυξημένης πραγματικότητας, μεταξύ άλλων. Η εφαρμογή συνομιλίας του Snapchat επιτρέπει επίσης στους χρήστες να αποθηκεύουν φωτογραφίες, να αποθηκεύουν συνομιλίες, να προσθέτουν emoticon και πολλά άλλα.
Ο χάρτης του Snapchat, μεταξύ άλλων, σας επιτρέπει να παρακολουθείτε τους φίλους εάν το θέλουν. Οι μνήμες, η επεξεργασία φωτογραφιών και η κατανάλωση περιεχομένου είναι όλες ξεχωριστές εφαρμογές Snapchat με τις μοναδικές τους δυνατότητες.
Οι αναμνήσεις σάς επιτρέπουν να αποθηκεύετε ή να τροποποιείτε φωτογραφίες ή βίντεο για μελλοντική χρήση, καθώς και να τα μεταφορτώνετε ή να τα στέλνετε. Οι χρήστες μπορούν επίσης να χρησιμοποιήσουν την επεξεργασία εικόνας για να κόψουν ταινίες, να προσθέσουν κείμενο, να προσθέσουν αυτοκόλλητα και πολλά άλλα.
Η κατανάλωση εξωτερικού περιεχομένου του Snapchat αναφέρεται σε αυτό που δείχνει στους χρήστες με βάση μια σειρά παραμέτρων.
Μικροεπιχειρήσεις
Το πρόγραμμα εξαρτιόταν σε μεγάλο βαθμό από το JSON για την εκτέλεση ερωτημάτων δικτύου εκείνη τη στιγμή. Ωστόσο, η ανάλυση του JSON ήταν χρονοβόρα και αναποτελεσματική. Το Snapchat χρησιμοποίησε ένα κεντρικό API διαχείρισης δικτύου για να κρύψει τη χρήση του JSON ως λεπτομέρεια υλοποίησης για την αντιμετώπιση αυτού του προβλήματος.
Οι μικροϋπηρεσίες εισάγουν τις προκλήσεις της διαχείρισης κατάστασης εφαρμογής, της επικοινωνίας υπηρεσιών και της διαχείρισης αστοχιών. Το Snapchat χρησιμοποίησε τεχνολογίες ανοιχτού κώδικα όπως το Temporal για να ξεπεράσει τις δυσκολίες ενορχήστρωσης προκειμένου να οικοδομήσει ένα ισχυρό και αξιόπιστο σύστημα.
Ως αποτέλεσμα, ο οργανισμός αποφάσισε να χρησιμοποιήσει ένα μοτίβο σχεδιασμού πλέγματος υπηρεσιών. Το Snapchat χρησιμοποίησε το Envoy, ένα άλλο εργαλείο ανοιχτού κώδικα που λειτουργεί ως διακομιστής μεσολάβησης, για να επιτύχει αυτό το μοτίβο. Ο Envoy διαχειρίστηκε τη ροή της κίνησης υπηρεσιών μέσω της υποδομής, δίνοντας στους προγραμματιστές ορατότητα σε πιθανές δυσκολίες.
Το Snapchat δημιούργησε μια εσωτερική εφαρμογή που ονομάζεται Switchboard εντός του πλέγματος υπηρεσιών. Ο πίνακας μεταγωγής χρησίμευσε ως πίνακας ελέγχου για τις υπηρεσίες του Snap, επιτρέποντας στους χρήστες να αλλάζουν κίνηση, να διαχειρίζονται τις εξαρτήσεις υπηρεσιών (μια δυνατότητα που επιτρέπει τη διαχείριση μιας υπηρεσίας ανάλογα με την κατάσταση άλλων) και την αποστράγγιση περιοχών.
Για να απλοποιηθεί η πολυπλοκότητα των πιθανών διαμορφώσεων εντός των υπηρεσιών, χρησιμοποιήθηκε το Switchboard αντί να αποκαλυφθεί ολόκληρο το Envoy API. Η Snap διαθέτει κοινό εσωτερικό και περιφερειακό δίκτυο για τις μικροϋπηρεσίες της χάρη στο πλέγμα υπηρεσιών.
Οι υπηρεσίες εντός της ίδιας περιοχής θα μπορούσαν να συνδεθούν μεταξύ τους χωρίς τη χρήση του δημόσιου Διαδικτύου και καμία εξωτερική κίνηση δικτύου δεν θα μπορούσε να επικοινωνήσει με εσωτερικά τμήματα δικτύου.
Μόνο οι Gateways θα εξουσιοδοτούνται να εκτίθενται στο διαδίκτυο για λόγους ασφαλείας. Οι πύλες API, για παράδειγμα, μπορεί εύκολα να χρησιμεύσουν ως μπροστινές πόρτες, να επεξεργάζονται αιτήματα από πελάτες/χρήστες και να τους δρομολογούν μαζί με το δίκτυο.
Δίκτυο & Πύλη API
Όλα τα ερωτήματα από τον πελάτη Snapchat προέρχονται μέσω της πύλης API. Χρησιμοποιεί την ίδια εικόνα Envoy και συνδέεται στο ίδιο Control Plane με τις εσωτερικές μας μικροϋπηρεσίες. Το Control Plane μας επιτρέπει να ενεργοποιούμε προσαρμοσμένα φίλτρα Envoy.
Τα συστήματα ελέγχου ταυτότητας του Snapchat, καθώς και οι τεχνολογίες περιορισμού ρυθμού και απόρριψης φορτίου, αντιμετωπίζονται από αυτά τα φίλτρα. Το Envoy χρησιμοποιεί το Service Mesh για να δρομολογήσει αιτήματα στη σχετική microservice αφού ολοκληρωθεί η αλυσίδα φίλτρων.
Συμπέρασμα
Η πύλη API του Snapchat δρομολογεί την εξωτερική κίνηση στις πολλές λειτουργίες της εφαρμογής. Τα αιτήματα των χρηστών για τροποποίηση των καταστάσεων διαμόρφωσης διαχειρίζονται από διακομιστές, οι οποίοι στη συνέχεια παρέχουν δεδομένα και πληροφορίες για τις πολυάριθμες υπηρεσίες της εφαρμογής.
Συνολικά, ο σημερινός σχεδιασμός του Snapchat μπορεί να συγκριθεί με πολλά προγράμματα που εκτελούνται σε ένα μόνο λειτουργικό σύστημα, το οποίο σε αυτή την περίπτωση είναι η εφαρμογή Snapchat. Προσπάθησα πολύ σκληρά να σας δώσω μια επισκόπηση υψηλού επιπέδου του σχεδιασμού του συστήματος Snapchat. Ελπίζω να σας φάνηκε χρήσιμο.
Αφήστε μια απάντηση