Contenu connexe Similaire à USI Casablanca 2010 - Industrialisation et intégration continue Similaire à USI Casablanca 2010 - Industrialisation et intégration continue (20) Plus de Djamel Zouaoui (7) USI Casablanca 2010 - Industrialisation et intégration continue2. Plan
• Enjeux et constats
• Principes de fonctionnement
• Déclinaisons technologiques
• Aller plus loin
© Université du Système d’Information 2
3. Enjeu : Diminuer le turn-over
• Une approche qui permet de :
– Gérer le risque de perte de connaissance
• Standardiser, capitaliser et augmenter la pérennité des développements
– Conserver l’humain au centre de la démarche
• Motivation
• Amélioration continue
© Université du Système d’Information 3
4. Enjeu : Le travail en équipe
Individualité VS Collectif
© Université du Système d’Information 4
5. Enjeu : La qualité
• Risque opérationnel
« Des clients de BNP Paribas débités ou crédités par erreur » (février 2009)
« Bug sur le réseau Orange et France Télécom » (février 2010)
« Gros bug informatique à la SNCF aujourd’hui » (mai 2010)
• Mesurer la qualité
– Disposer de métriques
© Université du Système d’Information 5
6. Enjeux : productivité & intégration
• Productivité
– Recentrer ses activités sur de la valeur ajoutée
– Réduire les tâches manuelles et répétitives
• Difficultés de l’intégration
– Faire disparaitre les phases d'intégration
– Minimiser les risques et efforts de mise en production
© Université du Système d’Information 6
7. Plan
• Enjeux et constats
• Principes de fonctionnement
• Déclinaisons technologiques
• Aller plus loin
© Université du Système d’Information 7
8. Vue d’ensemble
Intégration
continue
Usine de Tests automatisés
développement
Mesure de la
qualité
© Université du Système d’Information 8
10. Fonctionnement de l’UDD
Les développeurs
compilent et testent
Les développeurs sur leur poste Les développeurs
codent sur leur déposent le code
IDE sur leur modifié dans le
poste de travail référentiel de source
L’usine de build
Les développeurs récupère l’ensemble
récupèrent le code du code
L’usine compile, teste
et analyse le code
L’usine génère les
packages livrables ainsi que
la documentation et les
stocke dans le référentiel local
© Université du Système d’Information 10
11. L’usine de développement : des outils
Récupérer
les dépendances
Gestionnaire Build Compiler
de sources
Serveur Référentiel
Build d’intégration Exécuter les tests binaires
Local continue
Vérifier la qualité
du code
Packager
Notifications
Déployer
Plateforme
Documenter de tests
Build
Documentation
© Université du Système d’Information & Indicateurs 11
13. Instaurer une culture du Build
• Création d’un rituel autour de l’usine
– « Celui qui fait échouer le build paye les croissants…ou le thé »
• Responsabilisation des développeurs
– « Le build est cassé…ma priorité d’ordre 1 est de le réparer »
– Alignement de l’équipe sur la qualité du code
– Continous integration Game
13
14. Ca compile, ça fonctionne ?
© Université du Système d’Information 14
15. Test Driven Development
Ecrire
test en
échec
Faire
Remanier
le code
passer
le test
© Université du Système d’Information 15
16. Test unitaires automatisés
Tests unitaires : cycle TDD répété plusieurs
fois pour chaque fonctionnalité
Ecrire
test en
Ecrire échec Faire
test de passer le
recette Faire
tests de
Remanier
en échec le code
passer recette
le test
Nouveau cycle répété à chaque nouvelle fonctionnalité
© Université du Système d’Information 16
17. En résumé : En amont toute !
Alors que les méthodologies traditionnelles positionnent les phases
d’intégration, de qualité et de tests en bout de chaine
L’intégration continue permet :
– L’intégration des sources en amont du processus de livraison
– De contrôler la qualité en amont du processus de la livraison
– De déployer l’application en amont du processus d’intégration
– D’accéder à une application fonctionnelle en amont du
processus de recette
© Université du Système d’Information 18
18. Plan
• Enjeux et constats
• Principes de fonctionnement
• Déclinaisons technologiques
• Aller plus loin
© Université du Système d’Information 19
19. Différentes approches
MS Team Foundation Server Open source (.Net et Java)
• Usine de développement clef en • Socle incrémental
main
– Construction itérative du socle en
– Outillage complet packagé
réponse à des douleurs/besoins
– Intégration totale à Visual Studio
(assemblage de briques OSS)
• Guidage méthodologique
– Un projet TFS repose sur le choix • Des outils open source
d’une méthodologie – Des coûts réduits
– Le template accompagne dans
l’adoption de la méthodologie – Une communauté réactive et à
l’écoute
• Pilotage poussé – Des outils extensibles
– Toutes les métriques sont
historisées dans une base SQL
Server
– Elles sont toutes accessibles pour
la création de rapports
personnalisés avec Reporting
Services
© Université du Système d’Information 20
20. Microsoft Team Foundation Server (TFS)
TFS via Work Item TFS via Sharepoint
TFS via
Visual Studio
MS Team test
Source code
+ tests Tests de dév. Référentiel de Référentiel de
automatisés tâches / bug documentation
Développeur
TFS via TFS via
Team Build Code Analysis
TFS
Exécution des
Gestionnaire Gestionnaire
contrôles
des sources de build
qualité
Visual Studio
Source code TFS TFS
+ tests
Développeur
Référentiel Tests de
Dépendances des artefacts recette Livraison de
automatisés l’incrément
© Université du Système d’Information pour l’intégration
21
21. Déclinaison .Net avec briques OpenSource
Jira Confluence
Nunit Ou Excel Ou Wiki
Visual Studio
NCover
Source code
+ tests Tests de dév. Référentiel de Référentiel de
automatisés tâches / bug documentation
Développeur
Cruise FXCop
Control.net NDepend
Subversion
(SVN)
Exécution des
Gestionnaire Gestionnaire
contrôles
des sources de build
qualité
Visual Studio
Source code Cruise Fitnesse
Control.net ou GreenPepper
+ tests
Développeur
Référentiel Tests de
Dépendances des artefacts recette Livraison de
automatisés l’incrément
© Université du Système d’Information pour l’intégration
22
22. Déclinaison Java
(OpenSource et commercial)
Jira Confluence
Junit Ou Excel Ou Wiki
Eclipse
et Maven TestNG
Source code
+ tests Tests de dév. Référentiel de Référentiel de
automatisés tâches / bug documentation
Développeur
Hudson Sonar
et Maven XDepend
Subversion
(SVN)
Exécution des
Gestionnaire Gestionnaire
contrôles
des sources de build
Eclipse qualité
et Maven
Source code Fitnesse
Nexus ou GreenPepper
+ tests
Développeur
Référentiel Tests de
Dépendances des artefacts recette Livraison de
automatisés l’incrément
© Université du Système d’Information pour l’intégration
23
23. La mesure et le reporting
© Université du Système d’Information 24
24. Une UDD contextualisée
• On observe de plus en plus de synergies et de support multi-
technologies des outils de build et de reporting
Ruby, Flex, JavaScript, PLSQL ...
… mais aussi iPhone, iPad, Android, etc
• Principaux outils d’intégration continue
– Team Fundation Server, Hudson, TeamCity, Bamboo, CruiseControl, Pulse, …
• La démarche se décline selon les contextes
– Méthodologie projet
– Technologies utilisées
– Organisation (ex : offshore)
• L’important étant de faire de l’intégration continue !
© Université du Système d’Information 25
25. Plan
• Enjeux et constats
• Principes de fonctionnement
• Déclinaisons technologiques
• Aller plus loin
© Université du Système d’Information 26
26. Etre opérationnel le premier jour
• Installation en un click / master d’installation
– Installation scriptée
– Arborescence et configuration identique sur tous les postes de
travail de l’équipe
• Solutions de packaging des IDE
1. Choix d’une distribution Eclipse
• SpringIDE chez SpringSource
• Maven studio pour Eclipse chez Sonatype
• …
2. Provisionning des plugins Eclipse avec Nexus
© Université du Système d’Information 27
27. Minimiser l’instabilité du build
• Conserver un référentiel de sources « propre »
• Empêcher un développeur de bloquer les autres
• Favoriser l’utilisation décomplexée du référentiel de sources
Gestionnaire
de sources
© Université du Système d’Information 28
28. Une solution : le build incassable
Récupérer
les dépendances
Gestionnaire Compiler
de sources Serveur
protégé d’intégration
Continue
Exécuter les tests
Build
Développeurs
© Université du Système d’Information 29
29. Evolutions incrémentales du schéma de
base de données
• Principes
– Toutes les évolutions du schéma de base de données sont
versionnées dans le référentiel de source
– Automatisation de la création et des évolutions de version du
schéma
– Mise à jour incrémentale automatique
• Outils
– Team system Database
–
© Université du Système d’Information 31
30. Le build profilé
10 min
Build rapide : tests unitaires
nuits
Build documentation
4h
Gestionnaire Build tests intégration
de sources
Serveur
Build d’intégration nuits
Local continue
Build qualimétrie
A la
demande
Build complet
A la
demande
... Build packaging ...
© Université du Système d’Information 32
31. Le build distribué
Build documentation
240
Agent Build tests intégration
10
Gestionnaire Build rapide : tests unitaires
de sources
Serveur
Build d’intégration
Local Continue
(maître) Build qualimétrie
Build complet
Agent
© Université du Système d’Information
Build packaging 33
32. Dans les nuages
• Souplesse d’une infrastructure hébergée et extensible
• Solutions complètes
• Externaliser uniquement le build
– Machine virtuelle prête à l’emploi
– Plugin Hudson EC2
• Ecosystème Ruby très outillé
© Université du Système d’Information 34
33. Big visible chart & Extreme feeback device
« Ou comment aligner l’équipe à l’aide d’indicateur visuels partagés »
• Radiator (Sonar, Hudson, …)
• AmbientOrb
• Nabastaz
© Université du Système d’Information 35
35. Copyright
• Toutes les images sont la propriété exclusive de leurs auteurs respectifs.
• Nabaztag : © TPDK
• http://www.customxp.net/PngFactory/icone-png-5235-Nabaztag-02-TPDK.html
• AmbientOrb
• http://www.thinkgeek.com/gadgets/electronic/5da2/
• Logos : aux compagnies respectives
• Photos d’écrans Sonar, Eclipse, … aux auteurs des produits respectifs.
• Autres images et contenus : Octo Technology.
© OCTO Technology - Université du Système d’Information 37
Notes de l'éditeur Objectifs :Présenter les fondamentaux de l’UDD et de l’intégration continueFournir un état de l’art des déclinaisons éprouvées / les plus répandues sur .Net et JavaPrésenter les nouvelles tendances (défis, problématiques, solutions) Contexte de dév interne avec ou sans régie, et également valable pour l’intégration / MEP (profils chefs de projets, resp. production) Durée du cycle :Le plus court possible :Plus le cycle est long, plus le développeur s’expose à des problèmesMais on constate une auto-régulation des développeursCar des métriques et des retours concrets et immédiats Ticket d’entrée direct : toutes les douleurs au début du projet Indice de maintenabilité globalViolation des reglès de programmation propres au langage + architectureMétiques sur les tests et la couvertureLe must : historiser les métriques pour visualiser les tendances Enjeux : faciliter l’intégration de nouveaux développeursChanger de projet très rapidement Git / mercurialNécessite une bonne maturité de l’équipe et d’avoirdéfinit le workflow au préalableApporte plus de souplesse mais peut se révéler dangeureuxSVN et TFS = centralisé Approches controversées sur les aspects performance et couts