mercredi 14 avril 2010

Pour valider une plateforme JEE vous devez vous assurer que toutes les couches traversées fonctionnent correctement. La vérification passe par la validation des versions utilisées, le paramétrage, les testes techniques et fonctionnels, les tests de charges associés. Une architecture sécurisée est avant tout une architecture scalable et redondante afin d’anticiper les charges et incidents.


Une check liste peut être établit afin de ne pas oublier certaines parties de l’architecture ou point technique qui pourrait faire écroulé l’édifice.

ü  Socle de version en accord avec le support
ü  Validation réseau
ü  Tuning OS
ü  Tuning JVM
ü  Architecture
ü  Tuning WLS
ü  Monitoring
ü  Application
ü  Validation des composants externes
ü  Bench
ü  Formation des équipes en charge de la plateforme

Pour isoler les risques, vous devez passer au préalable par une phase d’industrialisation de plateforme afin de sécuriser tous les éléments que vous allez mettre en place dans votre architecture.

Le fait de définir des briques de développements validés et maitrisés par tous les intervenants peut par exemple rendre plus fluide la phase de validation. De même que l’utilisation de scripting normalisé ou l’utilisation d’une virtualisation peut éviter des erreurs dans la réplication des environnements, etc ….

VERSIONS

Vous devez vous assurer que le socle de version est en concordance avec le support éditeur. Cela peut vite devenir un casse-tête quand plusieurs produits sont interdépendants avec des contraintes de version forte.

Il est en général recommandé de prendre les dernières versions pour embarquer un maximum de correctif et d’évolution, mais renseignez-vous sur la stabilité des nouveautés auprès des supports respectifs ou réalisés des POC.

Le plus simple étant d’établir un socle validé en interne dans le cas de l’industrialisation si la structure le permet.

RESEAU

Les problèmes pouvant intervenir sur cette couche étant souvent difficile à isoler et analyser, faites intervenir des experts sur le sujet. Le cas le plus courant étant une interface en half duplex ou un mélange d’interfaces sur une même machine.

OS

Assurer vous que les paramètres systèmes sont correctement positionnés pour un serveur d’applications. En effet, le système vient avec un paramétrage par défaut qui doit convenir avec toute sorte d’application. Il faut donc modifier cette partie pour avoir de meilleurs temps de réponse et éviter certains blocages. Le plus courant étant le TCP_TIME_WAIT (partie TCP) et le nombre de file descripteur.

Valider donc cette partie avec un expert Système en prenant en référence le guide de tuning proposé dans les documentations éditeur comme point de départ.

JVM

La validation de la JVM passe d’abord par sa version. Certaines nécessitent des patches OS, d’autres ne sont pas supportés.

Valider ensuite le sizing mémoire par rapport à la machine et les options de GC à utiliser pour éviter les contentions et dysfonctionnement (GC non approprié, taille mémoire trop petite pour la charge utilisateur ou trop grande par rapport à la mémoire physique de la machine).

Concernant le JIT, toujours utiliser la version serveur qui est dédiée à un environnement de production.

ARCHITECTURE

Assurer vous que l’architecture déployée est scalable, car en cas de problème le mode multiinstance permettra d’assumer des défaillances sur une non tenu de charge ou des interruptions de service.

Vérifier en cas d’utilisation de cluster que les composants utilisés par celui-ci fonctionnent correctement et réaliser des testes techniques (validation des load balancing, failover/failback, dialogue cluster, etc …).

WEBLOGIC

Le tuning Weblogic n’est pas à proprement parler un tuning, mais plutôt un sizing. En effet si celui-ci est sous dimensionnés c’est la plate-forme totale qui sera sous exploitée. Inversement si les paramètres sont trop lâches, c’est trop de ressources déclenchées qui vont s’exécuter et écrouler la plate-forme.

On peut par contre jouer sur les pools ou cache pour obtenir des gains en temps de réponse, mais ces temps sont directement imputables au temps d’exécution JAVA du code applicatif et du backend (excepté les situations de lock).

La 1er chose à valider est le mode de fonctionnement Weblogic. Toujours prendre un domaine en mode PRODUCTION, jamais en mode DEVELOPPEMENT. En effet, ce mode spécifique aux modifications répétées de l’application permet de prendre ceux-ci en compte automatiquement. Les mécanismes mis en jeux sont trop couteux pour un environnement de production en charge et peuvent faire écroulé les temps de réponse.

·         Le mode de déploiement est également important. Assurer vous que les applications sont précompilées et que le mode de déploiement est adéquat (stage/external stage/side by side)

·         Rationaliser les logs générés par le serveur pour éviter trop d’écriture et mieux exploiter leurs contenus.

·         Mettre en place des procédures pour être alertes en cas de défaillance de certaines ressources types threads ou datasource.

·         Tailler vos pools pour assurer la charge.

·         Valider les différends timeout

 MONITORING

Assurer vous que la plate-forme est correctement monitorer afin de pouvoir effectuer des ajustements sur certains paramètres en bench ou en production. Cela permet également d’anticiper les problèmes et faire du capacity planing

APPLICATION

Mettre en place des outils de profiling dès la phase de développement pour détecter à la source les problèmes. Donner des recommandations de développement pour mieux coller à l’architecture finale. Penser à définir certains timeout non prévue par les composants d’infrastructure (timeout http de dialogue externe, etc …). Effectuer des bench avec du profliling pour s’assurer que l’application ne rencontre pas de problème en charge (et les corriger lorsqu’ils sont détectés). Précompiler les packages JEE résultants.

 BACKEND

Validation des composants externes (DataBase, LDAP, etc)

BENCH

Effectuer des tests pour valider l’architecture de production sur une plateforme dédiée à l’identique ou s’en approcher en réalisant plusieurs types de scénario couvrant un maximum la partie fonctionnelle. Les tests pourront être :

Fonctionnel
Pour valider que la plateforme réponde bien à la demande fonctionnelle.
De charge
Pour valider que la plateforme va tenir la charge de production.
De non-régression
Dans le cas d’une plate-forme mise à jour, valider que celle-ci n’a pas subit régression par rapport à la version d’avant
Aux limites
Voir jusqu’où on peut aller (capacity planing)
De vieillissement
Voir s’il n’y a pas de fuite mémoire
De robustesse
Voir le comportement de la plate-forme en cas de panne ou d’incident dégradant la plate-forme.

0 commentaires:

AUTEUR

Ma photo
Carrières Sur Sein, Yvelines, France
Consultant Oracle (Ancien consultant BEA depuis 2001), je m’occupe des expertises sur les produits Oracle : SOCLE (Weblogic, Coherence, JRockit) SOA (Service Bus, SOA Suite, BPM)
MON CV

LABEL 3D

Blogumulus by Roy Tanck and Amanda Fazani

LABEL CLOUD

MAP

Locations of visitors to this page

AUTRES BLOG

LIVRES

MEMBRES