Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

72
CRÉER UNE FOIS, PUBLIER PARTOUT GRÂCE AU DÉCOUPLAGE D’APPLICATIONS ET À LA MISE EN PLACE D’API Julien Dubreuil Consultant Drupal spécialisé dans les problématiques Back-end, industrialisation et qualité

Transcript of Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Page 1: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

CRÉERUNEFOIS,PUBLIERPARTOUTGRÂCEAUDÉCOUPLAGED’APPLICATIONSETÀ LAMISEENPLACED’API

JulienDubreuilConsultantDrupalspécialisédanslesproblématiquesBack-end,industrialisationetqualité

Page 2: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

SOMMAIRE1. 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

Page 3: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

JulienDubreuilContributeurDrupaldepuis2009

Co-organisateurdugroupeutilisateursDrupalàParisdepuis2011

@juliendubreuilJuliendubreuil.fr

ConsultantDrupalspécialisédanslesproblématiquesBack-end,industrialisationetqualité

2ansentantqu’indépendant3anschezCommerceGuys3ansauFigaro

Page 4: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

2014, CE QUE L’AVENIR NOUS RÉSERVAIT

1.

Page 5: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

ApplicationsmonolithiquesVS

Applicationmicro-services

Page 6: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 7: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 8: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 9: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 10: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 11: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 12: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 13: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

DrupaletWPpeuvent alors êtreconsidéréscommedessolutions

monolithiques

• Themingcompliqué

• Courbed’apprentissagetropgrande

• Manquederessourcesdisponibles

• FrustrationdesDevFront

Page 14: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 15: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 16: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

DesWebhooks quipermettentàl’applicationconsommantl’APIderéagirencasdemodification

UneAPIRESTquiretournebiensouventduJSON

DescontenusaccessiblesviauneAPIREST

UnCMSdansleclouddustockagedescontenus

Uneinterfacewebpourl’éditiondecontenus Content-as-

a-Service(CaaS)

Page 17: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Latendance dessolutionsCaaS

Pourleséquipestechniques

Pourlesdéveloppeurs

Pourlesentreprises

SéparerlesproblématiquesBack-endetFront-end

Permetauxéquipesdetravaillerenparallèle.

Pasdepertedetempsàmonterencompétence

Utilisationdesdernièrestechnosettechniques

Mutualiseretréutiliserleurscontenus

Publierinstantanémentsurplusieursplateformesenmêmetemps

Page 18: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

• Pasdefront-end,cen’estqu’unendroit

pourstockerducontenu

• Limitéentermed’outilsd’édition

• Trèspeuadaptableauxbesoins,voirenon

modifiable

• Délaissetouteslesproblématiquesde

présentationauxdéveloppeursfront-end

Pourlemeilleuretpourlepire

Page 19: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

TECHNIQUEMENT, DÉCOUPLER SON SITE CA VEUT DIRE QUOI ?

2.

Page 20: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

• UnCMSutilisécommegestionnairedecontenus• DescontenussontaccessiblesviauneAPIREST• UneAPIRESTretournebiensouventduJSON• Uneinterfacewebpourl’éditiondecontenu

Back-end• UneinterfacegraphiquedéveloppéedeA-Z• BâtiavecdestechnologiesJavascript

modernes• Uneconsommationdecontenusviades

webservices,• UnetransformationdeJSONenHTML

Front-end

Serveur Client

Requête

Réponse

Page 21: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Couplé,Découplé&Co

« Couplé »ou« Classic »,estl’utilisationnormaledel’outil.Drupalest chargédegénérér duHTMLqu’ilrenverra auclient

L’autreoptionestlemodedécouplé,ouDrupaln’estchargéquedemettreàdisposition desdonnéesetl’équipe front-end delesconsommeretafficher.

Ilexisteunealternative,unmixteentrelesdeuxappellée « Progressively Decouple ».Danscecas,Drupalestutilisécommeoutildegénérationdecontenupour l’équipe front-end toutenétantcapabledefournirdeladonnée viauneAPIpourdesélémentsdepages.

Page 22: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Avantages duHeadless• Flexibilitéetcontrôletotalpourlesdevs Fronts(pluslimitéparDrupalet

Twig)

• Lefrontdevientplusfacilementinterchangeable.

• Pasbesoindemigrerdescontenuspourchangerlefront.

• Permetdefairetravaillerl’équipeBack-endenparallèledel’équipeFront-

end

• MoinsdedépendanceenverslesspécialistesDrupal

• Unendroituniquedecontributiondecontenus

Page 23: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

InconvénientsduHeadless• Lesfonctionnalités«out-of-the-box »deviennent(contentpreview,action

links,inplace-enditing)

