Reddit retravaillé sa fonctionnalité de flux dans l’application mobile iOS et l’a introduit dans l’application Android. Dans les deux cas, ils ont utilisé l’interface utilisateur pilotée par le serveur (SDUI) comme approche de communication, qui permet des modifications localisées de la présentation du contenu sans version d’application mobile.

En 2022, la société s’est engagée à rendre Reddit plus facile à utiliser et depuis lors, plusieurs améliorations ont été apportées, notamment une meilleure expérience de publication, des commentaires consultables et des outils de modération mis à jour. L’accent principal de cette année est mis sur des flux nouveaux et améliorés offrant une meilleure expérience utilisateur. L’équipe a entrepris de créer une nouvelle plateforme de flux à partir de zéro. Cette décision a été principalement dictée par la difficulté de travailler avec l’architecture de flux précédente.

Kirill Dobriakovingénieur logiciel senior chez Reddit, résume les défis liés à la mise en œuvre des flux précédents :

L’année dernière, nos flux étaient assez lents. […] notre code de flux était devenu une sorte de cauchemar de maintenance. La base de code actuelle a été lancée vers 2017, alors que l’entreprise était considérablement plus petite qu’elle ne l’est aujourd’hui. De nombreux ingénieurs et fonctionnalités sont passés par la base de code vieille de 6 ans avec une surveillance architecturale minimale. Il est de plus en plus difficile pour nous d’itérer rapidement alors que nous essayons de nouvelles fonctionnalités de produits dans cet espace.

Les flux sont au cœur des fonctionnalités de Reddit. L’équipe souhaitait s’assurer que la nouvelle plate-forme permette une meilleure rapidité des fonctionnalités, offre de bien meilleures performances et assure une cohérence entre les différents appareils et surfaces.

Publicité

Côté backend, l’équipe a retenu GraphQL mais a retravaillé sa structure d’objet de réponse API. Au lieu de diffuser des objets de publication volumineux contenant tous les attributs disponibles dans de nombreux types de publications, l’équipe a adopté Interface utilisateur pilotée par le serveur (SDUI) et envoyé les éléments exacts de l’interface utilisateur que l’application client rendrait. La nouvelle structure de réponse organise les composants de l’interface utilisateur en groupes de cellules génériques. De cette façon, le backend peut contrôler une grande partie de la mise en page et introduire rapidement de nouveaux éléments de contenu. Les applications mobiles se concentrent sur le rendu des éléments décrits dans les réponses de l’API sans savoir comment afficher les différents types de publications et autres contenus.

1sdui large 1694876881839

Réponses de l’API avant et après l’adoption de SDUI (Source : Blog d’ingénierie Reddit)

Dans le cadre du projet, l’équipe a remplacé l’une des parties les plus anciennes de l’application iOS, principalement écrite en Objectif cqui n’a pas été activement maintenu, avec une nouvelle implémentation écrite en Rapide. Le moteur d’interface utilisateur précédemment utilisé, Texturequi provoquait des plantages difficiles à déboguer, a été remplacé par Kit de trancheset le nouveau code utilise également le Combiner cadre.

L’équipe s’est assurée de modulariser la nouvelle base de code, ce qui a permis de réduire le temps de construction et d’améliorer la testabilité et la couverture des tests. Ils ont également exploité la nouvelle bibliothèque de composants, en mettant en œuvre un système de conception standardisé pour obtenir une cohérence visuelle dans tous les flux. La pile technologique mise à jour a permis de créer une base de code plus sûre et plus rapide à développer, tout en supprimant les données inutiles des réponses de l’API, en réduisant la latence et en rendant le chargement du flux d’accueil 12 % plus rapide.

1fnf9p0kztxdb1 Large 1694876277864

Architecture iOS (Source : Blog d’ingénierie Reddit)

L’architecture de flux se compose de services de source de données chaînables, de convertisseurs pour la transformation parallèle de modèles de données en modèles de vue et d’un moteur de comparaison (qui fait partie de SliceKit) qui peut déterminer comment appliquer les modifications entre les instantanés de modèle de vue précédents et nouveaux.

->Google Actualités

5/5 - (159 votes)
Publicité
Article précédentLe battage médiatique se développe pour le test en vol orbital du Starship de SpaceX, mais des obstacles demeurent
Article suivantDevez-vous publier que vous êtes #OpenToWork ? L’histoire de deux marchés du travail

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici