Archives de Tag: Migration

Migration : JBoss AS 7.1.1 vers JBoss EAP 6.3

Jusqu’à maintenant nous utilisions JBoss AS 7.1.1 qui est la dernière version communautaire disponible. Deux ans plus tard et même si cette version fonctionne plutôt bien ses modules ne sont pas des plus récents (Hibernate / RestEasy / etc) et il a été reconnu que JBoss AS 7.1.1 possède quelques bugs qui ne seront jamais résolu en tant que JBoss AS.

Pour migrer vers un serveur plus récent il y a eu deux choix : soit migrer vers une version dite « EAP » (Enterprise Application Platform ») qui est une version dite d’entreprise car elle possède un support (payant) de la part de RedHat soit directement migrer vers WildFly 8 qui est en fait JBoss AS 8 mais renommé car « JBoss » était devenu un terme trop générique (voir la page de Wikipedia pour plus d’information sur ce sujet).

Cependant WildFly 8 étant un gap technique assez important ce fut plutôt JBoss EAP 6.3.0.GA qui fut choisi. Ce dernier est équivalent à un JBoss 7.4.x et possède quasiment toutes les caractéristiques techniques de JBoss AS 7.1.1. Cela fut donc assez rapide, modulo de devoir retester toutes les applications (environ une dizaine, argh) et de vérifier que la remontée des stats fonctionne toujours (projet interne faisant de l’introspection de Tomcat pour remonter des métriques).

Donc au menu il y a eu les problèmes suivants :

  • Hibernate affichait beaucoup trop de traces. Corrigé avec la liste suivante dans tous les fichiers persistence.xml :
<property name="hibernate.session.events.log" value="false" />
  • Les datasources ne détectaient pas les pertes de connexion. Corrigé dans le fichier standalone.xml en remplaçant :
<validation>
    <check-valid-connection-sql>select 1</check-valid-connection-sql>
    <validate-on-match>false</validate-on-match>
    <background-validation>false</background-validation>
    <use-fast-fail>false</use-fast-fail>
</validation>

par

<validation>
    <check-valid-connection-sql>select 1</check-valid-connection-sql>
    <validate-on-match>true</validate-on-match>
</validation>

Pour JBoss AS 7.1.1 la première solution fonctionnait mais sous JBoss EAP 6.3 non … ce fut compliqué à le détecter et, malheureusement, ce fut via un incident en production. D’ailleurs c’est une soumission de bug qui m’a permis de comprendre le problème (içi).

  • Le mot de passe pour l’accès à distance (dans les fichiers application-users.properties et mgmt-users.properties) n’était plus utilisable car trop simple alors qu’il devait avoir au moins un chiffre. Corrigé en reployant l’application distante avec un nouveau mot de passe.

De plus cette migration a été l’occasion de faire évoluer la version du framework Spring ainsi que d’autres composants additionnels non présent dans JBoss EAP 6.3 et donc forcement il y a avait encore plus de points à régler.

Au final cela a demandé environ un mois de travail pour un déploiement sur 14 serveurs (sans compter les postes développeur, évidemment).

Dans le même temps je suis en train d’étudier une migration vers WildFly 8.1 mais certaines fonctionnalités sont totalement différentes comme par exemple JBoss Web (basé sur Catalina aka le moteur de Tomcat) qui a été remplacé par Undertow ou encore RestEasy qui passe de la branche 2.x vers la branche 3.x. Cependant le déploiement sur 14 serveurs m’a refroidi car cela demande presque 1/2 journée pour préparer chaque serveur alors qu’avec Docker/Chef/Puppet etc ce sera beaucoup plus rapide …

Publicités