• Ilfaudraréinventerlaroue(password reset)

• D’unsitewebonpassealorsàunécosystème(coûtdemaintenance,coût

dehosting,coûtd’évolution)

• Uneapplicationcomposéedeplusieurscouchesaugmenteaussila

complexitédecelle-ci(debug pluscompliqué.fortbesoindeloguerles

échanges)

Page 24: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

InconvénientsduHeadless• Uneséparationstricteentrelesdonnéesetl’affichagedoitêtrefaiteet

perdurer(unemodificationdestructuredansleBack-endpeutavoirdes

conséquencessurl’unedesapplicationsfront)

• Potentiellementbesoind’uneéquipetechniqueplusimportantequedans

uneapprocheclassique.

• ByebyeauxfonctionnalitésdeSEOnative

Page 25: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

EN PRATIQUE, DÉCOUPLER DRUPAL, ÇA DONNE QUOI ?

3.

Page 26: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 27: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 28: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 29: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 30: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Drupal7

• Services https://www.drupal.org/project/Services

• ViewsDatasource https://www.drupal.org/project/views_datasource

• RESTWS https://www.drupal.org/project/restws

• RESTful https://www.drupal.org/project/RESTful

• Codecustom

Page 31: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Drupal8IntègredésormaisplusieursmodulespermettantdemettreenœuvreuneAPI

REST

• RESTmodule

• Serializer

• HAL

• BasicAuthentification

Page 32: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

RESTUILacommunauté a crée unmoduleRESTUIpermettant deréaliser lesmêmes

actionsqu’undéveloppeurdevraitécriredirectementdepuisuneUI

vouspermettantalorsdechoisirlesméthodesdisponibles(GET,POST,

PATCH,DELETE),lesformats(json,xml)renvoyés,etlesméthodes

d'authentification(cookieouhttpsilemoduleestactivé)supportées

Page 33: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 34: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 35: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

ViewsPermetdemettreàdispositiondesressourcesetcollectionsderessources

Avantages

• Simpleàutiliser

• Faciledecréerunnouveauendpoint

Inconvénients

• Peut-êtreseretrouverlimité

• Pasdesplusperformantpourdesrequêtescomplexes

Page 36: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 37: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 38: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 39: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 40: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

RESTaveclesmodulescore

• WebservicesRESTful traditionnel, centrésurles

ressourcesetdescollections.

• Permetplusieursformats:JSON,HAL+JSON

• Peutexposerautrechosequedesentités

• Peutêtreétenduaumoyendeplugins

Page 41: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

RelaxedwebservicesAméliore lesmodulescoredeD8

• Traduction

• Révisions

• Fichiers attachés

• Gère lesréferences UUID

Permet defaireoffline.InspireddeCouchDB,lemodule

permet decréer une approche "offline-first”enutilisant une

librairie telle-que PouchDBou Hood.ie.

Page 42: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Json API• Unmodulecontrib enaccordaveclestandard

http://jsonapi.org/

• Exposetouteslesressources(entitées) contenuesdans

Drupal.

• Permetdefiltre/trier/paginer/ descollections

• Injectelescheminsdesentitésliéeslorsdelaréponse

• PermetderéduirelenombrederequêtesHTTPduesà

laconnaissancedesrelations

• Contenuplus lisible

Page 43: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Json APIExtras• Permet d’activer ou dedésactiver certaines ressources

• Surchargelenomdesressources.Exemple:articleà laplacedenode--article.

• Surchargelechemin d’accès auxressources:/jsonapi/node/article devient

/api/articles

• Permet dedésactiver certains champs

• Permet d’améliorer lerendu deschamps,comme pour leschampsdate

Page 44: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Nesteddata

Page 45: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Donnéespluspropresetpluslisibles

Page 46: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

GraphQL• ExposetouteslesentitésDrupalselon lestandard

graphql.orgstandard.(non-RESTful)

• Permetdefiltre/trier/paginer/ descollections

• Injectelescheminsdesentitésliéeslorsdelaréponse

• Réduitlenombrederequêteshttp

• Dèsl’activationdumodule touteslesdonnéessont

accessibles(contrôled’accèsréaliséparEntity AccessAPI)

Page 47: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

http://example.com/jsonapi/node/article?sort=created&filter[status][value]=1

APINamespace

Bundle

Typed’entités Filtres

Page 48: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 49: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 50: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Reservoir

• UnedistributionsignéeAcquia

• Undépôtdecontenus,configurépour

fonctionneravecJSONAPIetOAuth2.

• Fonctionnelledèssoninstallation

• 4axes:Contenus,API,Modélisationdecontenu,

Contrôled’accès

Page 51: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 52: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

