28
26/04/2008 http://my-garbage-collector.blogspot.com/ 1 L’intégration continue Présenté par: Hamdi MAKNI TeeJUG member TeeJUG member

L’intégration continue

  • Upload
    teejug

  • View
    1.376

  • Download
    3

Embed Size (px)

Citation preview

Page 1: L’intégration continue

26/04/2008 http://my-garbage-collector.blogspot.com/ 1

L’intégration continue

Présenté par: Hamdi MAKNITeeJUG memberTeeJUG member

Page 2: L’intégration continue

http://my-garbage-collector.blogspot.com/ 226/04/2008

Feuille de route

� Scénario1� Scénario2� L’intégration continue:

� principes,� avantages,� outils

� Étude de cas� Conclusion

Page 3: L’intégration continue

http://my-garbage-collector.blogspot.com/ 326/04/2008

Scénario 1

� Dev dans une équipe de plusieurs développeurs

� Un système avec plusieurs applications

� Interactions avec plusieurs autres systèmes

� Évolutions des besoins des clients

� Livraisons fréquentes

Page 4: L’intégration continue

http://my-garbage-collector.blogspot.com/ 426/04/2008

Scénario 1

� problèmes:

�Mauvaise synchronisation entre les dev de la même équipe

�Manque de suivie des évolutions des applications dépendantes

�Ne pas pouvoir suivre les besoins des clients

�Temps de réaction énorme en cas de pbm

Page 5: L’intégration continue

http://my-garbage-collector.blogspot.com/ 526/04/2008

Scénario 1

�Conséquences:

�Code pas sûr

�Qualité de l’application non assurée

�Incohérence entre les applications

�Temps perdu

�Retards de livraison

�Argents perdu

Page 6: L’intégration continue

http://my-garbage-collector.blogspot.com/ 626/04/2008

Scénario 1

� Décisions prises:

�Contrôle et partage des source et des dépendances

�Écrire des testes unitaires et d’intégration

�Automatiser les tests

�Automatiser les builds

�Environnements de Dev, Integ, Recette, Prod

Page 7: L’intégration continue

http://my-garbage-collector.blogspot.com/ 726/04/2008

Scénario 2

Page 8: L’intégration continue

http://my-garbage-collector.blogspot.com/ 826/04/2008

Scénario 2

� Synchronisation avec le SCM

� Récupérer les dépendances du répo

� Écrire le code du nouveau service

� Écrire le test qui couvre le nouveau code

� Tester en locale

� Commiter des modifications en locale

Page 9: L’intégration continue

http://my-garbage-collector.blogspot.com/ 926/04/2008

Scénario 2

� Détection automatique les modifications sur le SCM

� Compilation automatique de l’application en question

� Lancement automatique des tests

� Création automatique du build

� Génération automatique de rapport

� Notification automatique par email

Page 10: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1026/04/2008

Scénario 2

� Qui va automatiser tout ça?

Page 11: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1126/04/2008

Continuous Integration:c'est quoi?

� Méthode Agile, extreme programming

� Un système, un ensemble d'outils

� Ensemble de pratiques, d'habitudes

� Coûteux, mais rentable

Page 12: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1226/04/2008

Continuous Integration:principes

� Partager la source dans un SCM

� Synchronisation fréquente du code local et code partagé

� Écrire des tests d'intégration

� Lancer les tests sur chaque maj du code

� Releases fréquents

Page 13: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1326/04/2008

Continuous Integration: avantages

� Code cohérent

� Code qui compile « tout le temps »

� Code bien testé

� Meilleur qualité du produit

Page 14: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1426/04/2008

Continuous Integration: avantages

� Suivie en temps réel de l'évolution du projet

� Coût de résolution des bugs réduit

� Minimiser le temps de développement, de livraison, et de maintenance

� Gain d'argent

Page 15: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1526/04/2008

Continuous Integration: outils

� SCM: Source Control Management�SVN (subversion)

�CVS

�ClearCase

� Gestion de dépendances: �maven

� Ivy

� ...

Page 16: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1626/04/2008

Continuous Integration: outils

� Assemblage et building�maven

�Ant

� ...

� Test

�JUnit

�DBunit

�Selenium

Page 17: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1726/04/2008

Continuous Integration: outils

� Serveur d'intégration Continue

�CruseControle

�Bamboo

�Hudsen

�Continuum

Page 18: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1826/04/2008

Continuous Integration: best practices

� Commit fréquent

� Merge fréquent des branches

� Release fréquent

� Test sur chaque commit

� Réactivité aux bugs

� Multiplier les tests

� Système de suivi des fiches pour chaque environnement

Page 19: L’intégration continue

http://my-garbage-collector.blogspot.com/ 1926/04/2008

Cas concret: contexte

� contexte SOA

� 5 systèmes d'informations en intéraction

� 5 équipes de développeurs

� 15 applications: 6 front et 9 back (Web Services)

� Plus de 200 WS interdépendants

Page 20: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2026/04/2008

Cas concret: contexte

� Bamboo

� SVN

� Maven

� Jira

� Junit

� Selenium

Page 21: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2126/04/2008

Cas concret: practices

� 6 environnements : dev, pré-intégration, intégration, recette, pré-production, production

� Build sur chaque commit

� Plusieurs tests pour chaque service

� Livraison des clients séparément des implémentations

Page 22: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2226/04/2008

Cas concret: practices

Page 23: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2326/04/2008

Cas concret: cycle de vie d'un WS

1.Rédaction du contrat se service

2.Préparation du client mocké et testé

3.Test sur la dev

4.Déploiement sur la pré-intégration

5.Release de la version et passage en intég

6.Tests d'intégration

Page 24: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2426/04/2008

Cas concret: cycle de vie d'un WS

1.Passage par des branches pour patcher

2.Livraison sur la recette

3.Passage par des branches pour patcher

4.Livraison sur la pré-production

Page 25: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2526/04/2008

Cas concret: problèmes rencontrés

� Chantier fonctionnel parallèles

�une branche pour chaque « chantier »fonctionnel et un merge fréquent avec trunk

� Dépendances circulaires entre les WS�Séparer les clients des implémentations

Page 26: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2626/04/2008

Cas concret: problèmes rencontrés

� Évolution rapide des besoins et du nombre de clients�???

� Désynchronisation des livraisons entre des différentes applications�???

Page 27: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2726/04/2008

Conclusion

� Est ce rentable de passer en CI quelque soit le contexte?

� Est ce que le processus d'intégration continue est un processus idéale pour le développement?

Page 28: L’intégration continue

http://my-garbage-collector.blogspot.com/ 2826/04/2008

Presented by Hamdi MAKNI

� Concepteur développeur JAVA/J2EE

� 2008: Consultant J2EE chez GENERALI France

� 2007: Développeur JAVA/J2EE chez voyages-sncf.com

� 2004-2006:Développeur JAVA/J2EE chez Tunisiana

� TeeJUG member

� http://my-garbage-collector.blogspot.com