GUIDE_MVS_JAVA dans CICS _LBP

Transcription

GUIDE_MVS_JAVA dans CICS _LBP
Document
C0 - Public
C1 - Interne
C2 - Sensible
C3 - Confidentiel
C4 - Secret
GUIDE MVS
28 Novembre 2013
JAVA dans CICS – Retour d’Expérience
Rédacteurs : JL Lacheny/Ph Carreau
26/08/2013
JAVA dans CICS – Retour d’Expérience
Sommaire




Java sur Z : Objectifs - Périmètre
Démarche du POC sous CICS
Périmètre du POC
Réalisation du POC



JAVA et les Outils de développement
JAVA et l’ Exploitation
JAVA et DB2 sous CICS
 Et si on parlait un peu Technique !!!

2
17/12/2013
Synthèse et Suite à donner …
JAVA sur CICS - Retour d'Expérience
JAVA sur Z : Opportunité
La chaine de liaison « PNiLD » actuelle positionne :
La Présentation et Navigation sur « Distribué »
La Logique métier et le stockage des Données sur « Z »
La Logique métier est écrite en langage COBOL et s’exécute sous le
gestionnaire transactionnel CICS
Le positionnement des données est ancré sur le Z

Tant qu’il existera un programme COBOL/CICS
Une programmation de JAVA sur Z permettrait d’avoir :
Un langage unique sur l’ensemble de la chaine de liaison
Et à terme, un choix de placement des traitements et des données (Distribué ou Z)
-
3
17/12/2013
JAVA sur CICS - Retour d'Expérience
Etude JAVA sur Z : Objectifs et périmètre

Objectifs
 Apporter une vision à Court Terme sur « La faisabilité de JAVA sur Z »



Programmation JAVA dans l’ensemble des cas d’utilisation (..)
Performance
Exploitabilité
 Et sur les économies potentielles apportées par le langage

Utilisation processeurs ZiiP, Non facturation MLC
 Donner une vision stratégique à MT/ LT




Les nouveaux programmeurs sont « JAVA » (en France)
Contribuer à l’ouverture des traitements du SI LBP sur différents types de plateformes
… etc.
Périmètre
 « Logique Métier » et « Accès aux Données » sur Z


En environnement transactionnel CICS
En environnement BATCH
NB :
Hors périmètre : La partie « PRESENTATION » est déjà en JAVA sur « ID »
4
17/12/2013
JAVA sur CICS - Retour d'Expérience
Etude JAVA sur Z
Démarche du POC avec assistance IBM
Maquette JAVA CICS : Réécriture des services applicatifs du SAMPLE La Poste
Intégration Z
avec la
plateforme de
dev JAVA
Ecriture d’un
pgm JAVA
pour CICS
MDV
DAT
E&D : CDM
DAT +
Mise en place
des
répertoires et
outils unix
dans USS
Intégration et
coexistence
JAVA avec
COBOL
JAVA dans
CICS : levée
des
incertitudes
MTC / DAT
Exécution
des
programmes /
comparatif
avec Cobol
MTC
MTC
MTC
MTC
MDV
MDV
MDV
DAT
DAT
DAT
Pratiques de développement
LBP
et intégration des composants
existants
Architecture technique
Pratique de
Production
LBP
DAT
Validation
opportunité
Faisabilité de la programmation JAVA dans l’ensemble des cas d’utilisation
(Batch , Proc Stock DB2, WAS sur Z)
5
17/12/2013
JAVA sur CICS - Retour d'Expérience
POC
OK,
POC JAVA : Intégration Z
Pratiques de développement
LBP
et intégration des composants
existants
Pratique de
Production
LBP
Architecture technique
OK, à creuser
Validation
opportunité
Client IC
Client ID
 Plateforme de développement
Eclipse
 OK avec Plugin CICS Explorer
 Utilisation de l’outillage standard (RAD
- Pas de révolution)
STRADA
AESC
Architecture applicative
Choix cornélien !!
 Application COBOL + JAVA avec AESC
 Mais conversion entre COBOL et JAVA