ContentaCMS• UnedistributionorientéAPI-first

• Maintenuparunecommunautédecontributeur

• Starterkitpourmettreenplaceunearchitecture

découplé

• Ceveut,simpleetnenécessitantquepeutde

configurationetsansavoirbesoindeconnaîtreDrupal

• Disposed’exemplesElm,React,Ember,Ionic,Angular

Page 53: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 54: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 55: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

METTRE EN PLACE UNE STRATEGIE CONTENT-AS-A-SERVICE

4.

Page 56: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Unestratégiedecontenusrobuste

&APIdequalité

Page 57: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Stratégiedecontenus(Phase1)• Analysezl’existant

• Pensezcontenusetcomposants

• Imaginezdifférentsrendus(page,bloc,list,teaser…)

• Déterminezlesoutilsd’édition(prévisualisation,systèmederévisions,

publicationàdate…)

• Utilisezdescontenusdédiéspourleslandingpages

• Réfléchissezauxtaxonomiesàmettreenplacepourstructurervotre

contenu

Page 58: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Stratégiedecontenus(Phase2)

• ConvertissezlesrésultatsdevotreauditauformatdedonnéesdeDrupal

• Pensezauresponsiveavanttout,surtoutpourlesimages

• Utilisezlesbonstypesdechamps

• Servezvousdeschamps« entity références »dèsquepossible

Page 59: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Une APIdequalitéUneAPIc’estuncontratdéterminéentreleBack-endetleFront-end

• Documentée

• Versionnée

• Testable

• Permettrelesréponsespartiellespour filtreroulimiterlesrésultats

• Résiliente

• Utiliserunestratégiedecacheintelligente.

• Loguer lesrequêtesentrantesetlesréponses

Page 60: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

QUELLES OCCASIONS POUR DÉCOUPLER UNE APPLICATION ?

5.

Page 61: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

- S’ilyaplusd’uneapplicationquiconsommeducontenu

- Sivousn’avezpasd’expertiseDrupaleninterne

- Sil’équipefrontabesoind’uncontrôletotaldelastructuredespages

- Sivotreprojetestcomposédeplusieurséquipes

Page 62: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu
Page 63: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

POUR ALLERPLUS LOIN6.

Page 64: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

liens&références

RESTful WebAPIsServicesforaChangingWorldO'ReillyMediaSeptembre2013

Page 65: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

liens&références• Tag#decoupleddublogdeDriesBuytaertDriesBuytaerthttp://buytaert.net/tag/decoupled

• CommentmettreenplaceunsiteDrupal« Headless »SimonGeorgeshttps://makina-corpus.com/blog/metier/2017/comment-mettre-en-place-un-site-drupal-headless

• LeblogdeYineoYannBoisselierhttps://yineo.fr/

Page 66: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Liens&Références• DistributionReservoirhttps://github.com/acquia/reservoir

• Contentacms initiativehttp://contentacms.org

• ContentaMakes Your ContentHappyLullabothttps://lullabot.com/articles/contenta-makes-your-content-happy

• 7Ways toMake Your APIMoreSuccessful -DanielJacobsonhttp://www.danieljacobson.com/blog/231

Page 67: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Liens&Références• Howshould you decouple Drupal?http://buytaert.net/how-should-you-decouple-drupal

• Json API,moduleDrupalhttps://drupal.org/project/jsonapi

• JSONAPI,lestandardpourconstruiredesAPIsenJSONhttp://jsonapi.org

• REST2.0IsHere andIts NameIsGraphQLhttps://sitepoint.com/rest-2-0-graphql/

• GraphQL forDrupal (Brouillon)https://fgm.gitbooks.io/graphql-for-drupal

Page 68: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

CONCLUSION

Page 69: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

#tl;dr• Drupalpeutêtreutilisédefaçoncouplée(traditionnelle),découpléeouun

mixteentrelesdeux• Leheadless n’estpastoujoursunebonneoption• Lecore fournitunesolutionRESTetilestpossibledel’étendre• DesalternativesexistenttellesqueJSONAPIetGraphQL• Passerdutempsendébutdeprojetàanalyseretpréparerleterrainpour

lescontenus• DéveloppezuneAPIdequalitéetinvestissezdutempssurla

documentation

Page 70: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Credit• Images- https://www.pexels.com• Icones - https://thenounproject.com/

Page 71: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

Questions ?

71

Page 72: Drupal 8 - Découplez votre site grâce à une API afin de mettre à disposition votre contenu

MERCI

72

t w i t t e r : @ dr upa gor a

Drupagora 2017 – Créer une fois,publier partoutgrâceaudécouplage d’applications età lamise enplaced’API - Julien DubreuilTwitter : #drupagora