Qu’il soit textuel ou multimédia, le contenu est aujourd’hui massivement présent dans nos quotidiens : sur les sites en ligne, les apps de nos smartphones, les panneaux d’affichage, à la télévision et désormais sur nos montres. Jusque là désorganisées et sans réel outil de gestion centralisée, les entreprises géraient le stockage et la publication de contenu indépendamment pour chaque device. Mais cette situation évolue peu à peu et les entreprises sont de plus en plus nombreuses à mettre en place une stratégie globale en centralisant le contenu au sein d’une plateforme unique, pour le diffuser massivement via une API, rendant ainsi ce contenu pleinement réutilisable.
Il y a un peu plus de deux ans, je présentais lors de cette même conférence un sujet sur l’avenir du web et comment nous allions évoluer d’applications monolithiques en architecture micro-services ou orientées composants. La communauté Drupal a très bien su négocier ce virage et appliquer les changements profonds mais nécessaires à plus de flexibilité. Grâce aux modules communautaires, et aux initiatives core telles que WSCCI et API-first, Drupal a fait de formidables avancées pour assurer l’interopérabilité avec d’autres technologies et outils.
Basé sur l’expérience acquise sur un projet similaire, nous allons voir lors de cette session comment Drupal peut facilement devenir une plateforme COPE (Create Once, Publish Everywhere).
* Les caractéristiques indispensables d’une plateforme de gestion des contenus (production de contenu en mode collaboratif, workflow, promotion sur les réseaux sociaux)
* ce que d’autres solutions analogues proposent.
* les différences fondamentales d’une utilisation de Drupal en mode traditionnel (coupled, progressively decoupled, decoupled) et les problématiques associées.
* comment Drupal peut se positionner dans ce segment.
2. SOMMAIRE
1. Retour sur 2014 et l’avenir du web à
cette époque
2. Ce que cela signifie de découpler son
site
3. Comment mettre en place une telle
stratégie avec Drupal
4. Faire du content-as-a-service
5. Quels projets pour une telle
architecture
20. • Un CMS utilisé comme gestionnaire de contenus
• Des contenus sont accessibles via une API REST
• Une API REST retourne bien souvent du JSON
• Une interface web pour l’édition de contenu
Back-end
• Une interface graphique développée de A-Z
• Bâti avec des technologies Javascript
modernes
• Une consommation de contenus via des
webservices,
• Une transformation de JSON en HTML
Front-end
Serveur Client
Requête
Réponse
21. Couplé, Découplé
& Co
« Couplé » ou « Classic », est l’utilisation normale de
l’outil. Drupal est chargé de générér du HTML qu’il
renverra au client
L’autre option est le mode découplé, ou Drupal n’est
chargé que de mettre à disposition des données et
l’équipe front-end de les consommer et afficher.
Il existe une alternative, un mixte entre les deux
appellée « Progressively Decouple ». Dans ce cas,
Drupal est utilisé comme outil de génération de
contenu pour l’équipe front-end tout en étant
capable de fournir de la donnée via une API pour
des éléments de pages.
22. Avantages du Headless
• Flexibilité et contrôle total pour les devs Fronts (plus limité par Drupal et
Twig)
• Le front devient plus facilement interchangeable.
• Pas besoin de migrer des contenus pour changer le front.
• Permet de faire travailler l’équipe Back-end en parallèle de l’équipe Front-
end
• Moins de dépendance envers les spécialistes Drupal
• Un endroit unique de contribution de contenus
32. REST UI
La communauté a crée un module REST UI permettant de réaliser les mêmes
actions qu’un développeur devrait écrire directement depuis une UI
vous permettant alors de choisir les méthodes disponibles (GET, POST,
PATCH, DELETE), les formats (json, xml) renvoyés, et les méthodes
d'authentification (cookie ou http si le module est activé) supportées
41. Relaxed web services
Améliore les modules core de D8
• Traduction
• Révisions
• Fichiers attachés
• Gère les réferences UUID
Permet de faire offline. Inspired de CouchDB, le module
permet de créer une approche "offline-first” en utilisant une
librairie telle-que PouchDB ou Hood.ie.
42. Json API
• Un module contrib en accord avec le standard
http://jsonapi.org/
• Expose toutes les ressources (entitées) contenues dans
Drupal.
• Permet de filtre/trier/paginer/ des collections
• Injecte les chemins des entités liées lors de la réponse
• Permet de réduire le nombre de requêtes HTTP dues à
la connaissance des relations
• Contenu plus lisible
43. Json API Extras
• Permet d’activer ou de désactiver certaines ressources
• Surcharge le nom des ressources. Exemple: article à la place de node--article.
• Surcharge le chemin d’accès aux ressources: /jsonapi/node/article devient
/api/articles
• Permet de désactiver certains champs
• Permet d’améliorer le rendu des champs, comme pour les champs date
57. Stratégie de contenus (Phase 1)
• Analysez l’existant
• Pensez contenus et composants
• Imaginez différents rendus (page, bloc, list, teaser…)
• Déterminez les outils d’édition (prévisualisation, système de révisions,
publication à date…)
• Utilisez des contenus dédiés pour les landing pages
• Réfléchissez aux taxonomies à mettre en place pour structurer votre
contenu
67. Liens & Références
• How should you decouple Drupal?
http://buytaert.net/how-should-you-decouple-drupal
• Json API, module Drupal
https://drupal.org/project/jsonapi
• JSONAPI, le standard pour construire des APIs en JSON
http://jsonapi.org
• REST 2.0 Is Here and Its Name Is GraphQL
https://sitepoint.com/rest-2-0-graphql/
• GraphQL for Drupal (Brouillon)
https://fgm.gitbooks.io/graphql-for-drupal
72. MERCI
72
t w i t t er : @ dr upagor a
Drupagora 2017 – Créer une fois, publier partout grâce au découplage d’applications et à la mise en place d’API - Julien Dubreuil
Twitter : #drupagora