Ce document présente un exemple d'optimisation du cycle de production en entreprise.

Schéma global du cycle de production
Composants et processus
Les environnements


I. Schéma global du cycle de production

Cycle de production

II. Composants et processus

1. Description

Le cycle de production s'organise autour de plusieurs composants et processus.

Les composants du cycle de production sont :
- le repository de sources,
- le gestionnaire de configuration,
- le repository applicatif.

Les processus du cycle de production sont :
- intégration continue,
- déploiement automique.

2. Le repository de sources

Le repository de sources est utilisé pour stocker les codes développés par les équipes de développement et les fournisseurs extérieurs.
Il permet de suivre l'historique des modifications (développeur, date, code), de récupérer une version précédente, de visualiser les différences entre versions, ....
Des exemples de repository de sources sont : GIT, SVN, CVS.

3. Le gestionnaire de configuration

Le gestionnaire de configuration permet de définir la configuration des différents environnements (intégration, recette, production).
Cette configuration est renseignée par les diffés;rents responsables d'environnements.
Des exemples de configurations des environnements sont : configuration des serveurs, des instances de web serveurs, des instances de moteurs JavaEE, des ports applicatifs, des bases de données ...
Ces configurations sont utilisées par les processus de déploiement afin de les automatiser.

4. Le repository applicatif

Le repository applicatif contient les packages applicatifs templatisés (non configurés par environnement) produits par les équipes de développement et par les fournisseurs externes.
Ce repository est alimenté par le responsable des composants à partir des environnements d'intégration ou de recette.
Il est utilisé par les processus de déploiement afin de les automatiser et de les homogénéiser sur les différents environnements.

5. Intégration continue

Le processus d'intégration continue permet d'ordonnancer le build et le déploiement sur l'environnement d'intégration.
L'outil Jenkins (anciennement Hudson) est un exemple de composant d'intégration continue.
Ce processus permet d'homogénéiser le build et le déploiement sur l'environnement d'intégration.
Il permet d'assurer la qualité des produits par la validation de règles (check style) et par l'automatisation de tests en intégration (ex. : JUnit).

Les contraintes de la mise en place de l'intégration continue sont :
- la templetisation des projets (skelette commun des projets), ce qui assure aussi une qualité des projets et qui assure la simplicité de reprise des projets,
- des contraintes de commit pour les développeurs (les sources consommées par les build automatique de l'intégration continue doivent consommer des codes fonctionnels).

6. Déploiement automatique

Le processus de déploiement automatique consomme le repository applicatif et le gestionnaire de configuration afin de livrer les environnements de recette et de production.
Ce processus commun sur les différents environnements permet d'assurer la qualité des livraisons.

III. Les environnements

1. Environnement de développement

L'environnement de développement est utilisé par les équipes de développements afin de créer les applications.
Le code ainsi créé est intégré dans le gestionnaire de sources.

2. Environnement d'intégration

L'environnement d'intégration est utilisé pour les procédures d'intégration techniques et applicatives.
Le processus d'intégration continue s'applique sur cet environnement afin de valider de manière macroscopique les productions avant validation auprès des recettes.

3. Environnement de recette

L'environnement de recette est utilisé pour validation des production auprès des recetteurs (utillisateurs tests) avant mise en production.
Cet environnement permet de valider le processus de déploiement et de configuration (à partir du repository applicatif et du gestionnaire de configuration).

4. Environnement de production

L'environnement de production héberge les applications utilisées par les utilisateurs.