Université IBM i 2019
22 et 23 mai
IBM Client Center Paris
Gautier DUMAS
Notos – https://www.notos.fr
gdumas@notos.fr – 04 30 96 97 31
Twitter @GautierDUMAS @Notos1
S35 – Développer en Node.js versus PHP
Université IBM i – 22 et 23 mai 2019
Au programme de cette session
▪ Présentation des deux technologies
• Node.js
• PHP
▪ Modèle bloquant / non bloquant
▪ Domaines d’application
▪ Get started / Installation
• Open Source Package Management
• Zend Server
▪ Prêt pour la production ?
▪ Benchmark sur POWER9
▪ Conclusions
Université IBM i – 22 et 23 mai 2019
NoToS
▪ Expertise autour de l’IBM i
▪ Sécurité
▪ PHP sur IBM i
▪ DB2 Web Query
▪ Développement de progiciels
Université IBM i
22 et 23 mai 2019
Présentation
Node.js & PHP
Université IBM i – 22 et 23 mai 2019
Node.js
▪ Langage JavaScript côté serveur
• JavaScript != Java
▪ Runtime Javascript s’appuie sur le moteur JavaScript v8 de Chrome (le
navigateur de Google)
▪ Orienté évènement
▪ Non bloquant
▪ Asynchrone
▪ Utilisation du gestionnaire de paquets npm (node package manager)
Université IBM i – 22 et 23 mai 2019
Node.js – Stabilité et prévisions 2019-2021
▪ https://github.com/nodejs/Release
Université IBM i – 22 et 23 mai 2019
PHP – Zend Server
▪ Langage de scripts côté serveur
▪ Runtime PHP amené par le Zend Server
▪ Généralement utilisé avec un serveur web (APACHE sur IBM i)
▪ Mais peut être utilisé pour du Scripting
▪ Programmation procédurale ET objet
▪ Disponible depuis 2006 pour de la production sur IBM i
▪ Composer (dépôt packagist) disponible mais non obligatoire pour la gestion des
modules et des dépendances
Université IBM i – 22 et 23 mai 2019
PHP – Stabilité et prévisions
▪ https://php.net/supported-versions.php
Extension et support à long terme avec Zend
http://www.zend.com/fr/support-center/support/php-long-term-support
Université IBM i
22 et 23 mai 2019
Modèle bloquant
vs
Modèle non-bloquant
Université IBM i – 22 et 23 mai 2019
Les modèles
▪ Modèle bloquant
• Fonctionnement intuitif de PHP
▪ Modèle non-bloquant
• Fonctionnement natif de Node.js
Université IBM i – 22 et 23 mai 2019
Comparaison des modèles
Université IBM i – 22 et 23 mai 2019
Modèle non bloquant en PHP
▪ En cours de discussion pour une meilleure intégration dans les versions futures
de PHP
▪ Un vrai intérêt de la communauté PHP
▪ Plusieurs projets déjà disponibles pour implémenter le modèle non bloquant
ou asynchrone
• ReactPHP : https://reactphp.org/
• projet ratchet (WebSockets pour PHP) : http://socketo.me/
▪ A l’heure actuelle, pour l’implémentation d’un modèle non-bloquant, Node.js
est mieux positionné
Université IBM i – 22 et 23 mai 2019
Domaines d’application
Node.js v10 PHP 7.2
Pour les applications temps réels
comme les chats, streaming vidéo …
Pour les calculs (CPU)
Pour les applications à très fort trafic
en raison de son I / 0 non bloquante et
de son modèle évènementiel
Pour les applications de gestion,
intranet, extranet
Single page
Utilisation de CMS pour des sites web,
sites e-commerce, blogs
Université IBM i
22 et 23 mai 2019
Get started / Installations
Université IBM i – 22 et 23 mai 2019
Node.js – Les modules open source
▪ Prérequis
• V7R2 ou supérieur
• Accès SSH à la partition (installé et démarré)
• IBM i Access Client Solutions 1.1.8.0 min (Juin 2018)
▪ Apporté par le gestionnaire de modules open source
d’ACS
▪ Le gestionnaire est lui-même à installer lors de la
première utilisation
Université IBM i – 22 et 23 mai 2019
Node.js - installation
Université IBM i – 22 et 23 mai 2019
Première application Node.js
▪ C’est un serveur web qui récupère et analyse l’url
demandée pour servir du contenu sur le protocole http
▪ Le code est dans le script serveur.js dans un dossier vide
créé pour l’application /www/NodeJs10/
▪ Démarrage de l’application Node.js
• CALL QP2TERM
• /QOpenSys/pkgs/bin/node /www/NodeJs10/serveur.js
▪ Le serveur écoute sur le port 2204 (cf. dernière ligne de
code Node.js).
▪ Testez dans un navigateur :
• http://adrs_ip:2204/
• http://adrs_ip:2204/a-propos/
• http://adrs_ip:2204/formation/ibmi/nodejs
var http = require('http');
var url = require('url');
var server = http.createServer(function(req, res) {
var page = url.parse(req.url).pathname;
console.log(page);
res.writeHead(200, {"Content-Type": "text/plain"});
if (page == '/') {
res.write('Ici l'accueil, que puis-je pour vous ?');
}
else if (page == '/a-propos') {
res.write('NoToS - Modernisation IBM i !');
}
else if (page == '/formation/ibmi/php') {
res.write('Formation php IBM i !');
}
else if (page == '/formation/ibmi/nodejs') {
res.write('Formation nodejs IBM i !');
}
res.end();
});
server.listen(2204);
Université IBM i – 22 et 23 mai 2019
npm
▪ npm - Node Package Manager – Gestionnaire de paquets officiel de Node.js
▪ Installé automatiquement avec Node.js
▪ Gestion des dépendances d’une application
▪ Installation des applications et modules Node.js disponibles sur le dépôt npm
Université IBM i – 22 et 23 mai 2019
Utilisation npm – module idb-connector
▪ Prérequis : indiquer la version Node.js utilisée par défaut
• /QOpenSys/pkgs/bin/nodever 10
▪ CALL QP2TERM
• cd /www/monApplication/
• /QOpenSys/pkgs/bin/npm i idb-connector
Université IBM i – 22 et 23 mai 2019
Utilisation du module idb-connector
▪ Exemples et documentation : https://github.com/IBM/nodejs-idb-connector
const {dbconn, dbstmt} = require('idb-connector');
const sSql = 'SELECT STATE FROM QIWS.QCUSTCDT’;
const connection = new dbconn();
connection.conn('*LOCAL');
const statement = new dbstmt(connection);
statement.exec(sSql, (x) => {
console.log(JSON.stringify(x));
statement.close();
connection.disconn();
connection.close();
});
Université IBM i – 22 et 23 mai 2019
PHP sur IBM i
▪ Dernière version de PHP (7.2) apportée par le Zend Server (actuellement en
version 2018.0.3)
• Téléchargement et informations sur :
http://www.zend.com/en/solutions/modernize-ibm-i
• Produit sous licence 7PHPZND
• L’installeur (format zip) fait un peu plus de 600 Mo
– Et le savf (zendphp7.savf) un peu plus de 1,5 Go
▪ Prérequis
Université IBM i – 22 et 23 mai 2019
Zend Server 2018.0.3
▪ Le Zend Server apporte
• Le moteur PHP (dans l’IFS dans /usr/local/zendphp7/…)
• La configuration par défaut d’une instance APACHE nommée ZENDPHP7 avec par
défaut les ports :
– 10080 pour les applications – document root associé /www/zendphp7/htdocs/
– 10081 pour l’interface graphique d’administration du Zend Server
– 10082 et 10083 pour des ports interne Zend
• Avec une licence, des fonctionnalités pour « augmenter » PHP
– Pour la production, la sérénité
– Monitoring, Zend Job Queue, Gestion du cache, outil de déploiement …
– Pour le développement, la productivité
– Z-Ray, Code Tracing, URL Insight, Zend Debugger…
Université IBM i – 22 et 23 mai 2019
Installation
▪ Installation en deux parties
• Première partie 5250 : restauration du programme sous licence
RSTLICPGM LICPGM(7PHPZND) DEV(*SAVF) SAVF(QGPL/ZENDPHP7)
• Deuxième partie dans un navigateur : premières configurations avant démarrage
http://adrs_ip:10081/ZendServer
Fin installation 5250
Fin configuration Web
Portail Zend Server !
Université IBM i – 22 et 23 mai 2019
Comparatif – get started
▪ Egalité pour ce match.
▪ Facile d’accès et d’installation
▪ Application « hello world !» rapide
Université IBM i
22 et 23 mai 2019
Prêt pour la production ?
Université IBM i – 22 et 23 mai 2019
Node.js
▪ Node.js existe depuis 2009
▪ Sur IBM i depuis la V7R1 et l’apparition du produit 5733-OPS
▪ NodeJs 10 à partir de la V7R2
▪ Maintenance et support gratuit par la communauté
• Par des ouvertures de tickets directement sur les projets Github, npm, bitbucket …
▪ Support par IBM Runtimes Team :
https://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/7/649/ENUSA17-
0817/index.html&request_locale=en
▪ Paquets idb-connector et itoolkit maintenus par IBM
• https://github.com/IBM/nodejs-idb-connector
• https://github.com/IBM/nodejs-itoolkit
▪ Nécessite d’utiliser un « Process Manager »
• PM2
Université IBM i – 22 et 23 mai 2019
Installation PM2 sur IBM i
▪ Dans l’interpréteur PASE
• > npm i –g pm2
▪ Réglage du PATH permanent pour le profil connecté
echo 'PATH=/QOpenSys/pkgs/bin:$PATH' >> $HOME/.profile
export PATH >> $HOME/.profile
echo 'PATH=/QOpenSys/pkgs/lib/nodejs10/bin:$PATH' >> $HOME/.profile
export PATH >> $HOME/.profile
Université IBM i – 22 et 23 mai 2019
Utilisation de PM2
▪ Pour lancer l’application Node.js, il suffit de :
• cd /www/NodeJs10/SQLquerySample/ positionnement dans l’application
• pm2 start sample.js
▪ L’application est lancée, des données d’utilisation (CPU et mémoire) sont stockées
et consultables
• pm2 monit
▪ Redémarrage automatique des applications en cas de crash
▪ Pour arrêter l’application :
• pm2 stop sample.js
Université IBM i – 22 et 23 mai 2019
PHP – Zend Server
▪ PHP depuis 1994 et sur IBM i depuis plus de 10 ans :
• Zend Core en 2006
▪ Connecteur natif avec l’extension ibm_db2
▪ PHP Toolkit for IBM i
• S’appuie sur le XMLSERVICE d’IBM
▪ Un environnement conçu et testé pour
la production :
• Dernières versions stables de PHP
• Mise à disposition des mises à jour
• Un support dédié à la plateforme IBM i
par Rogue Wave Software (Zend)
• Monitoring avancé des applications
• Gestion des déploiements
…
Monitoring
- Historique intelligent
des incidents
Configuration
avancée
Débogue
Z-Ray -
Zend Debugger -
Logs
Performance
- Code tracing
- Accélérateur de PHP pour
IBM i
- Gestion du cache
Statistiques
Université IBM i – 22 et 23 mai 2019
Comparatif - production ready ?
▪ PHP remporte ce comparatif
• Node.js plus jeune que PHP
• Partenariat fort et historique entre
Rogue Wave Software (Zend) et IBM
• Support entreprise de Zend
• Environnement et fonctionnalités
pour la production avec le Zend Server
Université IBM i
22 et 23 mai 2019
Benchmark
Node.js vs PHP
sur POWER 9
Université IBM i – 22 et 23 mai 2019
Contexte et environnement du benchmark
▪ La machine
• Power 9 (6 cœurs, 128 Go de mémoire, HMC virtuelle)
– Partition utilisée pour le benchmark
– 1 Coeur
– 64 Go de mémoire
– IBM i - V7R3
▪ Les serveurs
• Node.js 10 (pour le serveur web et le runtime Javascript) + PM2
• Zend Server 2018.0.3 - PHP 7.2 + Apache 2.4
▪ Le traitement / le test
• Récupération de 75 enregistrements par une requête SQL sur DB2 (PROCESS + I/O)
• Encodage en json du jeux de résultats (PROCESS)
• Retour de la chaîne JSON (NETWORK)
▪ Le testeur / stresseur pour la montée en charge : Apache Jmeter 2.13
• 700 requêtes HTTP en 10s
Université IBM i – 22 et 23 mai 2019
Les scripts – un peu de code !
▪ PHP
Connexion à DB2
Exécution requête SQL
Parcours des résultats
Conversion en chaine JSON
+ affichage
Université IBM i – 22 et 23 mai 2019
Les scripts – un peu de code !
▪ Node.js
Connexion à DB2
Exécution requête SQL
Conversion en chaine
JSON + affichage
Création du serveur web Node.js
Université IBM i – 22 et 23 mai 2019
Résultats
PHP Node.js
Moyenne temps
réponse
30 ms 24 ms
Ecart type 4 ms 3 ms
Valeur Min. 20 ms 20 ms
Valeur Max. 68 ms 49 ms
Université IBM i – 22 et 23 mai 2019
Comparatif - performances
▪ Node.js remporte ce comparatif
• Des I/O très performantes
• Son modèle non-bloquant
• Son fonctionnement évènementiel
• Bas niveau
Université IBM i – 22 et 23 mai 2019
Conclusions
▪ PHP et Node.js deux langages de scripts côté serveur
▪ Node.js plus jeune que PHP, mais en pleine croissance
▪ Plus partenaire et complémentaire que concurrent
▪ Node.js plus performant que PHP
▪ Apprentissage de PHP plus accessible que Node.js pour les développeurs
▪ Des nouvelles ressources de développeurs sur IBM i
▪ Bien intégrés dans nos environnements
Pour plus d’informations :
gdumas@notos.fr

Contenu connexe

PDF
Livre Blanc Web temps réel - Node JS
PDF
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
PDF
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
PDF
Introduction à web assembly
PDF
PDF
Zend Framework 2.0 - Le gestionnaire de modules
PDF
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
PDF
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
Livre Blanc Web temps réel - Node JS
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Introduction à web assembly
Zend Framework 2.0 - Le gestionnaire de modules
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS

Similaire à S35 developper en node.js versus php (20)

PDF
S43 passer à php 7 sous IBM i
PDF
S29 valorisation de l'existant ibm i avec php
PPTX
S21 les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...
PDF
IBM i: Built for Business - Philippe Bourgeois
PDF
PHP vs JavaScript
PPTX
Introduction à node.js
PDF
Introduction au développement Web
PDF
S51 vos projets web services ibm i a l aide de php
PPTX
JavaScript aussi sur le serveur et jusque dans le cloud?
PPTX
Server Side Javascript in the cloud
PPTX
JavaScript aussi sur le serveur et jusque dans le cloud?
PPTX
Parisweb - javascript server side - par où commencer ?
PPTX
Javascript as a first programming language : votre IC prête pour la révolution !
PDF
TP GWT JDEV 2015
PDF
Bbl microservices avec vert.x cdi elastic search
PPT
Formation d'architecte logiciel AFCEPF
PDF
Support de cours entrepise java beans ejb m.youssfi
PDF
Mon environnement de travail a-t-il encore un avenir ?
PDF
Intégration Continue et PHP
PDF
I know what you MEAN
S43 passer à php 7 sous IBM i
S29 valorisation de l'existant ibm i avec php
S21 les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...
IBM i: Built for Business - Philippe Bourgeois
PHP vs JavaScript
Introduction à node.js
Introduction au développement Web
S51 vos projets web services ibm i a l aide de php
JavaScript aussi sur le serveur et jusque dans le cloud?
Server Side Javascript in the cloud
JavaScript aussi sur le serveur et jusque dans le cloud?
Parisweb - javascript server side - par où commencer ?
Javascript as a first programming language : votre IC prête pour la révolution !
TP GWT JDEV 2015
Bbl microservices avec vert.x cdi elastic search
Formation d'architecte logiciel AFCEPF
Support de cours entrepise java beans ejb m.youssfi
Mon environnement de travail a-t-il encore un avenir ?
Intégration Continue et PHP
I know what you MEAN
Publicité

Dernier (9)

PDF
Démystification des QR codes - histoire - utilisations - techniques
PPTX
Projet de Fin d’Études – Plateforme FMS pour la Gestion des FCPR
PDF
Architecture logicielle et Modeles de Conception
PPTX
test pour la présentation foire de Chalôns V1
PDF
COURS GCDs Chap 9.pdf tous les éléments.
PDF
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
PDF
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
PPT
Pratiques des systèmes d'information ppt
Démystification des QR codes - histoire - utilisations - techniques
Projet de Fin d’Études – Plateforme FMS pour la Gestion des FCPR
Architecture logicielle et Modeles de Conception
test pour la présentation foire de Chalôns V1
COURS GCDs Chap 9.pdf tous les éléments.
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
Pratiques des systèmes d'information ppt
Publicité

S35 developper en node.js versus php

  • 1. Université IBM i 2019 22 et 23 mai IBM Client Center Paris Gautier DUMAS Notos – https://www.notos.fr gdumas@notos.fr – 04 30 96 97 31 Twitter @GautierDUMAS @Notos1 S35 – Développer en Node.js versus PHP
  • 2. Université IBM i – 22 et 23 mai 2019 Au programme de cette session ▪ Présentation des deux technologies • Node.js • PHP ▪ Modèle bloquant / non bloquant ▪ Domaines d’application ▪ Get started / Installation • Open Source Package Management • Zend Server ▪ Prêt pour la production ? ▪ Benchmark sur POWER9 ▪ Conclusions
  • 3. Université IBM i – 22 et 23 mai 2019 NoToS ▪ Expertise autour de l’IBM i ▪ Sécurité ▪ PHP sur IBM i ▪ DB2 Web Query ▪ Développement de progiciels
  • 4. Université IBM i 22 et 23 mai 2019 Présentation Node.js & PHP
  • 5. Université IBM i – 22 et 23 mai 2019 Node.js ▪ Langage JavaScript côté serveur • JavaScript != Java ▪ Runtime Javascript s’appuie sur le moteur JavaScript v8 de Chrome (le navigateur de Google) ▪ Orienté évènement ▪ Non bloquant ▪ Asynchrone ▪ Utilisation du gestionnaire de paquets npm (node package manager)
  • 6. Université IBM i – 22 et 23 mai 2019 Node.js – Stabilité et prévisions 2019-2021 ▪ https://github.com/nodejs/Release
  • 7. Université IBM i – 22 et 23 mai 2019 PHP – Zend Server ▪ Langage de scripts côté serveur ▪ Runtime PHP amené par le Zend Server ▪ Généralement utilisé avec un serveur web (APACHE sur IBM i) ▪ Mais peut être utilisé pour du Scripting ▪ Programmation procédurale ET objet ▪ Disponible depuis 2006 pour de la production sur IBM i ▪ Composer (dépôt packagist) disponible mais non obligatoire pour la gestion des modules et des dépendances
  • 8. Université IBM i – 22 et 23 mai 2019 PHP – Stabilité et prévisions ▪ https://php.net/supported-versions.php Extension et support à long terme avec Zend http://www.zend.com/fr/support-center/support/php-long-term-support
  • 9. Université IBM i 22 et 23 mai 2019 Modèle bloquant vs Modèle non-bloquant
  • 10. Université IBM i – 22 et 23 mai 2019 Les modèles ▪ Modèle bloquant • Fonctionnement intuitif de PHP ▪ Modèle non-bloquant • Fonctionnement natif de Node.js
  • 11. Université IBM i – 22 et 23 mai 2019 Comparaison des modèles
  • 12. Université IBM i – 22 et 23 mai 2019 Modèle non bloquant en PHP ▪ En cours de discussion pour une meilleure intégration dans les versions futures de PHP ▪ Un vrai intérêt de la communauté PHP ▪ Plusieurs projets déjà disponibles pour implémenter le modèle non bloquant ou asynchrone • ReactPHP : https://reactphp.org/ • projet ratchet (WebSockets pour PHP) : http://socketo.me/ ▪ A l’heure actuelle, pour l’implémentation d’un modèle non-bloquant, Node.js est mieux positionné
  • 13. Université IBM i – 22 et 23 mai 2019 Domaines d’application Node.js v10 PHP 7.2 Pour les applications temps réels comme les chats, streaming vidéo … Pour les calculs (CPU) Pour les applications à très fort trafic en raison de son I / 0 non bloquante et de son modèle évènementiel Pour les applications de gestion, intranet, extranet Single page Utilisation de CMS pour des sites web, sites e-commerce, blogs
  • 14. Université IBM i 22 et 23 mai 2019 Get started / Installations
  • 15. Université IBM i – 22 et 23 mai 2019 Node.js – Les modules open source ▪ Prérequis • V7R2 ou supérieur • Accès SSH à la partition (installé et démarré) • IBM i Access Client Solutions 1.1.8.0 min (Juin 2018) ▪ Apporté par le gestionnaire de modules open source d’ACS ▪ Le gestionnaire est lui-même à installer lors de la première utilisation
  • 16. Université IBM i – 22 et 23 mai 2019 Node.js - installation
  • 17. Université IBM i – 22 et 23 mai 2019 Première application Node.js ▪ C’est un serveur web qui récupère et analyse l’url demandée pour servir du contenu sur le protocole http ▪ Le code est dans le script serveur.js dans un dossier vide créé pour l’application /www/NodeJs10/ ▪ Démarrage de l’application Node.js • CALL QP2TERM • /QOpenSys/pkgs/bin/node /www/NodeJs10/serveur.js ▪ Le serveur écoute sur le port 2204 (cf. dernière ligne de code Node.js). ▪ Testez dans un navigateur : • http://adrs_ip:2204/ • http://adrs_ip:2204/a-propos/ • http://adrs_ip:2204/formation/ibmi/nodejs var http = require('http'); var url = require('url'); var server = http.createServer(function(req, res) { var page = url.parse(req.url).pathname; console.log(page); res.writeHead(200, {"Content-Type": "text/plain"}); if (page == '/') { res.write('Ici l'accueil, que puis-je pour vous ?'); } else if (page == '/a-propos') { res.write('NoToS - Modernisation IBM i !'); } else if (page == '/formation/ibmi/php') { res.write('Formation php IBM i !'); } else if (page == '/formation/ibmi/nodejs') { res.write('Formation nodejs IBM i !'); } res.end(); }); server.listen(2204);
  • 18. Université IBM i – 22 et 23 mai 2019 npm ▪ npm - Node Package Manager – Gestionnaire de paquets officiel de Node.js ▪ Installé automatiquement avec Node.js ▪ Gestion des dépendances d’une application ▪ Installation des applications et modules Node.js disponibles sur le dépôt npm
  • 19. Université IBM i – 22 et 23 mai 2019 Utilisation npm – module idb-connector ▪ Prérequis : indiquer la version Node.js utilisée par défaut • /QOpenSys/pkgs/bin/nodever 10 ▪ CALL QP2TERM • cd /www/monApplication/ • /QOpenSys/pkgs/bin/npm i idb-connector
  • 20. Université IBM i – 22 et 23 mai 2019 Utilisation du module idb-connector ▪ Exemples et documentation : https://github.com/IBM/nodejs-idb-connector const {dbconn, dbstmt} = require('idb-connector'); const sSql = 'SELECT STATE FROM QIWS.QCUSTCDT’; const connection = new dbconn(); connection.conn('*LOCAL'); const statement = new dbstmt(connection); statement.exec(sSql, (x) => { console.log(JSON.stringify(x)); statement.close(); connection.disconn(); connection.close(); });
  • 21. Université IBM i – 22 et 23 mai 2019 PHP sur IBM i ▪ Dernière version de PHP (7.2) apportée par le Zend Server (actuellement en version 2018.0.3) • Téléchargement et informations sur : http://www.zend.com/en/solutions/modernize-ibm-i • Produit sous licence 7PHPZND • L’installeur (format zip) fait un peu plus de 600 Mo – Et le savf (zendphp7.savf) un peu plus de 1,5 Go ▪ Prérequis
  • 22. Université IBM i – 22 et 23 mai 2019 Zend Server 2018.0.3 ▪ Le Zend Server apporte • Le moteur PHP (dans l’IFS dans /usr/local/zendphp7/…) • La configuration par défaut d’une instance APACHE nommée ZENDPHP7 avec par défaut les ports : – 10080 pour les applications – document root associé /www/zendphp7/htdocs/ – 10081 pour l’interface graphique d’administration du Zend Server – 10082 et 10083 pour des ports interne Zend • Avec une licence, des fonctionnalités pour « augmenter » PHP – Pour la production, la sérénité – Monitoring, Zend Job Queue, Gestion du cache, outil de déploiement … – Pour le développement, la productivité – Z-Ray, Code Tracing, URL Insight, Zend Debugger…
  • 23. Université IBM i – 22 et 23 mai 2019 Installation ▪ Installation en deux parties • Première partie 5250 : restauration du programme sous licence RSTLICPGM LICPGM(7PHPZND) DEV(*SAVF) SAVF(QGPL/ZENDPHP7) • Deuxième partie dans un navigateur : premières configurations avant démarrage http://adrs_ip:10081/ZendServer Fin installation 5250 Fin configuration Web Portail Zend Server !
  • 24. Université IBM i – 22 et 23 mai 2019 Comparatif – get started ▪ Egalité pour ce match. ▪ Facile d’accès et d’installation ▪ Application « hello world !» rapide
  • 25. Université IBM i 22 et 23 mai 2019 Prêt pour la production ?
  • 26. Université IBM i – 22 et 23 mai 2019 Node.js ▪ Node.js existe depuis 2009 ▪ Sur IBM i depuis la V7R1 et l’apparition du produit 5733-OPS ▪ NodeJs 10 à partir de la V7R2 ▪ Maintenance et support gratuit par la communauté • Par des ouvertures de tickets directement sur les projets Github, npm, bitbucket … ▪ Support par IBM Runtimes Team : https://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/7/649/ENUSA17- 0817/index.html&request_locale=en ▪ Paquets idb-connector et itoolkit maintenus par IBM • https://github.com/IBM/nodejs-idb-connector • https://github.com/IBM/nodejs-itoolkit ▪ Nécessite d’utiliser un « Process Manager » • PM2
  • 27. Université IBM i – 22 et 23 mai 2019 Installation PM2 sur IBM i ▪ Dans l’interpréteur PASE • > npm i –g pm2 ▪ Réglage du PATH permanent pour le profil connecté echo 'PATH=/QOpenSys/pkgs/bin:$PATH' >> $HOME/.profile export PATH >> $HOME/.profile echo 'PATH=/QOpenSys/pkgs/lib/nodejs10/bin:$PATH' >> $HOME/.profile export PATH >> $HOME/.profile
  • 28. Université IBM i – 22 et 23 mai 2019 Utilisation de PM2 ▪ Pour lancer l’application Node.js, il suffit de : • cd /www/NodeJs10/SQLquerySample/ positionnement dans l’application • pm2 start sample.js ▪ L’application est lancée, des données d’utilisation (CPU et mémoire) sont stockées et consultables • pm2 monit ▪ Redémarrage automatique des applications en cas de crash ▪ Pour arrêter l’application : • pm2 stop sample.js
  • 29. Université IBM i – 22 et 23 mai 2019 PHP – Zend Server ▪ PHP depuis 1994 et sur IBM i depuis plus de 10 ans : • Zend Core en 2006 ▪ Connecteur natif avec l’extension ibm_db2 ▪ PHP Toolkit for IBM i • S’appuie sur le XMLSERVICE d’IBM ▪ Un environnement conçu et testé pour la production : • Dernières versions stables de PHP • Mise à disposition des mises à jour • Un support dédié à la plateforme IBM i par Rogue Wave Software (Zend) • Monitoring avancé des applications • Gestion des déploiements … Monitoring - Historique intelligent des incidents Configuration avancée Débogue Z-Ray - Zend Debugger - Logs Performance - Code tracing - Accélérateur de PHP pour IBM i - Gestion du cache Statistiques
  • 30. Université IBM i – 22 et 23 mai 2019 Comparatif - production ready ? ▪ PHP remporte ce comparatif • Node.js plus jeune que PHP • Partenariat fort et historique entre Rogue Wave Software (Zend) et IBM • Support entreprise de Zend • Environnement et fonctionnalités pour la production avec le Zend Server
  • 31. Université IBM i 22 et 23 mai 2019 Benchmark Node.js vs PHP sur POWER 9
  • 32. Université IBM i – 22 et 23 mai 2019 Contexte et environnement du benchmark ▪ La machine • Power 9 (6 cœurs, 128 Go de mémoire, HMC virtuelle) – Partition utilisée pour le benchmark – 1 Coeur – 64 Go de mémoire – IBM i - V7R3 ▪ Les serveurs • Node.js 10 (pour le serveur web et le runtime Javascript) + PM2 • Zend Server 2018.0.3 - PHP 7.2 + Apache 2.4 ▪ Le traitement / le test • Récupération de 75 enregistrements par une requête SQL sur DB2 (PROCESS + I/O) • Encodage en json du jeux de résultats (PROCESS) • Retour de la chaîne JSON (NETWORK) ▪ Le testeur / stresseur pour la montée en charge : Apache Jmeter 2.13 • 700 requêtes HTTP en 10s
  • 33. Université IBM i – 22 et 23 mai 2019 Les scripts – un peu de code ! ▪ PHP Connexion à DB2 Exécution requête SQL Parcours des résultats Conversion en chaine JSON + affichage
  • 34. Université IBM i – 22 et 23 mai 2019 Les scripts – un peu de code ! ▪ Node.js Connexion à DB2 Exécution requête SQL Conversion en chaine JSON + affichage Création du serveur web Node.js
  • 35. Université IBM i – 22 et 23 mai 2019 Résultats PHP Node.js Moyenne temps réponse 30 ms 24 ms Ecart type 4 ms 3 ms Valeur Min. 20 ms 20 ms Valeur Max. 68 ms 49 ms
  • 36. Université IBM i – 22 et 23 mai 2019 Comparatif - performances ▪ Node.js remporte ce comparatif • Des I/O très performantes • Son modèle non-bloquant • Son fonctionnement évènementiel • Bas niveau
  • 37. Université IBM i – 22 et 23 mai 2019 Conclusions ▪ PHP et Node.js deux langages de scripts côté serveur ▪ Node.js plus jeune que PHP, mais en pleine croissance ▪ Plus partenaire et complémentaire que concurrent ▪ Node.js plus performant que PHP ▪ Apprentissage de PHP plus accessible que Node.js pour les développeurs ▪ Des nouvelles ressources de développeurs sur IBM i ▪ Bien intégrés dans nos environnements
  • 38. Pour plus d’informations : gdumas@notos.fr