Debug

 Limitation du nombre de debugger
 Lenteur liée à la plateforme distante.
 Lié à l’utilisation de la JVM dans
CICS
SAM
GCR
Lien I.S.
SD
Lien direct
ID - WOR
CNN IS
Application full JAVA sans AESC
 Transformation de l’AESC en JAVA ?
Lié à la programmation des Services
Applicatifs CICS à la DISFE (Banque
Postale)
Le Service Applicatif
Le Service Applicatif
STRADA
AESC
ACCESSEUR
AESC : EAI maison
6
17/12/2013
JAVA sur CICS - Retour d'Expérience
OK,
POC JAVA : Accesseur DB2
Pratiques de développement
LBP
et intégration des composants
existants
Architecture technique
Pratique de
Production
LBP
OK, à creuser
Validation
opportunité
Accès aux données relationnelles : interfaces de programmation

JDBC : Le cas le plus facile pour un POC




La communication est gérée par CICS (DB2Tran)
Intégration des package dans la collection NULLID
Simplification du FrameWork ID
SQLJ : Le cas le plus proche de COBOL






Syntaxe plus concise que JDBC (SQL habillé)
Procédure de pré-compilation
Création d’un pseudo DBRM + Equivalent BIND  Mode statique à l’exécution
Association d’un package au programme JAVA
Sécurisation par l’autorisation d’accès au package/plan
Adaptation au packaging OSGI / Développement SQLJ à voir… (.sqlj)
NB : en CICS TS v5.1, pas besoin de L8 TCB pour des accès JDBC ou SQLJ, on reste sous le thread Java (T8 TCB)
7
17/12/2013
JAVA sur CICS - Retour d'Expérience
OK,
POC JAVA : La Production
Pratiques de développement
LBP
et intégration des composants
existants
Architecture technique
Pratique de
Production
LBP
OK, à creuser
Validation
opportunité
Transfert des modules JAVA (étude théorique ) OK
 Utilisation de l’outillage standard
 Endévor  comme actuellement pour COBOL
 CVS  comme actuellement pour JAVA !
Définition CICS
 La version 5 de CICS, plus récente, est la mieux adaptée à la gestion des programmes JAVA
Boite noire JVM
(JVM z/OS = n’importe quelle JVM)
 Instrumentation JVM standard. Utilisé IBM Support Assistant pour optimisation GC
8
17/12/2013
JAVA sur CICS - Retour d'Expérience
JAVA– Si on parlait un peu technique
JAVA : Langage de programmation orienté objet.
•
C’est un langage portable : WRITE ONCE RUN EVERYWHERE
•
Cette portabilité est fondée sur le concept de Machine virtuelle : la JVM
•
Le compilateur ne génère pas un exécutable mais du code binaire (bycode) portable sur n’importe
quelle machine/OS, pour un processeur virtuel (la JVM). Ce traitement peut être une interprétation
ou une compilation dynamique (JIT).
•
La JVM est un environnement d’exécution qui fait la relation entre le programme JAVA en bytecode
et les OS (Linux, Windows, Z/OS …) ainsi que CICS sous 2 formes différentes : le Pool de JVM et le
JVM Server.
•
La JVM gère :
 la compilation du source (commande JAVAC)
 le chargement des programmes en mémoire
 la transformation du bytecode en code machine de l’environnement (JIT)
 leur exécution
 la gestion de la mémoire
