Nicolas Pastorino - Distribution de contenu scalable, le multicanal avec REST & eZ Publish
Upcoming SlideShare
Loading in...5
×
 

Nicolas Pastorino - Distribution de contenu scalable, le multicanal avec REST & eZ Publish

on

  • 1,094 views

Présentation faite au PHP Tour 2011 à Lille. Plus d'information : http://afup.org/pages/phptourlille2011/sessions.php#572

Présentation faite au PHP Tour 2011 à Lille. Plus d'information : http://afup.org/pages/phptourlille2011/sessions.php#572

Statistics

Views

Total Views
1,094
Views on SlideShare
1,013
Embed Views
81

Actions

Likes
1
Downloads
13
Comments
0

1 Embed 81

http://lanyrd.com 81

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Nicolas Pastorino - Distribution de contenu scalable, le multicanal avec REST & eZ Publish Nicolas Pastorino - Distribution de contenu scalable, le multicanal avec REST & eZ Publish Presentation Transcript

  • Distribution decontenu scalable Le multicanal, avec REST + eZ Publish
  • Distribution de contenu scalable Le multicanal, avec REST + eZ PublishNicolas Pastorino - nfrp@ez.noDirector Community - eZ Systems@jeanvoye - http://share.ez.no
  • Distribution de contenu scalable Le multicanal, avec PHP Tour 2011 - Lille - 24 Novembre REST + eZ PublishNicolas Pastorino - nfrp@ez.noDirector Community - eZ Systems #phptour@jeanvoye - http://share.ez.no
  • Notre agenda :
  • Notre agenda :L’émotion multicanal
  • Notre agenda :L’émotion multicanal REST
  • Notre agenda :L’émotion multicanal RESTAPI REST Extensible
  • Notre agenda :L’émotion multicanal RESTAPI REST ExtensibleRecommandation de Contenu
  • L’émotion multicanal 3
  • Le contenu en ligne noustouche,
  • Le contenu en ligne noustouche, il déclenche desémotions partout, sur toutterminal
  • Le contenu en ligne noustouche, il déclenche desémotions partout, sur toutterminal
  • Le contenu en ligne noustouche, il déclenche desémotions partout, sur toutterminal
  • Le contenu en ligne noustouche, il déclenche desémotions partout, sur toutterminal
  • Vous consommez ducontenu, constamment
  • Vous consommez ducontenu, constamment
  • Vous consommez ducontenu, constamment
  • Vous consommez ducontenu, constamment
  • Distribution decontenumulticanal =“emotionsanywhere”
  • Pre-requis à la distribution multicanalNicolas Pastorino - IPCse11 24/11/2011 8
  • Pre-requis à la distribution multicanalSéparation contenu /présentation à la 1source de contenu Nicolas Pastorino - IPCse11 24/11/2011 8
  • Pre-requis à la distribution multicanalSéparation contenu /présentation à la 1source de contenu Nicolas Pastorino - IPCse11 24/11/2011 8
  • Pre-requis à la distribution multicanalSéparation contenu /présentation à la 1source de contenuNe pas transiger surl’expérience 2utilisateur Nicolas Pastorino - IPCse11 24/11/2011 8
  • Pre-requis à la distribution multicanalSéparation contenu /présentation à la 1source de contenuNe pas transiger surl’expérience 2 “The Superman Effect” Aral Balkan, DPC11utilisateur Nicolas Pastorino - IPCse11 24/11/2011 8
  • Pre-requis à la distribution multicanalSéparation contenu /présentation à la 1source de contenuNe pas transiger surl’expérience 2 “The Superman Effect” Aral Balkan, DPC11utilisateurAvoir une seule sourcede contenu 3 Nicolas Pastorino - IPCse11 24/11/2011 8
  • Pre-requis à la distribution multicanalSéparation contenu /présentation à la 1source de contenuNe pas transiger surl’expérience 2 “The Superman Effect” Aral Balkan, DPC11utilisateurAvoir une seule source “Les annonceurs de contenu n’ont pas lesde contenu 3 moyens d’avoir une équipe éditoriale par canal de publication” Nicolas Pastorino - IPCse11 24/11/2011 8
  • Ces3 règles simplessuffisent elles ?
  • Ces3 règles simplessuffisent Nous elles ? venons à peine de quitter le sol. Continuons ...
  • Source /Unique deContenu CMS
  • Source /Unique deContenu CMS
  • Flux de contenu monétisésSource /Unique deContenu CMS
  • Flux de contenu monétisés Applications MobilesSource / Smartphones, TabletsUnique deContenu CMS
  • Flux de contenu monétisés Applications MobilesSource / Smartphones, TabletsUnique deContenu CMS Contenu Push Newsletters 3rd party : CRM, ERP
  • Flux de contenu monétisés Applications MobilesSource / Smartphones, TabletsUnique deContenu CMS Contenu Push Newsletters 3rd party : CRM, ERP Print Publication traditionnelle
  • Flux de contenu monétisés Applications MobilesSource / Smartphones, TabletsUnique deContenu CMS Contenu Push Newsletters 3rd party : CRM, ERP Print Publication traditionnelle Social Media
  • "Les consommateurs de media sur plusieurscanaux ont un degré d’engagement plus élevé queceux présents sur un seul canal.Plus ils regardent la TV, écoutent la radio, passentdu temps en ligne, etc.., plus ils consomment de lapublicité.La distribution de contenu multicanal auraégalement un impact important sur la structurede revenus des announceurs de contenu. Cettetechnologie devient hautement différenciante entreces derniers.
  • Having a REST ? :)
  • Having a REST ? :) Nous n’y sommes pas encore...
  • “Les media ainsi que les grandes marques se doivent dereconnaître qu’ajouter le canal mobile au “mix multicanal”ne signifie pas créer un canal annexe.Les architectes de stratégies mobiles attestent que: • Le mobile n’est pas l’expérience desktop minifiée, • L’environnement de l’utilisateur est un élément de l’expérience mobile, • Les utilisateurs mobile ne sont pas simplement un sous-ensemble des visiteurs - certains sont nouveaux.”
  • Plus PetitDénominateur Commun :
  • Plus PetitDénominateur Commun : API REST
  • Nous venons de couvrir les basesfonctionnelles pour augmentervotre REACH au travers de multiples canaux.
  • Nous venons de couvrir les basesfonctionnelles pour augmentervotre REACH Maintenant au travers de les multiples détails canaux. techniques
  • REST 16
  • REpresentationalStateTransfer
  • REpresentationalStateTransferREST est un ensemble de principes qui définit comment lesstandards Web tels que HTTP et les URIs devraient être utilisés• Donner un ID à toute “chose”• Lier les “choses” ensemble (“HATEOAS”)• Utiliser les méthodes standards• Adopter des représentations multiples pour les ressources• Communiquer “sans état” ( statelessly )
  • REpresentationalStateTransferREST est un ensemble de principes qui définit comment lesstandards Web tels que HTTP et les URIs devraient être utilisés• Donner un ID à toute “chose”• Lier les “choses” ensemble (“HATEOAS”)• Utiliser les méthodes standards• Adopter des représentations multiples pour les ressources• Communiquer “sans état” ( statelessly ) h"p://www.infoq.com/ar4cles/rest-­‐introduc4on h"p://en.wikipedia.org/wiki/Representa4onal_State_Transfer
  • REpresentationalStateTransfer h"p://www.infoq.com/ar4cles/rest-­‐introduc4on h"p://en.wikipedia.org/wiki/Representa4onal_State_Transfer
  • REpresentationalStateTransferLes objectifs de REST incluent :• Scalabilité des interactions entre composants• Interfaces Génériques• Déployement indépendant des composants• Composants intermédiaires pour réduire la latence, renforcer lasécurité, encapsuler les systèmes “legacy” h"p://www.infoq.com/ar4cles/rest-­‐introduc4on h"p://en.wikipedia.org/wiki/Representa4onal_State_Transfer
  • API REST Extensibleau coeur du CMS eZ Publish 19
  • Au coeur du CMS eZ PublishAPI REST Extensible REST comme fonctionnalité coeurNicolas Pastorino - IPCse11 24/11/2011 20
  • Au coeur du CMS eZ PublishAPI REST ExtensibleContrôleur frontal dédiéNicolas Pastorino - IPCse11 24/11/2011 21
  • At the core of the eZ Publish CMSExtensible REST API REST setup REST eZP REST  request FC eZ  Publish web-­‐requestNicolas Pastorino - PHPTour 2011 24/11/2011 22
  • At the core of the eZ Publish CMSExtensible REST API REST setup REST eZP REST  request FC eZ  Publish web-­‐requestNicolas Pastorino - PHPTour 2011 24/11/2011 22
  • Au coeur du CMS eZ PublishAPI REST Extensible Mapping contenu <--> ressourceNicolas Pastorino - PHPTour 2011 24/11/2011 23
  • Au coeur du CMS eZ PublishAPI REST Extensible Makes data availableNicolas Pastorino - PHPTour 2011 24/11/2011 24
  • Au coeur du CMS eZ PublishAPI REST Extensible Makes data reusableNicolas Pastorino - PHPTour 2011 24/11/2011 24
  • Au coeur du CMS eZ PublishAPI REST Extensible Le contenu est “libéré”Nicolas Pastorino - PHPTour 2011 24/11/2011 25
  • Au coeur du CMS eZ PublishAPI REST Extensible Motif dʼURINicolas Pastorino - PHPTour 2011 24/11/2011 26
  • Au coeur du CMS eZ PublishAPI REST Extensible Juste un jeton pour déclencher une règle de ré-écriture Call + GET Host / Prefix / Provider / Version / params ezpRestPrefixFilterInterfaceNicolas Pastorino - PHPTour 2011 24/11/2011 27
  • Au coeur du CMS eZ PublishAPI REST Extensible Juste un jeton pour déclencher une règle de Prefix ré-écritureProvider ezpRestPrefixFilterInterfaceVersionNicolas Pastorino - PHPTour 2011 24/11/2011 27
  • Au coeur du CMS eZ PublishAPI REST Extensible Juste un jeton pour déclencher une règle de Prefix ré-écritureProvider ezpRestPrefixFilterInterfaceVersionNicolas Pastorino - PHPTour 2011 24/11/2011 27
  • Au coeur du CMS eZ PublishAPI REST Extensible Juste un jeton pour déclencher une règle de Prefix ré-écritureProvider ezpRestPrefixFilterInterfaceVersionNicolas Pastorino - PHPTour 2011 24/11/2011 27
  • Prefix filterezpRestPrefixFilterInterfaceRetourne : “Provider” à utiliser Version de lʼAPI à utiliserNicolas Pastorino - PHPTour 2011 24/11/2011 28
  • API versionéeclass ezpRestRouter extends ezcMvcRouter{ public function createRoutes() { // ezpRestApiProvider $routes = array( new ezcMvcRailsRoute( /content/node/:nodeId/listAtom, ezpRestAtomController, collection ), new ezcMvcRailsRoute( /content/node/:nodeId/list, ezpRestContentController, list ), new ezcMvcRailsRoute( /content/node/:nodeId, ezpRestContentController, viewContent ), new ezcMvcRailsRoute( /content/node/:nodeId/fields, ezpRestContentController, viewFields ), new ezcMvcRailsRoute( /content/node/:nodeId/field/:fieldIdentifier, ezpRestContentController, viewField ), new ezcMvcRailsRoute( /content/object/:objectId, ezpRestContentController, viewContent ), new ezcMvcRailsRoute( /content/object/:objectId/fields, ezpRestContentController, viewFields ), new ezcMvcRailsRoute( /content/object/:objectId/field/:fieldIdentifier, ezpRestContentController, viewField ), new ezpRestVersionedRoute( new ezcMvcRailsRoute( /foo, myController, myActionOne ), 1 ), new ezpRestVersionedRoute( new ezcMvcRailsRoute( e/foo, myController2 or myControlerWhichExtendsmyController, myBetterAndScalingAction ), 2 ), ); return ezcMvcRouter::prefix( /api, $routes ); }} Nicolas Pastorino - PHPTour 2011 24/11/2011 29
  • API versionéeezpRestVersionedRoute Version intègre la notion de version à la décision de routageNicolas Pastorino - PHPTour 2011 24/11/2011 30
  • Au coeur du CMS eZ PublishAPI REST Extensible Construisez la vôtre,étendez le(s) interface(s)Nicolas Pastorino - PHPTour 2011 24/11/2011 31
  • Etendre les interfaces REST providersNicolas Pastorino - PHPTour 2011 24/11/2011 32
  • Etendre les interfacesezpRestProviderInterfaceNicolas Pastorino - PHPTour 2011 24/11/2011 33
  • Vue générale des points dʼentrée
  • Nicolas Pastorino - PHPTour 2011 24/11/2011 35
  • Configuration des routes - Exempleclass ezpRestRouter extends ezcMvcRouter{ public function createRoutes() { $providerRoutes = ezpRestProvider::getProvider( ezpRestPrefixFilterInterface::getApiProviderName() )->getRoutes(); $routes = array( new ezpMvcRailsRoute( /fatal, ezpRestErrorController, show ), new ezpMvcRailsRoute( /http-basic-auth, ezpRestAuthController, basicAuth ), new ezpMvcRailsRoute( /login/oauth, ezpRestAuthController, oauthRequired ), new ezpMvcRailsRoute( /oauth/token, ezpRestOauthTokenController, handleRequest), // ezpRestVersionedRoute( $route, $version ) // $version == 1 should be the same as if the only the $route had been present new ezpRestVersionedRoute( new ezpMvcRailsRoute( /foo, myController,myActionOne ), 1 ), new ezpRestVersionedRoute( new ezpMvcRailsRoute( /foo, myController,myActionOneBetter ), 2 ), ); return ezcMvcRouter::prefix( /api, array_merge( $providerRoutes, $routes ) ); }} Nicolas Pastorino - PHPTour 2011 24/11/2011 36
  • API REST ExtensibleFonctionnalités clés 37
  • Fonctionnalités clésAPI REST ExtensibleResources de type ContenuNicolas Pastorino - PHPTour 2011 24/11/2011 38
  • Fonctionnalités clésGET /[api]/v1/content/object/ <objectId>/fields HTTP/1.1Nicolas Pastorino - PHPTour 2011 24/11/2011 39
  • Fonctionnalités clésfields/<fieldname> type (datatype string) identifier (attribute identifier) value (string representation of data) id (object attribute numerical ID) classattribute_id (class attribute numerical ID)Nicolas Pastorino - PHPTour 2011 24/11/2011 40
  • Fonctionnalités clés GET /[api]/v1/content/object/ <objectId>/field/ <FieldIdentifier> HTTP/1.1Nicolas Pastorino - PHPTour 2011 24/11/2011 41
  • Recommendation de ContenuYooChoose, eZ Recommender Engine 42
  • Une sélection drastiquedoit être faite parmi l’infinitéde contenus publiés
  • Une sélection drastiquedoit être faite parmi l’infinitéde contenus publiésQuellepentechoisir ?
  • Une sélection drastiquedoit être faite parmi l’infinitéde contenus publiés
  • Une sélection drastiquedoit être faite parmi l’infinitéde contenus publiésJe n’ai que30mins par jour,que dois-je lire ?
  • Une sélection drastiquedoit être faite parmi l’infinitéde contenus publiésN’avez vouspas cetteimpression,parfois :
  • On a parfois besoin d’un guide pour choisir la bonnepente à skier, le bon contenu à consommer
  • On a parfois besoin d’un guide pour choisir la bonnepente à skier, le bon contenu à consommer
  • On a parfois besoin d’un guide pour choisir la bonnepente à skier, le bon contenu à consommer
  • On a parfois besoin d’un guide pour choisir la bonnepente à skier, le bon contenu à consommerContentrecommendation
  • Recommandation de ContenuNicolas Pastorino - IPCse11 24/11/2011 47
  • Recommandation de ContenuTracker laconsommationde contenuNicolas Pastorino - IPCse11 24/11/2011 47
  • Recommandation de ContenuTracker laconsommationde contenu + Apprendre les metadonnéesNicolas Pastorino - IPCse11 24/11/2011 47
  • Recommandation de ContenuTracker laconsommationde contenu + Apprendre les metadonnées = Content RecommendationNicolas Pastorino - IPCse11 24/11/2011 47
  • Apprentissage des comportements, Cloud-based, grâce aux : • Evènements “Visualisation, Achat, Rating, Partage” • Modèles Utilisateurs qui on vu A ont aussi vu B • Stéréotypes Affinités calculées sur la base de larges ensembles de contenu
  • Recommandation de ContenuNicolas Pastorino - IPCse11 24/11/2011 49
  • Recommandation de Contenu Filtrage HybrideOptimiser la qualité de la recommandation en combinant les méthodes de qualification des comportementsNicolas Pastorino - IPCse11 24/11/2011 49
  • Recommandation de Contenu Filtrage HybrideOptimiser la qualité de la recommandation en combinant les méthodes de qualification des comportements Content-based filtering  “Content like this” ~Nicolas Pastorino - IPCse11 24/11/2011 49
  • Recommandation de Contenu Filtrage HybrideOptimiser la qualité de la recommandation en combinant les méthodes de qualification des comportements Content-based Collaborative filtering filtering  “Content like this”  “Customers who were interested in this product also bought …” ~Nicolas Pastorino - IPCse11 24/11/2011 49
  • Recommandation de Contenu Filtrage HybrideOptimiser la qualité de la recommandation en combinant les méthodes de qualification des comportements Content-based Collaborative Community- Stereotype- Context-based filtering filtering based filtering based filtering filtering  “Content like this”  “Customers who  “Customers like you  Recommendation  Recommendation were interested in also bought …” combines content depends on this product also cluster with affinity location, time, bought …” vectors mood, environment … Rock ~ ~ Pop R&BNicolas Pastorino - IPCse11 24/11/2011 49
  • Recommandation de Contenu Filtrage HybrideOptimiser la qualité de la recommandation en combinant les méthodes de qualification des comportements Content-based Collaborative Community- Stereotype- Context-based filtering filtering based filtering based filtering filtering  “Content like this”  “Customers who  “Customers like you  Recommendation  Recommendation were interested in also bought …” combines content depends on this product also cluster with affinity location, time, bought …” vectors mood, environment … Rock ~ ~ Pop R&B + A/B testing + near cold-start recommendationsNicolas Pastorino - IPCse11 24/11/2011 49
  • Recommandation de ContenuNicolas Pastorino - IPCse11 24/11/2011 50
  • Recommandation de ContenuI/O par RESTConnection native par n’importe quel clientHTTP-enabled ( simple avec PHP, extensionnative pour le CMS eZ Publish )Cloud-based : mise à l’échelle facileDifférentes méthodes de trackingd’évènements : JS, built-in the CMS Nicolas Pastorino - IPCse11 24/11/2011 50
  • Famous Last Slides 51
  • RECAP
  • RECAPL’émotion multicanal
  • RECAPL’émotion multicanal REST
  • RECAPL’émotion multicanal RESTAPI REST Extensible
  • RECAPL’émotion multicanal RESTAPI REST ExtensibleRecommandation de Contenu
  • Find me on Twitter : @jeanvoyeNotez cette présentation : http://joind.in/4350Slides disponibles bientôt à http://slideshare.net/jeanvoyeeZ Communityhttp://share.ez.noeZ Publish Community Projecthttps://github.com/ezsystems/ezpublishhttp://share.ez.no/download Merci !http://share.ez.no/get-involvedYooChoose, recommendation enginehttp://www.yoochoose.comeZ Systems & eZ Publish Enterprise Editionhttp://ez.no