BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Le Pattern «Backends for Frontends» Chez Soundcloud

Le Pattern «Backends for Frontends» Chez Soundcloud

Favoris

SoundCloud a récemment publié un article sur leur mise en œuvre du modèle Backends for Frontends, adopté en 2013 alors qu’ils commencent à migrer vers une architecture basée sur les microservices. Le responsable technique de SoundCloud Jorge Creixell a conclu que ce pattern présente des inconvénients importants à prendre en compte, bien qu’il comporte des avantages.

Le pattern Backends for Frontends (BFF) consiste à créer des services «passerelles» adaptés aux besoins spécifiques de chaque client. Ces clients peuvent être des applications frontend ou des interfaces externes. Chez SoundCloud, les services BFF assuraient le rôle d’une API gateway, y compris la limitation du débit, l'authentification, le nettoyage des en-têtes et le contrôle du cache.

Selon l'auteur, le nombre plus élevé de services qui en résulte peut également être une source de problèmes s'ils ne font pas partie d'une architecture de services plus large capable de garder sous contrôle la complexité et la duplication. Les intégrations de fonctionnalités ont tendance à être implémentées dans chaque service BFF, ce qui conduit à des implémentations dupliquées de fonctionnalités transverses - telles que l'authentification - qui divergent au fil du temps. 

Chez SoundCloud, l'auteur a constaté une tendance à pousser de la logique complexe initialement côté client vers le BFF. Cette logique passant au backend peut bien fonctionner dans certains cas, mais l'auteur souligne que cela peut entraîner des problèmes. En donnant l'exemple de la collecte de toutes les parties d'une collection paginée pour la renvoyer en une seule requête côté serveur, ils notent que cela pourrait entraîner un décuplement de la charge qui pourraient mettre l'ensemble du système hors service", entre autres conséquences.

La spécialisation inhérente aux services BFF a permis à SoundCloud d'optimiser ses API pour tout ce qui convient à chaque type de client sans avoir besoin de points de synchronisation et de compromis difficiles. Étant donné que ce pattern a séparé les différents clients et interfaces, il a également permis à SoundCloud de bénéficier d'améliorations de la résilience et d'un rythme de développement plus élevé.

L'auteur considère que l'implémentation BFF de SoundCloud, avec plusieurs API gateway dédiées pour chaque type d'appareil ou d'interface, est différente des autres approches et technologies telles que les API gateways centralisées et GraphQL. De plus, cela nécessite une collaboration étendue entre les ingénieurs front-end et back-end ; ainsi, "l'idée d'une autonomie totale pour les développeurs clients n'est qu'une illusion".

D'autres experts dans le domaine ont un point de vue différent. Par exemple, l'architecte logiciel Glenn Engstrand a fait valoir sur InfoQ que GraphQL est un choix judicieux pour les services BFF, que ces services doivent se comporter comme des orchestrateurs et appartenir aux équipes front-end.

L'architecture système de SoundCloud a continué d'évoluer après avoir identifié les problèmes associés à leur mise en œuvre du pattern BFF. D'autres articles seront publiés dans le Backstage Blog de SoundCloud pour détailler cette évolution.

 

Evaluer cet article

Pertinence
Style

Contenu Éducatif

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

BT