9
17/12/2013
JAVA sur CICS - Retour d'Expérience
Java
JVM – Si on parlait un peu technique
MAX : Xmx
Fonctionnement généraliste de la mémoire (HEAP) d’une JVM
Les 3 paramètres principaux de gestion de la
mémoire sont :
-Xmx : Taille maxi de la JVM. Lorsqu’un objet ne
pourra plus être chargé dans cette JVM, on
aura un Out Of Memory.
-Xms : Taille Mini, à partir de laquelle on doit faire
du ménage avec le Garbage Collector.
-Xmns : Taille de la NURSERY. Par expérience
25% de –Xmx, en tous cas jamais > 40%.
C’est la zone de chargement des nouveaux
objets JAVA.
-1- Les nouveaux objets JAVA sont chargés dans la
moitié de la Nursery jusqu’à « allocation failure ».
Alors flip/flop et utilisation de la seconde moitié
de la Nursery.
-2- Pendant ce temps, déclenchement du Garbage
Collector sur la première moitié de la Nursery.
C’est le thread qui a subi l’allocation failure qui va
déclencher le GC.
-3- Pendant le GC, il y a des objets qui sont toujours
IN USE, ils sont alors déplacés vers la partie
haute de la JVM qui s’appelle la TENURED
AREA, de façon à vider la ½ Nusery.
-4- Ce mécanisme de flip/flip est déclenché à nouveau
lorsque la seconde moitié est pleine. Et ainsi de
suite.
-5- On accumule donc les objets dans la TENURED
AREA. Lorsque l’on atteint une « allocation
failure », on déclenche le GC sur cette zone.
Cette allocation failure apparaît lorsqu’on a atteint
le –Xms. On travaille au maximum à l’intérieur du
Min (~ DSA CICS)
10
17/12/2013
Min Xms
Max = Min en CICS
Car de petits objets
Compact si
Gab Coll pas
suffisant
TENURED AREA
6
5
Xgcthreads4
4
Garb Coll
3
Objets JAVA
1
Xmns 25 %
In use
Nursery
2 Si Full
-6- Si le « Retry » de l’allocation mémoire après passage du GC n’est pas OK (zone trop
morcellée), il y a une phase de compaction d’objets (~ compression TS) pour avoir une
zone de pages contigües la plus grande possible. (Move d’objets en mémoire  temps de
pause)
-7- Si la Compaction est insuffisante, on réalise une allocation au dessus du –Xms.
-8- Quand plus d’allocation possible, la JVM tombe en « OUT OF MEMORY ». C’est bien la
majorité des cas où on a une fuite mémoire (Memory Leak) : les références sur des objets
ne sont pas libérées.
JAVA sur CICS - Retour d'Expérience
La Java Virtual Machine
JVM – Si on parlait un peu technique
Quelques points à noter :
 Réduire au mieux le temps de PAUSE lié aux actions de compression :
o Si la –Xmx est trop grande, alors la compression va durer longtemps
o Si la –Xmx est trop petite, alors il va y avoir trop d’actions de compression
 Pour CICS, on positionnera un –Xmx = -Xms (pour un WAS, on aura un –Xms ~ 60% du –Xmx)
- Occupation de la Mémoire
GC
é
Lin
GC
re
éai
Lin
aire
- La fuite mémoire
On n’arrive plus à libérer de la mémoire  GC de plus
en plus fréquent  augmentation de la consommation
CPU  fin éventuelle par exception OutOfMemory.
Fuite Mémoire
Dos de Dinosaure
11
17/12/2013
Important : En tests, il faut exécuter les applications
JAVA suffisamment longtemps pour identifier les fuites
mémoires.
JAVA sur CICS - Retour d'Expérience
La Java Virtual Machine
JAVA/ COBOL
comparatif rapide
Langage
Implémentation
COBOL
Procédural
Compliateur COBOL + LE
JAVA
Objet
JDK (JRE inclus)
Compilation
oui en amont
oui, en deux temps :
1/ commande javac (facultatif)
2/ par le JIT au moment de l'exécution
Link edit
Code page
Stockage
Exécution
oui en amont ou non
EBCDIC
PDS
BATCH (JCL)
non, tout est dynamique
Unicode (ASCII)
Répertoire (ZFS)
JAVA Stand Alone (script)
Lancement
Par un EXEC PGM
Lancement par la commande JAVA
Récupération des modules
STEPLIB
CLASSPATH
chargement des modules
Dans l'espace adresse
Dans la JVM
Taille mémoire maxi
taille de de l'espace, ABEND si plus taille de la JVM, Out Of Mémory si plus
de place
de place
Consommation CPU
Prog + OS sur CP
Prog + JIT + Gestion JVM sur ZaaP
OS sur CP
Accès à la techno Z
standard
Classes JAVA à intégrer
12
17/12/2013
JAVA sur CICS - Retour d'Expérience
JAVA sur Z
Les conteneurs
2 possibilités s’offrent à nous :
Les Lanceurs JAVA : Produit intégrant la JVM et puis c’est tout
•
BPXBATCH par exemple
Les Conteneurs JAVA : Produit intégrant la JVM + des services + des APIs supplémentaires
•
Les services sont instanciés directement, pas besoin de les créer
•
Les APIs simplifient la programmation (à l’image des macros assembleurs ;-) )
•
Pour certains services & APIs des normes ont été établies (norme J2EE par exemple)
•
Les conteneurs sur Z/OS :
 Z/OS Batch container (Z/OS 1.13)
 IMS
 CICS : Le POC LBP
 DB2 (procédures stockées)
 WAS sur Z (répond aux normes J2EE)
 Websphere computed Grid
 …
13
17/12/2013
JAVA sur CICS - Retour d'Expérience
POC JAVA
Résultats des tests – Synthèse et Comparatif
Pratiques de développement
LBP
et intégration des composants
existants
Pratique de
Production
LBP
Architecture technique
Validation
opportunité
Comparer des choses comparables
Chauffer la JVM (ex. opt JITC)
Java 6, ou mieux.. 7 et 64 bits
..CICS V4.2 et V5…
JMeter : Echantillon de 200 :
Traitement
Z196
Test Cobol
Test SAM JAVA
Test Full JAVA
ZEC12
Test Cobol
Test SAM JAVA
Test Full JAVA
Temps Resp devraient
être identiques
Temps utilisateurs
Echantillon Moyenne (ms) mediane
200
200
200
115
101
105
100
95
97
Rep CICS
6,5
9,7
20,4
QR CICS
1,303
1,099
0,3825
J9
temps CICS
L8
TOTAL CPU Total CP V4 Total CP V5
0
3,1765
5,407
Gain V4
Gain V5
1,529
1,5515
2,5275
2,832
5,827
8,317
2,832
2,6505
2,91
2,832
2,6505
0,3825
-6,41%
2,75%
-86,49%
0,865
0,843
1,2825
1,595
2,674
4,518
1,595
1,4445
1,4715
1,595
1,4445
0,189
-9,44%
-7,74%
-88,15%
T8
200
200
200
83
79
93
74
71
90
2,4
4,1
9,4
0,73
0,6015
0,189
0
1,2295
3,0465
Temps de réponse
utilisateurs proches
Economie de 10 à 90 % sur les
MIPS « facturables »
Temps de réponse proche et économie des Mips « facturables »
Mais il faut comparer des choses comparables
14
17/12/2013
JAVA sur CICS - Retour d'Expérience

POC JAVA
Résultats des tests – Synthèse et Comparatif
Pratiques de développement
LBP
et intégration des composants
existants
Architecture technique
Pratique de
Production
LBP
Validation
opportunité
Comparer des choses comparables
Chauffer la JVM (ex. opt JITC)
Java 6, ou mieux.. 7 et 64 bits
..CICS V4.2 et V5…
 Tirs de chauffe pour monter les 10 JVM du CICS TS 4.1 (MaxJVMTcbs = 10) en JVMPool.
 Chauffage des JVM pour atteindre le paramètre Xjit.count (Just In Time Compilation)
