Συμμάζεμα εφαρμογής: Πρόοδος, εμπόδια και ανακαλύψεις
Πριν από μερικούς μήνες, ανακοινώσαμε τα σχέδιά μας να επιδιορθώσουμε την εφαρμογή του League of Legends, μια προσπάθεια που ονομάζουμε «Καμπάνια Συμμαζέματος της Εφαρμογής».
Η ομάδα της Riot δεσμεύεται να συνεχίσει να σας ενημερώνει για την πρόοδό μας, ακόμη και όταν συναντούμε δυσκολίες. Για να το πούμε ευθέως, έχουμε δρόμο ακόμα μέχρι να είμαστε ικανοποιημένοι με την απόδοση της εφαρμογής.
Στο σημερινό blog θα μιλήσουμε για ορισμένες θετικές εξελίξεις που είχαμε. Επίσης, θα μιλήσουμε και για κάποια από τα εμπόδια που συναντήσαμε, καθώς και για το πώς σκοπεύουμε να τα ξεπεράσουμε με τα επόμενα βήματα που θα ακολουθήσουμε.
ΜΕΡΙΚΗ ΠΡΟΟΔΟΣ
Όπως είπαμε και στο πρώτο μας blog για την εφαρμογή, θέλουμε να μειώσουμε τον χρόνο bootstrap και να τον φέρουμε γύρω στα 15 δευτερόλεπτα, ακόμα και για τους παίκτες του 90ού εκατοστημορίου. Υπενθυμίζουμε ότι ο χρόνος bootstrap είναι ένα μέτρο του χρόνου που απαιτείται για την εκκίνηση της εφαρμογής.
Για να επιτύχουμε τον στόχο μας, είπαμε ότι θα ενοποιήσουμε και θα μειώσουμε τον αριθμό των προσθηκών και των εφαρμογών Ember στην εφαρμογή. Αν δεν είστε εξοικειωμένοι με την ορολογία, να θυμάστε απλώς ότι οι προσθήκες είναι εργαλεία που μας βοηθούν να χωρίζουμε τον κώδικα της εφαρμογής σε χρήσιμα τμήματα. Οι εφαρμογές Ember είναι εργαλεία που αποτελούν κινητήριο μοχλό του περιβάλλοντος του παιχνιδιού.
Μέχρι τώρα, η πρόοδος σε αυτόν τον τομέα είναι πολύ καλή. Στο γράφημα παρακάτω, μπορείτε να δείτε τον συνολικό αριθμό προσθηκών και εφαρμογών Ember στην εφαρμογή στη διάρκεια του χρόνου. Σε κάθε ενημέρωση, ο αριθμός αυτός μειώνεται συνεχώς. Τώρα υπάρχουν περίπου 10% λιγότερες εφαρμογές Ember και 20% λιγότερες προσθήκες που θα πρέπει να φορτώσει η εφαρμογή κατά το bootstrap, σε σύγκριση με όταν ξεκινήσαμε αυτήν τη διαδικασία.
Αυτά είναι ευχάριστα νέα! Ωστόσο, αντιμετωπίσαμε και ορισμένα εμπόδια που θέλουμε να μοιραστούμε μαζί σας.
ΜΕΡΙΚΑ ΕΜΠΟΔΙΑ
Στις πρώτες Ενημερώσεις της χρονιάς βλέπαμε ουσιαστικές βελτιώσεις στον χρόνο bootstrap, ως αποτέλεσμα των αλλαγών που κάναμε στις προσθήκες.
Ωστόσο, από την Ενημέρωση 10.3 και εξής, αρχίσαμε να βλέπουμε τους χρόνους bootstrap να κινούνται αργά προς τη λάθος κατεύθυνση, ενώ στην Ενημέρωση 10.7 σημειώθηκε αρνητικό ρεκόρ στους χρόνους bootstrap συνολικά.
Μπορείτε να δείτε όλες αυτές τις πληροφορίες στο γράφημα παρακάτω. Για να κατανοήσετε αυτό το γράφημα, έχετε υπόψη ότι αυτό που θέλουμε να συμβεί είναι οι καμπύλες να μετακινούνται προς την αριστερή πλευρά του γραφήματος (που σημαίνει γρηγορότεροι χρόνοι bootstrap).
Μια πιθανή εξήγηση για το πρόσφατο πισωγύρισμα είναι το αυξημένο φορτίο των σέρβερ του League τις τελευταίες εβδομάδες. Για κάπως προφανείς λόγους, πολλοί από εσάς σε όλον τον κόσμο περνάτε περισσότερο χρόνο στο σπίτι αυτήν την περίοδο. Παίζετε πολύ League κι αυτό αποτελεί πρόκληση για την υποδομή των σέρβερ μας, με αποτέλεσμα ασυνέπεια στους χρόνους απόκρισης και μεγαλύτερους χρόνους bootstrap για την εφαρμογή.
Καθώς αυξάνουμε τη χωρητικότητα των σέρβερ, για να αντιμετωπίσουμε την αυξημένη ροή παικτών, ενδέχεται να ξεκινήσουμε να βλέπουμε ξανά πραγματικά θετικά αποτελέσματα στις επιδόσεις της εφαρμογής. Επίσης, θα αναζητήσουμε άλλες πιθανές αιτίες, όπως τη μείωση της ποσότητας κώδικα Javascript που φορτώνεται κατά τη διάρκεια του bootstrap.
Ανεξάρτητα από την αιτία αυτού του πισωγυρίσματος, εξακολουθούμε να έχουμε ελπίδες: Όπως είπαμε στο πρώτο dev blog μας, κατά τη διαδικασία αντιμετώπισης των προβλημάτων με τον χρόνο bootstrap και τον χρόνο κλειδώματος της Επιλογής Ήρωα (που ακολουθεί στη λίστα μας), κάνουμε ξεκαθάρισμα και επεξεργαζόμαστε ξανά ορισμένα θεμελιώδη στοιχεία της αρχιτεκτονικής της εφαρμογής.
Αυτό σημαίνει ότι επιδιορθώνουμε σφάλματα και αντιμετωπίζουμε ορισμένα από τα προβλήματα της θεμελιώδους αρχιτεκτονικής που σας πονοκεφαλιάζουν.
Ένα από αυτά τα προβλήματα αρχιτεκτονικής που ανακαλύψαμε έχει να κάνει με μια λειτουργία της εφαρμογής που ονομάζεται Affinity.
ΤΟ ΠΡΟΒΛΗΜΑ ΜΕ ΤΟ AFFINITY
Το Affinity υλοποιήθηκε ως λειτουργία, όταν κάναμε την «ενημέρωση της εφαρμογής» πριν από μερικά χρόνια. Είναι βασικά ένα εργαλείο που μας επιτρέπει να προσδιορίζουμε ποιες προσθήκες πρέπει να φορτωθούν πριν ολοκληρωθεί η διαδικασία bootstrap.
Ανακαλύψαμε δύο προβλήματα με το Affinity:
- Το Affinity ήταν χαλασμένο. Κάποια στιγμή μέσα στο 2018, το Affinity χάλασε κατά λάθος. Επειδή το Affinity δεν λειτουργεί σωστά, η εφαρμογή φορτώνει πάντοτε κάθε προσθήκη κατά τη διάρκεια της διαδικασίας bootstrap και της φόρτωσης μετά το παιχνίδι.
- Ακόμη κι αν το Affinity επιδιορθωνόταν, δεν θα έλυνε τα προβλήματά μας. Πιστεύουμε ότι, ακόμη κι αν το Affinity λειτουργούσε όπως είχε σχεδιαστεί, δεν έδινε αποτελεσματικά προτεραιότητα στη φόρτωση προσθηκών. Με απλά λόγια, η εφαρμογή είχε πάντοτε πρόβλημα με τη φόρτωση πάρα πολλών προσθηκών κατά τη διαδικασία boostrap.
ΕΝ ΣΥΝΤΟΜΙΑ: Πρέπει να αντικαταστήσουμε πλήρως το Affinity με μια καλύτερη, πιο αποδοτική λύση.
Αυτές οι ανακαλύψεις μας εξέπληξαν, αλλά επαλήθευσαν μία από τις βασικές μας αρχές, όταν είχαμε ξεκινήσει να σχεδιάζουμε την εφαρμογή: Αφιερώνοντας χρόνο στον διεξοδικό έλεγχο της εφαρμογής, καταφέραμε να ανακαλύψουμε μερικές από τις βασικές αιτίες των προβλημάτων.
ΕΠΟΜΕΝΑ ΒΗΜΑΤΑ
Τώρα που ξέρουμε ότι το Affinity δεν κάνει τη δουλειά για την οποία προορίζεται, μπορούμε να υλοποιήσουμε μια νέα λύση που θα δίνει προτεραιότητα στις προσθήκες σωστά. Έτσι, θα μειώσουμε τους χρόνους boostrap για τους παίκτες και θα μπορούμε να επικεντρωθούμε σε άλλες ουσιαστικές εργασίες στην εφαρμογή.
Τίποτα από όλα αυτά δεν αλλάζει ριζικά το σχέδιό μας να επιδιορθώσουμε την εφαρμογή, αλλά ενδέχεται να μας καθυστερήσει λίγο. Όπως και να 'χει, αυτή η ανακάλυψη είναι κάτι καλό, γιατί μας βοηθά να χαράξουμε με περισσότερη ακρίβεια την πορεία μας. Αν το αποτέλεσμα είναι μια πιο αξιόπιστη εμπειρία, με λιγότερα προβλήματα συνολικά, τότε οι προσπάθειές μας δεν θα είναι μάταιες.
Όταν θα έχουμε μειώσει τους χρόνους boostrap της εφαρμογής τόσο, ώστε να είμαστε ικανοποιημένοι, θα ξεκινήσουμε τη δεύτερη φάση της Καμπάνιας Συμμαζέματος της Εφαρμογής: τη μείωση των χρόνων απόκρισης της εφαρμογής κατά την Επιλογή Ήρωα. Η ενασχόλησή μας με την Επιλογή Ήρωα είναι προφανώς το πιο ενδιαφέρον κομμάτι αυτής της καμπάνιας για πολλούς από εσάς, αλλά κι εμείς ανυπομονούμε να ξεκινήσουμε.
Θα συνεχίσουμε να σας ενημερώνουμε για την πρόοδό μας. Να περιμένετε άλλο ένα blog σαν κι αυτό μέσα στους επόμενους μήνες. Όπως πάντα, ευχαριστούμε που παίζετε.