Skip to content

Latest commit

 

History

History
316 lines (194 loc) · 7.34 KB

slides.md

File metadata and controls

316 lines (194 loc) · 7.34 KB
title
Comment ARTE a simplifié le développement multi-plateforme à l’aide d’une API orientée front

Comment ARTE a simplifié le développement multi-plateforme à l’aide d’une API orientée front


ARTE est une chaîne de télévision culturelle européenne :

ARTE en bref

  • disponible en 6 langues (FR, DE, EN, ES, PL et IT)
  • programmes disponibles sur internet depuis 2007

Les applications d'ARTE


ARTE est disponible partout (ou presque) :


Supports différents, expérience unifiée

ARTE partout

  • même catalogue de programmes
  • structures d'application similaires

Les particularités des plateformes

Chaque plateforme dispose de ses propres codes et contraintes :

  • contrôle à la souris, au doigt ou à la télécommande
  • vitesse du réseau (fibre vs 4G)
  • format et résolution d'écran variable
  • navigation par urls ou par liens profonds

Les liens profonds (ou deeplinks)

À chaque url correspond un lien profond.

{
  "url": "https://www.arte.tv/fr/videos/097461-000-A/robe-noire/",
  "deeplink": "arte://program/097461-000-A"
}
  • permet d'accéder directement au contenu
  • compatible iOS, Android, tvOS et Android TV

Les premières APIs d'ARTE


Approche orientée métier

La structure des premières APIs d'ARTE reflète les entités de la base de données :

  • un endpoint par type d'entité (vidéos, collections, ...)
  • un même endpoint peut servir pour plusieurs cas d'utilisation

Exemple : le endpoint /videos

Pour récupérer les vidéos les plus vues :

https://api-arte/videos?sort=-views

Pour récupérer les vidéos les plus récentes :

https://api-arte/videos?sort=-availabilityDate


Problématiques de l'approche orientée métier

  • beaucoup d'appels API par écran
  • API complexe (de nombreux paramètres à maîtriser)
  • contenu des apps front difficile à uniformiser

Une API pour les gouverner toutes


Une API orientée front (ou BFF)

Le BFF (ou Back-end For Front-end) n'est pas un reflet de la base de données mais un reflet de l'application front :

  • renvoie des objets page consolidés
  • récupère les données auprès des APIs orientées métier
  • pré-process les données pour les apps front



Une API au service du front

structure de l'API = structure des apps front

[Page]
  - title
  [Zones]
    - title
    - description
    [Teasers]
      - title
      - subtitle
      - image
      - url
      - deeplink
  • 1 appel API pour récupérer l'intégralité d'un écran
  • ne renvoie que les champs utiles
  • même call pour tous les supports



Pourquoi ne pas utiliser GraphQL côté front ?


Les promesses de GraphQL :

  • limiter les appels API
  • offrir plus de liberté aux front
  • mettre fin au versioning

GraphQL semble plus adapté à une API publique qu'à une API interne.


Comment ce BFF permet de simplifier le développement des apps front ?


En facilitant la vie des développeurs front :

  • une seule API à maîtriser
  • plus besoin de se soucier des problématiques métier
  • routing simple

Exemples de routes :

https://bff-arte/fr/web/pages/home

https://bff-arte/de/app/pages/concert

https://bff-arte/en/tv/pages/categories/cinema

https://bff-arte/it/orange/pages/programs/programId

https://bff-arte/pl/free/zones/zoneId?page=2&limit=10

En offrant plus de flexibilité :

  • découple les apps front des APIs métier
  • structure éditable sans mise-à-jour côté front

Modification du format des images

{
  "zones": [
    {
      "displayOptions": {
        "itemTemplate": "landscape"
        ...
}

Display options


Modification du format des images

{
  "zones": [
    {
      "displayOptions": {
        "itemTemplate": "portrait"
        ...
}

Display options


Avant et après la mise en place du BFF :

Avant Après
Nombre d'APIs à implémenter / app front 5 2
Nombre d'appels pour afficher la page d'accueil 20 1
Nombre de déploiements nécessaires pour modifier la page d'accueil 8 0

Une approche idéale ?


Le BFF est un concept qui ne convient pas à tout le monde :

  • nécessite une bonne proximité entre les équipes back et front-end
  • l'approche est-elle encore pertinente depuis HTTP/2 ?
  • un service de plus à maintenir



Pour finir...


Ce projet est le fruit d'une collaboration entre ARTE et Marmelab

  • 2 chefs de projet du côté d'ARTE
  • 3 développeurs du côté de Marmelab

Une équipe proche du front, orientée web mais en concertation régulière avec les équipes mobile et TV.


Références


Merci de nous avoir écoutés ! Des questions ?

Ces slides sont disponibles ici :

Retrouvez-nous sur Twitter : @lucaslegname / @rmaximedev