Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Forum PHP 2014 - Cohabitation de PHP et Node.js au Monde.fr : pourquoi, comment ?

Forum PHP 2014 - Cohabitation de PHP et Node.js au Monde.fr : pourquoi, comment ?

Olivier Grange-Labat

October 24, 2014
Tweet

Other Decks in Technology

Transcript

  1. Cohabitation de PHP et Node.js au Monde.fr : pourquoi, comment

    ? Olivier Grange-Labat | 24 octobre 2014 | Forum PHP
  2. • filiale numérique du Monde • créée en 1998 •

    site web Le Monde.fr, applications mobiles et tablettes • “maîtriser la technique pour maîtriser le produit” • équipe technique : ◦ 11 développeurs web PHP ◦ 8 développeurs web Angular.js/Node.js ◦ 10 développeurs iOS/Android ◦ 4 développeurs web généralistes ◦ 3 ops ◦ 1 intégratrice… et 4 managers :) Qui sommes-nous ? Le Monde interactif :
  3. • 500 à 600 millions de pages vues par mois

    (OJD) • 141 000 abonnés numériques • environ 150 000 visiteurs simultanés en pic • stack front (www.lemonde.fr, abonnes.lemonde.fr) : ◦ Linux, HAProxy, Apache, PHP, framework maison, Redis, Oracle • stack CMS (notre outil de gestion de contenu) : ◦ Linux, HAProxy, Node.js, Express, Angular.js, Redis, PostgreSQL Qui sommes-nous ? Le Monde.fr :
  4. • techno inventée en 2009 • “JS côté serveur” (V8+libuv)

    • programmation événementielle • écosystème qui se développe fortement • déja des références importantes : Groupon, Uber, PayPal, Linkedin, Walmart... • deux principaux usages : ◦ scripting (bower, grunt, gulp, jshint…) ◦ développement de serveurs (statsd...) Rappels sur Node.js
  5. hello-world.js : $ node hello-world.js Server running at http://127.0.0.1:8080/ $

    curl http://127.0.0.1:8080/ Hello World $ Rappels sur Node.js
  6. • notre premier contact avec Node.js • refonte de l'envoi

    des alertes sur mobiles pour la présidentielle (auparavant en PHP) • challenges : ◦ nombre de mobiles élevé ◦ délai d'envoi court ◦ time-to-market court Achievement unlocked! \o/ Node.js au Monde.fr Q1 2012 :
  7. • outils de gestion de contenus vétustes (papier et web)

    • besoin de faciliter le rapprochement des rédactions papier et web • performances à améliorer sur les différents canaux => lancement d’un projet de modernisation Node.js au Monde.fr Q2 2012 :
  8. • visite de confrères • étude des technos du marché

    • POC de technos commerciales et d’une solution interne Node.js au Monde.fr Q3 2012 :
  9. • choix d’une solution maison : ◦ pour maîtriser la

    technologie ◦ compétences déjà en interne ◦ solutions du marché en retard • principes : ◦ développement en interne d’un outil de saisie unique pour les rédactions papier et web ◦ développement en interne de toute la gestion de contenus web ◦ mise en place d’un nouvel outil print commercial uniquement pour la mise en page du quotidien papier Node.js au Monde.fr Q1 2013 :
  10. • premiers cadrages techniques : ◦ architecture SPA ◦ choix

    effectués : ▪ Angular.js ▪ Node.js ▪ PostgreSQL ▪ Github ◦ workflow par PR ◦ etc. • début des développements (MVP) Node.js au Monde.fr Juin 2013 :
  11. • jalon premier numéro du journal le 6 octobre •

    d’autres à venir sur le numérique • bref, un projet en cours de réalisation avec : ◦ outils agiles : SUM, itérations, rétrospectives, story maps, product owner, scrummaster… ◦ conception itérative : design studios, mocks, tests utilisateurs, interventions d’un ergonome… ◦ livraisons chaque semaine ◦ intégration continue ◦ tests, test, tests ◦ … :) => l’heure d’un rapide bilan Node.js au Monde.fr Où en sommes-nous :
  12. • même paradigme côté client et serveur • même langage

    côté client et serveur (JavaScript everywhere!) • Node.js pour le temps réel (notifications, collaboratif, chat...) • excellente techno pour fabriquer une API • compétences en interne • techno cutting-edge permet d’attirer des talents Node.js au Monde.fr Pourquoi le choix de Node.js sur ce projet ?
  13. • promesse tenue pour les dévs de rester dans le

    flow • JS everywhere : client, serveur, db, déploiement, tests • partage de certaines librairies entre le client et le serveur (lodash, moment…) • excellent packager (npm) • des modules très simples qui font une seule chose • stable, y compris en changeant de version • déploiement très, très simple (nvm+npm) • documentation complète, à jour Node.js au Monde.fr Points forts :
  14. • programmation asynchrone difficile à appréhender ◦ async pour éviter

    le “callback hell” ◦ promesses • paradigme “serveur” vs “requête” (PHP) ◦ redémarrer le serveur lors des livraisons ◦ gérer les exceptions : process.on('uncaughtException', ...); + supervisor ◦ superviser la mémoire (memory leaks) Node.js au Monde.fr Points faibles :
  15. • écosystème immature ◦ bookshelf, primus, supervisor, winston • nouvelles

    problématiques bas-niveau ◦ forkie Node.js au Monde.fr Points faibles :
  16. • architecture SPA ? ◦ SEO ◦ performances navigateurs mobiles

    encore insuffisantes pour un framework JS haut-niveau ◦ sommes-nous un site ou une application ? • plutôt : ◦ API d’accès à nos données sous Node.js ◦ génération de pages HTML côté serveur ◦ stack PHP (+Web Components !) Quelle suite pour Node.js au Monde.fr ? Prochaine version du site web Le Monde.fr en 2015 :
  17. J’en n’ai absolument aucune idée. Quelle suite pour Node.js au

    Monde.fr ? • POC avec une SPA publique (tôt)
  18. Pivotez autour de vos données pour mettre en place une

    nouvelle stack. Conclusion • c’est un pattern courant • it just works!
  19. Vous êtes développeur avant d'être développeur PHP. Conclusion • la

    techno n’est qu’un outil • investissez pour apprendre d'autres technos • en particulier JavaScript :) • travaillez vos fondamentaux • qu'est ce qui caractérise un très bon dev ?
  20. Node.js est une excellente techno serveur. Conclusion • ce n’est

    pas une question de hype • API = accès aux données + serveur + JSON • SPA ou problématique de montée en charge
  21. Node.js est prêt pour la production. Conclusion • Groupon, Uber,

    PayPal, Walmart, Linkedin, NYTimes… (sur Quora : http://qr.ae/D12hC)