• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
440
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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

Transcript

  • 1. Usine de développement et intégration continue Djamel Zouaoui Antoine Véret
  • 2. 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 dinté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
  • 9. L’intégraton continue« Une démarche visant à intégrer le code à chaque instant plutôt qu’une fois par semaine ou par mois »
  • 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
  • 12. Juste une question d’outils ?© Université du Système d’Information 12
  • 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 Game13
  • 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 Remanieren é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 chaineL’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 viaVisual 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 WikiVisual 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 WikiEclipseet 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 buildEclipse 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 BuildDé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 ServeurBuild 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
  • 34. Merci de votre attention© Université du Système d’Information 36
  • 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