Temps Resp devraient
être identiques
TIR : 30.000 transactions sur 4 utilisateurs, soit 7500 par utilisateur
Injection sur le CICS Routeur, de telle sorte qu’une transaction Cobol ou Java est injectée en parallèle et dans les mêmes conditions
d'activité machine sur l'AOR V4.1 et V5.1.
On a ainsi un débit de 12 trans/sec sur chaque AOR (4 XZW1 (cobol), 4 XZW2 (SAM en Java), 4 XZW4 (full Java avec LINK jcics)
 Temps de réponses CICS quasi identiques
Relevés records SMF110 : En attende retour IBM
TIR A : 20 utilisateurs à 3000 transactions. L'AOR V4.1 bloque quasiment immédiatement (seulement 10 JVM)
TIR B : Augmentation progressive du nombre d'utilisateurs avec 100 transactions chacun. (1 ==> n). Pour n=9, blocage de l'AOR
V4.1
TIR C : Tir uniquement sur l'AOR TS 5.1 selon le même principe. Pour n=60 utilisateurs, soit 180 transactions/sec, la partition est à
100% et commence à tousser. Le JVMServer cependant continue de fonctionner au rythme de la puissance donnée au CICS. Pas
de blocage. Le MAXThread du JVMServer est à 50.
15
17/12/2013
JAVA sur CICS - Retour d'Expérience
POC JAVA : Conclusions du POC avec CICS

En CICS Version 4.1 (jusqu’à fin 2013)

Programmation :
OK dans un cadre expérimental ou limité

Framework JAVA :
Petite évolution du Framework existant

Coexistence avec l’existant :
OK

Intégration dans les CICS (Définitions) :
OK
 Cas d’Usage préconisé dans le cadre d’une utilisation pour quelques niches


En CICS Version 5.1 (disponible fin 2013 – 2014…)

Refonte de la méthode de programmation (OSGI)


Tendance du marché…
Cas d’usage se rapproche plus de ceux du COBOL


(ex : Pour PARTAGE, calcul du jeton « sécurité », …)
Mais les processus autour des services applicatifs seront à revoir (AESC, …)
Temps de réponse/ traitements

Les Temps de réponse « utilisateurs » sont de niveaux comparables

Economie de 10% sur le coût CPU du service applicatif, si SAM seulement (type 1)


Economie de 90% sur le coût CPU du service applicatif, si Full JAVA (type 2),

16
Quasi-immédiate !
Mais nécessite des pré-requis :
 Réorganisation de l’utilisation de l’AESC
 Dépendra du nombre de processeurs ZiiP disponibles
 …
17/12/2013
JAVA sur CICS - Retour d'Expérience
JAVA sur Z – Synthèse de L’étude CICS

JAVA sous CICS : … une étape





Temps de réponse utilisateur proches de COBOL
Permet la coexistence avec la programmation COBOL
Utilise l’infrastructure standard de la plate forme IC
Permet une économie substantielle (90% de consommation du programme
JAVA devient éligible aux processeurs ZIIP)
Mais

Utilisation en CICS 4.1 (actuelle) … limitée



Utilisation de CICS 5.1 (2014) … plus ouverte


Nécessite le packaging OSGI
Quelques contraintes/limites actuelles de programmation



17
JVM mono thread
Transaction éligible : K802 (transaction très consommatrice) ou niche …
Nécessite la Refresh de la JVM lors des tests
Débug « lourd » sur un serveur éloigné
… Limite la mise en place d’un développement industriel
17/12/2013
JAVA sur CICS - Retour d'Expérience
JAVA sur Z - Suite à donner à l’ETUDE
Avant de passer à une phase de généralisation dans une cible MT/LT, il faut :

Revoir les impacts de l’architecture AESC, dans le cas d’usage CICS

Intégrer la plate forme Z dans l’ingénierie de développement JAVA
(framework)



Intégrer les procédures et outils d’exploitation




18
Consolider la démarche mise en place lors du POC CICS
 JAVA en BATCH
 JAVA sur Proc-stock DB2
 JAVA sur WAS z/OS
S’assurer de la « gestion de configuration »
 …
Développer l’exploitation « UNIX » sur l’environnement Z (USS)
S’assurer de l’intégration de l’ensemble des outils de production
Ajouter des indicateurs dans la métrologie
…
17/12/2013
JAVA sur CICS - Retour d'Expérience
La Banque Postale vous remercie de
votre attention !