Je suis architecte d'entreprise et le plus souvent architecte technique affecté dans des organisations transverses au cœur de l'accompagnement des projets pour qu'ils arrivent dans les meilleures conditions en production (plus ou moins bien selon si on tombe sur un chef de projet faisant partie des bons élèves, ou pas).


Bizarrement, je me retrouve souvent sur des projets anachroniques pour un prestataire, là en l'occurence Java au sein d'un groupe bancaire (alors que je ne représente que la production du fait de mon affectation actuelle).
Bref sur le contexte personnel, sur lequel j'aurai l'occasion de revenir et parlons de Java ou plutôt d'adoptOpenJDK

Promotion de adoptOpenJDK comme solution groupe

_Rappel_ que les applets sont obsolètes dans les navigateurs et actuellement non disponibles
Si une application reste sur des technologies obsolètes, c'est qu'il n'y a plus de support en réalité : manger tous les midi paraît normal, pourquoi ne pas entretenir les applications apportant de la valeur de la même manière ? C'est la première réponse que je demande et qui détermine mon implication, si non (que j'ai déjà reçu, parfois retourné lorsque cela le méritait avec le budget afférant qui va de soi...)


La directive est claire : promouvoir adoptOpenJDK 11 et _à défaut_ rester sur adoptOpenJDK 8.
Reste à en faire la déclinaison et ça peut bien se passer

L'enjeu étant d'avoir à payer plusieurs millions pour l'infrastructure de virtualisation en place (la licence unitaire a un coût acceptable, multiplié par 2 à 3000 cœurs beaucoup moins).

Normalement : ce paragraphe est synthétique et cadre les enjeux (quelques millions), je détaille ci-dessous comme c'est bien compris et pris en compte (ou pas).


Les points positifs et adjuvants à la démarche

Les contrats incluent une clause demandant adoptOpenJDK et c'est pris en compte par les éditeurs. Si cette clause n'est pas acceptée ou remplie, c'est un critère d'élimination et de résorption du produit de cet éditeur. Au vu des coûts induit, c'est légitime, une refacturation peut être envisagée si l'éditeur souhaite se maintenir sur le marché (ou il prend à sa charge de savoir gérer adoptOpenJDK, ce qui donne confiance dans sa compétence et sa pérennité).


Des éditeurs comme webMethods ont choisi zulu et leur support inclut celui de la JVM qui n'apporte pas de coûts supplémentaires, cela est forcément accepté
Pour le cloud, il y a la JVM de AWS, ça répond aussi au sujet.

Lorsque une PIC (Plateforme d'Intégration Continue) est en place, cela facilite la démarche. Du CI/CD (intégration continue / déploiement continu) déjà dans une logique devops est un plus, pas forcément suffisant.

Des structures proposent un socle Debian avec openJDK par défaut dès le dév et la recette : si cela crée un souci,

Quelques retours mitigés, axes d'amélioration :-)




Quelques anomalies à expliciter


JDK 8 maintenu jusqu'en 2024
JDK 11 maintenu jusqu'en 2023
WTF ?! oui, c'est le discours de Red Hat (mainteneur de JDK8) pas celui d'Oracle, ni d'openJDK : bien sûr que le support va perdurer tant qu'il y a les compétences et c'est cohérent avec le choix de rester sur des versions obsolètes et non maintenues, il n'y a pas plus de risque ; soit ça fonctionnait avant, soit ça continuera à fonctionner (avec pas de mise à jour dans un cas, avec capacité à évoluer dans l'autre cas)


Quelques intégrateurs voire éditeurs proposent de l'ordre de 60 jours de tests de non régression (et passent la prise en compte en évolution), là où 1 ou 2 jours suffisent à faire remonter les warnings concernant des méthodes qui vont passer en obsolescence.
Pour JDK 8, il y a peu de travail, pour JDK 11 c'est l'occasion de rentrer dans la modernité et avoir un produit pérenne (ce que tout client attendrait de son fournisseur, sans que cela lui soit facturé vu que c'est censé être déjà payé...)


L’inacceptable



Démarche en tant qu'architecte

Tenir la position, obtenir sa prise en compte, gérer les exceptions si engagement de résorption (avec coût + délai)

Ne pas prendre de raccourci : c'est JDK 11 et ensuite, pas « ok JDK 8 maintenant », un architecte est embêtant car il ne s'inscrit pas que dans le projet mais dans la durée, nous avons des comptes à rendre à l'exploitation aussi (ce qui inclut nos amis et néanmoins collègues de la sécurité qui essaient de faire prendre en compte le _patch management_ alors que cela devrait aller de soi...



Off-the-topic

J'ai des difficultés à tolérer les mal-comprenants et suis un peu sec dans mes réponses à certaines questions qui pourraient passer pour ingénues. C'est connu et assumé : cela fait partie de la formation (oui, je crois encore que tout un chacun peut s'améliorer).

Je confonds JRE et JDK, car cela n'a que peu d'impact au final : même en prod' le JDK est utile pour bénéficier d'outils de diagnostics et la différence entre les deux s'est estompée depuis JDK 6 au moins.

Je ne tire pas à vue sur tout intégrateur, je ne fais que relever les meilleures pratiques à appliquer, forcément les mauvaises auront du mal à trouver une quelconque justification (certains s'y essaient, même sur un malentendu ça ne va pas forcément passer...).


Cela fait plus de 5 ans que j'entends Mark Reihnold en parler (l'architecte de Java dès le début), mais je n'avais pas pris en compte la résistance au changement qu'il a pu rencontrer (notamment face aux éditeurs et intégrateurs). Je comprends mieux les versions LTS auquel j'adhérais auparavant, mais c'est bien tout le cycle qui doit être pris en compte : éditeur + achat + prod






There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki