Développeur Java depuis quelques années, je développe des applications J2EE basées sur le serveur d’application Tomcat. Au fur et à mesure que mes projets grossissent (qui a dit usine à gaz? ;-)), je suis de plus en plus souvent confronté aux mêmes tâches répétitives de livraison de mes archives WAR et je passe de plus en plus de temps à réaliser différents tests de non-régression de chacune de mes versions. Depuis quelques temps, je cherche donc à rationaliser et simplifier le développement et le déploiement de mes applications Web Java en automatisant les différents étapes nécessaires à la mise en production.
La problématique
La plupart de mes applications J2EE sont développées avec le Framework Spring depuis l’IDE Eclipse et repose sur des interfaces web dynamique développés à l’aide de javascript et des interactions Ajax.
Voici quelques-uns des problèmes récurrent à ce type de projet:
- Automatisation des tests unitaires sur un serveur d’intégration continue. Jusqu’à maintenant, j’utilise l’outil Jenkins (Anciennement Hudson) et quelques tâches Ant mais il n’existe pas de solution clé en main pour effectuer ces tests de manière automatique.
- Initialisation automatique d’une base de test pour avoir un jeu de données cohérent. Il existe déjà des outils (DBUnit) mais là encore, pas de solution établie dans Jenkins pour initialiser cette base automatiquement avant les tests (avec Ant du moins)
- Modularisation d’une application pour limiter les éventuels effets de bord
- Tester l’interface web et le code javascript sur les différents navigateurs
- Couverture de code pour aider et orienter l’écriture des tests unitaires
- Gestion des configurations pour les différents environnements cible (Test, Pré-production, Production, etc)
- Déploiement automatique d’une application sur ces différents environnement. A l’aide de tâches Ant, je génère actuellement les différents WAR correspondant chacun à un environnement cible
Ces différents points sont en fait des problématiques récurrents pour les équipes de développeurs qui souhaitent mettre en place une usine logicielle (Software Factory). Un software Factory est l’ensemble des outils et technologies mise en place pour standardiser et automatiser les différentes phases récurrentes dans le développement, le déploiement, la maintenance et l’évolution d’une solution applicative.
Aujourd’hui, je suis décidé à trouver une solution à cette problématique et à vous faire partager mes différentes découvertes utiles pour y parvenir. J’inaugure donc une série d’articles sur ce thème alors n’hésitez pas à m’envoyer vos pistes de réflexion à ce sujet.
Suite à un commentaire, voici un retour de 3 ans sur la mise en place de notre Software Factory
Bon courage dans cette nouvelle voie et au plaisir de lire vos prochinas billets !
Bonjour,
Je tombe sur ce billet presque trois ans plus tard et je m’amuse de voir que les choses n’ont pas progressé pendant tout ce temps.
En effet, je réfléchis activement pour monter mon « usine logicielle » (avec les conf qui vont bien) mais je tâtonne encore beaucoup.
Avec un regard sur ces trois années, auriez-vous un retour à me faire (par mail, à défaut de..) ?
Je vous remercie par avance pour l’éventuelle réponse.
Voici une réponse sous la forme d’un nouvel article http://w3blog.fr/2014/02/20/retour-sur-la-mise-en-place-dune-usine-logicielle/. N’hésitez pas à me recontacter pour toute nouvelle question suite à cet article.
Je vous invite aussi à aller participer aux conférences Devoxx qui ont lieu à Paris en Avril ou à parcourir les nombreuses présentations publiés sur le site http://www.parleys.com ( Payant si vous ne participez pas à Devoxx)