Usine logicielle Java
L’industrialisation de la
mise en production
Ippon Technologies © 2014
Licence
Cette formation vous est fournie sous licence Creative Commons AttributionNonCommercial-...
Ippon Technologies © 2014
Ippon Formation en bref
Pourquoi Ippon Technologies
publie ses supports de formation ?
Car Ippon...
Ippon Technologies © 2014
Pour nous contacter
Pour nous contacter et participer à nos
formations :
● Technique : formation...
Ippon Technologies © 2014
Sommaire
● Introduction
● Le déploiement logiciel
○ Approche naïve
○ Problématiques
● Vers le dé...
Ippon Technologies © 2014
Introduction
Ippon Technologies © 2014
Changement vs Stabilité (1)
VS
Ippon Technologies © 2014
Changement vs Stabilité (2)
VS
Ippon Technologies © 2014
Time to market vs Opportunités
VS
Ippon Technologies © 2014
Industrialisation du changement
VS
Ippon Technologies © 2014
Mise en production naïve
Problèmes courants rencontrés
Mise à jour des besoins
Le déploiement lo...
Ippon Technologies © 2014
Une mise en production standard
Développement
Compilation
Déploiement
Intégration
Validation / R...
Ippon Technologies © 2014
Problèmes fréquemment rencontrés
Ippon Technologies © 2014
Développement
Mésinterprétation du cahier des charges
Manque de configuration
Ressources locales...
Ippon Technologies © 2014
Compilation
Quelles sources ?
Quelles options de compilation ?
Quelles dépendances de librairie ...
Ippon Technologies © 2014
Déploiement
Arrêt du service ?
Copie du binaire au bon endroit (bon tomcat)
Viabilité du fichier...
Ippon Technologies © 2014
Deploiement - Anti-pattern
Un déploiement ? Quel déploiement ?
Ippon Technologies © 2014
Intégration
Le livrable n’est pas suffisamment configurable
La configuration est mal faite
● Res...
Ippon Technologies © 2014
Anti-pattern d’intégration
Documentation fastidieuse
Aller-retours Dev-Integration
Modification ...
Ippon Technologies © 2014
Recette
Test volatiles
● non fiables
● non reproductibles
● incomplets
Tâches rébarbatives, manu...
Ippon Technologies © 2014
Anti-pattern de recette
Tests manuels
Ippon Technologies © 2014
Mise en production
Temps d’indisponibilité
Comportement de l’application en condition réelle
Mul...
Ippon Technologies © 2014
Mise en production - Anti-pattern
Temps d’indisponibilité excessif
Issue imprévisible
Ippon Technologies © 2014
Besoins mis à jour
Ippon Technologies © 2014
Émergence de nouveaux besoins
Une mise en production rapide, sans risque
Visibilité des livrable...
Ippon Technologies © 2014
Émergence de nouveaux besoins
Identification du livrable
● Versionnement systématique
Build auto...
Ippon Technologies © 2014
Émergence de nouveaux besoins
Communication
● Centralisation des demandes d’amélioration /
corre...
Ippon Technologies © 2014
Émergence de nouveaux besoins
Qualité
Tests d’acceptance
Tests de charge
Métriques
Automatisatio...
Ippon Technologies © 2014
Vers le déploiement
continu
Ippon Technologies © 2014
Principes du déploiement continu
Ippon Technologies © 2014
Grands principes
Processus fiable et répétable
● Automatisation systématique
● Versionnement sys...
Ippon Technologies © 2014
Grands principes
Affronter les tâches pénibles
Ippon Technologies © 2014
Grands principes
“Bring Quality In”
Ippon Technologies © 2014
Grands principes
Fait = Démontré à l’utilisateur
Ippon Technologies © 2014
Grands principes
Responsabiliser toute l’équipe
Ippon Technologies © 2014
Grands principes
Amélioration Continue
Ippon Technologies © 2014
Le déploiement continu
pas à pas
Ippon Technologies © 2014
Solutions
Vers l’industrialisation logicielle
● Outillage
● Culture
Ippon Technologies © 2014
Le déploiement continu pas à pas
Environnement de Développement Intégré
Versionnement
Gestion de...
Ippon Technologies © 2014
IDE
Environnement de
Développement Intégré
Ippon Technologies © 2014
IDE - généralités
Les caractéristiques d’un logiciel robuste :
● Code lisible
● Couverture de te...
Ippon Technologies © 2014
IDE - code lisible
Formateur de code
Application de convention de codage
Détection de redondance...
Ippon Technologies © 2014
IDE - tests
Création simplifiée de tests
Lancement et résultat des tests
Outil de visualisation ...
Ippon Technologies © 2014
IDE - debugging
Debug en local
Debug à distance
Modification à chaud du code
Ippon Technologies © 2014
IDE - refactoring
Identification systématique des références
(code et commentaire)
Plugin de dét...
Ippon Technologies © 2014
IDE - interaction
SCM (Source Code Management)
Gestion des dépendances
Outil de bug-tracking
Ser...
Ippon Technologies © 2014
IDE - offre
Intellij IDEA
Eclipse
Netbeans
Ippon Technologies © 2014
IDE - Netbeans 1/2
Simple
Robuste
Lié à Oracle
Fonctionne mieux avec Maven* et GlassFish
Ippon Technologies © 2014
IDE - Netbeans 2/2
+ Support des bases de données
+ Support web (HTML, CSS, Javascript, PHP)
+ S...
Ippon Technologies © 2014
IDE - Eclipse 1/2
Le plus répandu
Communauté / contributeurs importants
Nombreux plugins
Couvre ...
Ippon Technologies © 2014
IDE - Eclipse 2/2
+ Versatile
+ Nombre impressionnant d’extensions disponibles
+ Compilation inc...
Ippon Technologies © 2014
IDE - Intellij IDEA 1/2
Stabilité
Richesse du support “out-of-the-box”
Nombreux plugins
Support ...
Ippon Technologies © 2014
IDE - Intellij IDEA 2/2
+ Recherche et Navigation
+ Aide contextuelle pertinente
+ Support de Ma...
Ippon Technologies © 2014
IDE
TP Eclipse/IDEA/Netbeans
Ippon Technologies © 2014
SCM
Gestion de Code Source
Ippon Technologies © 2014
SCM
Stockage commun des ressources
● code
● configuration applicative
● librairies
● configurati...
Ippon Technologies © 2014
SCM - Services
Centralise
Versionne
Résout les conflits
Permet le catalogage (tagging)
Ippon Technologies © 2014
SCM - Fonctionnalités
Commit/Checkout
Branching/Merging
Diff current/tag/branch
Intégrité des do...
Ippon Technologies © 2014
SCM - Usage
Branching / merging ; deux approches :
● branche systématique
● tout sur le trunk
Ippon Technologies © 2014
SCM - Usage
Ippon Technologies © 2014
SCM - Solutions
CVS
SVN
Git
Ippon Technologies © 2014
Versionner
Gérer les dépendances
Gérer la configuration système
Gérer les environnements
Gestion...
Ippon Technologies © 2014
Gestion de conf - Versionner
Aussi important que les sources
Versionner
Versionner tout
Être à j...
Ippon Technologies © 2014
Gestion de conf - Dépendances
Dépendances externes
Composants logiciels
Ippon Technologies © 2014
Gestion de conf - Flexibilité
Configuration et flexibilité
● Coût de développement
● Coût opérat...
Ippon Technologies © 2014
Gestion de conf - Typologie
Type de configuration
● build
● packaging
● deployment
● startup/run...
Ippon Technologies © 2014
Gestion de Configuration Applicative
Configuration Applicative
● Ajout d’un nouvel environnement...
Ippon Technologies © 2014
Gestion de conf - Principes
Principes
● Timing d’introduction des features
● Stockage des Variab...
Ippon Technologies © 2014
Gestion de conf - Environnement
Configuration environnement < Configuration application
Outils d...
Ippon Technologies © 2014
Gestion de conf - Données
Données et application diffèrent en 2 points
● volume
● cycle de vie
Ippon Technologies © 2014
Gestion de conf - Données
Préserver les données entre 2 release
● Database scripting
● Modificat...
Ippon Technologies © 2014
Gestion de conf - Données
Database scripting :
● Initialisation DB : script, versionnement
● Cha...
Ippon Technologies © 2014
Gestion de conf - Données
Script d’initialisation
● Création de la structure
● Création des inst...
Ippon Technologies © 2014
Gestion de conf - Données
Migration Incrémentale
Qu’est-ce :
Roll-forward et Roll-back
Comment :...
Ippon Technologies © 2014
Migration Incrémentale
Le cas des Migrations destructrices
● Copier le contenu de tables sous un...
Ippon Technologies © 2014
Gestion de conf - données
Rolling back and zero downtime release
● Cacher les transactions et pe...
Ippon Technologies © 2014
Build Tools
Ippon Technologies © 2014
Build Tools
Un build doit être :
Indépendant de la plate-forme
Reproductible
Automatisable
Confi...
Ippon Technologies © 2014
Build Tools - L’offre
Apache Ant
Apache Maven
Gradle
Ippon Technologies © 2014
Build Tools - Ant
“Modern build Tool”... qui date de 2000
Implémentation Java unifiant des comma...
Ippon Technologies © 2014
Ant - Cibles et points d’extension
Create Directory Layout
Ready to compile
Generate source
Comp...
Ippon Technologies © 2014
Build Tools - Maven
Description du build du projet (POM)
Description des dépendances du projet
C...
Ippon Technologies © 2014
Maven lifecycle
Validate
Compile
Test
Package
Install
Verify
Integration-test
Ippon Technologies © 2014
Maven Profiles
Séparer les tests
Surcharger la configuration par environnement
Ippon Technologies © 2014
Maven profiles - séparation des tests
Product
Integration
Tests
Functionnal
Tests
Parent Project...
Ippon Technologies © 2014
Maven profiles
TP - Surcharge de configuration
Ippon Technologies © 2014
Build Tools - Gradle
Le meilleur de Ant et Maven
DSL (Domain-Specific Langage)
DAG (Directed Acy...
Ippon Technologies © 2014
Gradle lifecycle
<inclure un cycle de vie du build gradle>
Ippon Technologies © 2014
Build Tools
TP - Intégration de Maven dans Jenkins
Ippon Technologies © 2014
Intégration Continue
Ippon Technologies © 2014
Commit Stage
Pipeline de déploiement
Code
analysis
Build
Configuration
Managment
SCM
Intégration...
Ippon Technologies © 2014
Intégration Continue - Tests
Tests unitaires
Tests d’intégration
Tests fonctionnels
Tests d’expl...
Ippon Technologies © 2014
Test unitaire
Tester des algorithmes isolés
Valider les règles de gestion unitaires
Prévenir les...
Ippon Technologies © 2014
Test unitaire - Solutions
JUnit + Mockito ou EasyMock
Spock + Groovy
DEMO
Ippon Technologies © 2014
Intégration Continue
TP - Tests sous Jenkins
Ippon Technologies © 2014
Test d’intégration
Vérifier le chargement du contexte du cadre applicatif
(Spring, Java EE, etc....
Ippon Technologies © 2014
Test d’intégration - Solutions
Spring TestContext Framework
Arquillian
DEMO
Ippon Technologies © 2014
Test d’intégration - Solutions
Spring TestContext Framework
@RunWith(SpringJUnit4ClassRunner.cla...
Ippon Technologies © 2014
Test d’intégration - Solutions
Test 1
Test 2
Test Suite 1
Test 1
Test 2
Test Suite 2
chargement ...
Ippon Technologies © 2014
Test d’intégration - Solutions
Spring TestContext Framework - astuces
● Charger des contextes al...
Ippon Technologies © 2014
Test d’intégration - Solutions
Arquillian
● Conteneur sur mesure
● ShrinkWrap : artifact sur mes...
Ippon Technologies © 2014
Test fonctionnel
Jouer des scénarios complets
Tester l’IHM au travers de laquelle on atteint tou...
Ippon Technologies © 2014
Test fonctionnel - Solution
Selenium 2 (webdriver, HQ et IDE)
DEMO
Ippon Technologies © 2014
Tests fonctionnels
TP - Selenium 2
Ippon Technologies © 2014
Tests
Aller plus loin
Ippon Technologies © 2014
Tests - Non régression
Pierre angulaire de la confiance qualité
Couvre toute l’application
Systé...
Ippon Technologies © 2014
Tests - Load Test
Teste l’application déployée
Simule la charge attendue par l’application
Les s...
Ippon Technologies © 2014
Tests - Stress Test
Teste l’application déployée
Augmente la charge pour identifier les limites
Ippon Technologies © 2014
Tests - Couverture de code
Indice quant à la quantité de code testé
100% n’est pas un objectif
F...
Ippon Technologies © 2014
Couverture de code - Solution
Emma -> Jacoco
Cobertura
Clover Cobertura
Ippon Technologies © 2014
Qualité
Ippon Technologies © 2014
Qualité du code
Homogénéiser le code
Les sept péchés capitaux du développement :
● Duplication
●...
Ippon Technologies © 2014
Qualité du code - Concepts
Analyse statique du code
Analyse Dynamique
Profilers
Memory Tools
Mon...
Ippon Technologies © 2014
Qualité du code - Précautions
Faux Positifs
Adaptation au projet
Règles personnelles
Legacy proj...
Ippon Technologies © 2014
Qualité du code - Solutions
FindBugs
PMD
CheckStyle et Jalopy
Coverity
SonarQube
Ippon Technologies © 2014
Qualité du code - Recommandations
Les premières analyses ne seront pas pertinentes
L’analyse sta...
Ippon Technologies © 2014
Qualité du code
TP Sonar
Ippon Technologies © 2014
Bug Tracking
Ippon Technologies © 2014
Bug Tracking
Disposer de métriques sur les problèmes découverts
Communiquer sur la documentation...
Ippon Technologies © 2014
Bug Tracking - besoins
Classer les tickets
Gérer les utilisateurs et leurs droits
Distinguer les...
Ippon Technologies © 2014
Bug Tracking - cycle de vie
NEW
ASSIGNED
VERIFIEDREOPEN
CLOSED
RESOLVED
FIXED
DUPLICATE
WONT FIX...
Ippon Technologies © 2014
Bug Tracking - Livraison
Ippon Technologies © 2014
Bug Tracking - Solutions
BugZilla
Jira
Mantis
Redmine
Trac (+ Agilo)
Ippon Technologies © 2014
Déploiement
Ippon Technologies © 2014
Déploiement - Scripting
One script to rule them all
Un script principal pour tous les environnem...
Ippon Technologies © 2014
Déploiement - Le choix des armes
Utiliser la bonne technologie de déploiement
Utiliser des outil...
Ippon Technologies © 2014
Déploiement - objectif et méthode
Mise à niveau ou Installation complète
Déploiement = processus...
Ippon Technologies © 2014
Déploiement à grande echelle
Ippon Technologies © 2014
Déploiement à grande échelle
Ippon Technologies © 2014
Déploiement - astuces
Automatisation
● Chemins relatifs
● Éliminer les étapes manuelles
Ippon Technologies © 2014
Déploiement - astuces
Versionning
● Marquer les binaires avec la version SCM
● Ne pas commiter l...
Ippon Technologies © 2014
Déploiement - astuces
Tests
● Test failed != Build Failed
● Smoke tests
Ippon Technologies © 2014
Deploiement - Puppet
Logiciel d’automatisation qui définit et vérifie l’état d’une
infrastructur...
Ippon Technologies © 2014
Déploiement - Puppet
● Fonctionne en Client/Serveur
● Chaque serveur de l’infrastructure est un ...
Ippon Technologies © 2014
Ippon Technologies © 2014
Déploiement - Puppet
TP Puppet : Configurer Apache
Ippon Technologies © 2014
Monitoring
Ippon Technologies © 2014
Superviser quoi ?
Les temps d’exécution...
● de service
● de service distant
L’occupation mémoir...
Ippon Technologies © 2014
Monitoring Java
Logs internes
● choisir le niveau et le support (fichiers séparés, voire en
base...
Ippon Technologies © 2014
Exploiter le monitoring
● Rendu graphique des métriques, dashboard
(ex: Graphite)
● Seuils d’ale...
Ippon Technologies © 2014
Monitoring
Sur mesure
Diagnostic temps réel
Alerte
Ippon Technologies © 2014
Monitoring
TP Instrumentation et exploitation
blog.ippon.frippon.fr atomes.com
@ippontech contact@ippon.fr
Prochain SlideShare
Chargement dans…5
×

Formation Usine Logicielle gratuite par Ippon 2014

8 783 vues

Publié le

Les mises en production ne sont pas condamnées à être des moments de souffrance. En apportant de la rigueur au processus de qualification du code, en automatisant un maximum de tâches et en rendant la gestion des différents environnements la plus transparente possible, cette étape ultime peut alors devenir une simple banalité.

Pour atteindre cet objectif, plusieurs aspects doivent être pris en compte, et il faut procéder avec méthode et de façon itérative.

La formation Usine Logicielle présente les différentes briques devant être mises en place pour automatiser et contrôler la production de vos livrables ainsi que leur déploiement. Illustrée par des TP lorsque dispensée par nos consultants, cette formation permet de mieux cerner les différentes étapes et leur implication technique sur les projets. Du contrôle de la qualité du code, en passant par l'automatisation de la construction des livrables, la gestion de la configuration et le provisioning des ressources sur les différents environnements, vous découvrirez les étapes essentielles à la construction d'une usine logicielle robuste, permettant de réduire le si stratégique Time To Market tout en maîtrisant le risque.

Publié dans : Technologie
0 commentaire
7 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
8 783
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2 574
Actions
Partages
0
Téléchargements
461
Commentaires
0
J’aime
7
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Formation Usine Logicielle gratuite par Ippon 2014

  1. 1. Usine logicielle Java L’industrialisation de la mise en production
  2. 2. Ippon Technologies © 2014 Licence Cette formation vous est fournie sous licence Creative Commons AttributionNonCommercial- NoDerivatives 4.0 International (CC BY-NC-ND 4.0) Vous êtes libres de : Copier, distribuer et communiquer le matériel par tous moyens et sous tous formats Selon les conditions suivantes : ● Attribution : Vous devez créditer l'Oeuvre, intégrer un lien vers la licence et indiquer si des modifications ont été effectuées à l'Oeuvre. Vous devez indiquer ces informations par tous les moyens possibles mais vous ne pouvez pas suggérer que l'Offrant vous soutient ou soutient la façon dont vous avez utilisé son Oeuvre. ● Pas d’Utilisation Commerciale : Vous n'êtes pas autoriser à faire un usage commercial de cette Oeuvre, tout ou partie du matériel la composant. ● Pas de modifications : Dans le cas où vous effectuez un remix, que vous transformez, ou créez à partir du matériel composant l'Oeuvre originale, vous n'êtes pas autorisé à distribuer ou mettre à disposition l'Oeuvre modifiée. http://creativecommons.org/licenses/by-nc-nd/4.0/deed.fr
  3. 3. Ippon Technologies © 2014 Ippon Formation en bref Pourquoi Ippon Technologies publie ses supports de formation ? Car Ippon participe à la communauté Java et Web et soutien le modèle open-source Le support théorique représente 40% du temps de formation, l'intérêt est dans les Travaux Pratiques et l'expert Ippon qui assure le cours
  4. 4. Ippon Technologies © 2014 Pour nous contacter Pour nous contacter et participer à nos formations : ● Technique : formation@ippon.fr ● Commercial : nzago@ippon.fr Toutes les informations et les dates de formations sont sur notre site internet et notre blog: ● http://www.ippon.fr/formation ● http://blog.ippon.fr
  5. 5. Ippon Technologies © 2014 Sommaire ● Introduction ● Le déploiement logiciel ○ Approche naïve ○ Problématiques ● Vers le déploiement continu ○ Grands principes ○ Solutions ● Le déploiement continu pas à pas ○ IDE ○ Versionnement & Gestion de configuration ○ Build ○ Intégration continue ○ Tests & Qualité du code ○ Bug tracking ○ Outils de déploiement & de monitoring
  6. 6. Ippon Technologies © 2014 Introduction
  7. 7. Ippon Technologies © 2014 Changement vs Stabilité (1) VS
  8. 8. Ippon Technologies © 2014 Changement vs Stabilité (2) VS
  9. 9. Ippon Technologies © 2014 Time to market vs Opportunités VS
  10. 10. Ippon Technologies © 2014 Industrialisation du changement VS
  11. 11. Ippon Technologies © 2014 Mise en production naïve Problèmes courants rencontrés Mise à jour des besoins Le déploiement logiciel
  12. 12. Ippon Technologies © 2014 Une mise en production standard Développement Compilation Déploiement Intégration Validation / Recette manuelle Mise en production
  13. 13. Ippon Technologies © 2014 Problèmes fréquemment rencontrés
  14. 14. Ippon Technologies © 2014 Développement Mésinterprétation du cahier des charges Manque de configuration Ressources locales incompatibles avec la production Bugs
  15. 15. Ippon Technologies © 2014 Compilation Quelles sources ? Quelles options de compilation ? Quelles dépendances de librairie ? Quelles versions ? Sur quelle plate-forme ? Qui est responsable ?
  16. 16. Ippon Technologies © 2014 Déploiement Arrêt du service ? Copie du binaire au bon endroit (bon tomcat) Viabilité du fichier Traçabilité du fichier mis à disposition Communication quand à la disponibilité du livrable
  17. 17. Ippon Technologies © 2014 Deploiement - Anti-pattern Un déploiement ? Quel déploiement ?
  18. 18. Ippon Technologies © 2014 Intégration Le livrable n’est pas suffisamment configurable La configuration est mal faite ● Ressources inexistantes ● Ressources incomplètes ● Ressources pas à jour ● Mauvaise plate-forme cible ● Incompatibilités de version ● Mise à jour des données manquante/incomplète Elle nécessite une expertise technique Elle est fastidieuse en cas de plate-forme fortement redondante
  19. 19. Ippon Technologies © 2014 Anti-pattern d’intégration Documentation fastidieuse Aller-retours Dev-Integration Modification de dernière minute Éléments de cluster hétérogènes Release de plus de quelques minutes
  20. 20. Ippon Technologies © 2014 Recette Test volatiles ● non fiables ● non reproductibles ● incomplets Tâches rébarbatives, manuelles, hautement sujettes à l’ erreur Effet boite noire
  21. 21. Ippon Technologies © 2014 Anti-pattern de recette Tests manuels
  22. 22. Ippon Technologies © 2014 Mise en production Temps d’indisponibilité Comportement de l’application en condition réelle Multi-utilisateur ● Confidentialité des données ● Concurrence Tenue en charge Retour en arrière
  23. 23. Ippon Technologies © 2014 Mise en production - Anti-pattern Temps d’indisponibilité excessif Issue imprévisible
  24. 24. Ippon Technologies © 2014 Besoins mis à jour
  25. 25. Ippon Technologies © 2014 Émergence de nouveaux besoins Une mise en production rapide, sans risque Visibilité des livrables : quoi, quand, où Visibilité de la disponibilité/performance Une mise en production doit devenir un processus automatisé, rapide, répétable et répété fréquemment, maîtrisé, prévisible, facilement inversable
  26. 26. Ippon Technologies © 2014 Émergence de nouveaux besoins Identification du livrable ● Versionnement systématique Build automatique Validation / Non régression systématique ● Tests unitaires automatisés ● Tests d’intégration automatisés ● Tests fonctionnels automatisés ● Tests d’exploration
  27. 27. Ippon Technologies © 2014 Émergence de nouveaux besoins Communication ● Centralisation des demandes d’amélioration / correction ● Statut des releases disponibles, des déploiements effectués ● Documentation type wiki
  28. 28. Ippon Technologies © 2014 Émergence de nouveaux besoins Qualité Tests d’acceptance Tests de charge Métriques Automatisation du déploiement ...
  29. 29. Ippon Technologies © 2014 Vers le déploiement continu
  30. 30. Ippon Technologies © 2014 Principes du déploiement continu
  31. 31. Ippon Technologies © 2014 Grands principes Processus fiable et répétable ● Automatisation systématique ● Versionnement systématique 3 grandes étapes : provisionner, installer, configurer
  32. 32. Ippon Technologies © 2014 Grands principes Affronter les tâches pénibles
  33. 33. Ippon Technologies © 2014 Grands principes “Bring Quality In”
  34. 34. Ippon Technologies © 2014 Grands principes Fait = Démontré à l’utilisateur
  35. 35. Ippon Technologies © 2014 Grands principes Responsabiliser toute l’équipe
  36. 36. Ippon Technologies © 2014 Grands principes Amélioration Continue
  37. 37. Ippon Technologies © 2014 Le déploiement continu pas à pas
  38. 38. Ippon Technologies © 2014 Solutions Vers l’industrialisation logicielle ● Outillage ● Culture
  39. 39. Ippon Technologies © 2014 Le déploiement continu pas à pas Environnement de Développement Intégré Versionnement Gestion de configuration Build tools Intégration continue Tests de non régression Bug Tracking Outils de déploiement Outils de monitoring
  40. 40. Ippon Technologies © 2014 IDE Environnement de Développement Intégré
  41. 41. Ippon Technologies © 2014 IDE - généralités Les caractéristiques d’un logiciel robuste : ● Code lisible ● Couverture de tests automatique raisonnable ● Architecture saine ● Outils de debugging performants ● Culture d’ingénierie qui valorise le refactoring
  42. 42. Ippon Technologies © 2014 IDE - code lisible Formateur de code Application de convention de codage Détection de redondance de code
  43. 43. Ippon Technologies © 2014 IDE - tests Création simplifiée de tests Lancement et résultat des tests Outil de visualisation de couverture de tests
  44. 44. Ippon Technologies © 2014 IDE - debugging Debug en local Debug à distance Modification à chaud du code
  45. 45. Ippon Technologies © 2014 IDE - refactoring Identification systématique des références (code et commentaire) Plugin de détection de code à factoriser/améliorer (PMD, Checkstyle)
  46. 46. Ippon Technologies © 2014 IDE - interaction SCM (Source Code Management) Gestion des dépendances Outil de bug-tracking Serveur web, avec accès en mode debug Base de données
  47. 47. Ippon Technologies © 2014 IDE - offre Intellij IDEA Eclipse Netbeans
  48. 48. Ippon Technologies © 2014 IDE - Netbeans 1/2 Simple Robuste Lié à Oracle Fonctionne mieux avec Maven* et GlassFish
  49. 49. Ippon Technologies © 2014 IDE - Netbeans 2/2 + Support des bases de données + Support web (HTML, CSS, Javascript, PHP) + Support de technologies avancées (JavaFX, Java 3D…) - Plugins moins nombreux - En retard sur les nouveaux langages - Utilisation de Maven quasi-obligatoire
  50. 50. Ippon Technologies © 2014 IDE - Eclipse 1/2 Le plus répandu Communauté / contributeurs importants Nombreux plugins Couvre toutes les technologies Multi-lingue
  51. 51. Ippon Technologies © 2014 IDE - Eclipse 2/2 + Versatile + Nombre impressionnant d’extensions disponibles + Compilation incrémentale + Visualisation instantanée des erreurs + Gestion des projets + Hautement configurable - Configuration spécifique - Lourdeur - Instabilité
  52. 52. Ippon Technologies © 2014 IDE - Intellij IDEA 1/2 Stabilité Richesse du support “out-of-the-box” Nombreux plugins Support natif d’UML Intelligence contextuelle
  53. 53. Ippon Technologies © 2014 IDE - Intellij IDEA 2/2 + Recherche et Navigation + Aide contextuelle pertinente + Support de Maven + Support d’Android + Import de projets avancé + Support enrichi des tests unitaires et de la couverture + Debugging avancé de technologies phares - N’affiche pas les erreurs des fichiers clos - Ergonomie spécifique - Payant en version commerciale
  54. 54. Ippon Technologies © 2014 IDE TP Eclipse/IDEA/Netbeans
  55. 55. Ippon Technologies © 2014 SCM Gestion de Code Source
  56. 56. Ippon Technologies © 2014 SCM Stockage commun des ressources ● code ● configuration applicative ● librairies ● configuration serveur ● scripts ● schéma de la base de données ● … tout ce qui est utile à un déploiement
  57. 57. Ippon Technologies © 2014 SCM - Services Centralise Versionne Résout les conflits Permet le catalogage (tagging)
  58. 58. Ippon Technologies © 2014 SCM - Fonctionnalités Commit/Checkout Branching/Merging Diff current/tag/branch Intégrité des données
  59. 59. Ippon Technologies © 2014 SCM - Usage Branching / merging ; deux approches : ● branche systématique ● tout sur le trunk
  60. 60. Ippon Technologies © 2014 SCM - Usage
  61. 61. Ippon Technologies © 2014 SCM - Solutions CVS SVN Git
  62. 62. Ippon Technologies © 2014 Versionner Gérer les dépendances Gérer la configuration système Gérer les environnements Gestion de configuration
  63. 63. Ippon Technologies © 2014 Gestion de conf - Versionner Aussi important que les sources Versionner Versionner tout Être à jour Messages explicites
  64. 64. Ippon Technologies © 2014 Gestion de conf - Dépendances Dépendances externes Composants logiciels
  65. 65. Ippon Technologies © 2014 Gestion de conf - Flexibilité Configuration et flexibilité ● Coût de développement ● Coût opérationnel ● Risques induits
  66. 66. Ippon Technologies © 2014 Gestion de conf - Typologie Type de configuration ● build ● packaging ● deployment ● startup/runtime
  67. 67. Ippon Technologies © 2014 Gestion de Configuration Applicative Configuration Applicative ● Ajout d’un nouvel environnement ● Nouvelle version de l’application ● Upgrade de release ● Relocalisation d’un serveur ● Le cas des VMs Validation de configuration ● Isolation ● Tests
  68. 68. Ippon Technologies © 2014 Gestion de conf - Principes Principes ● Timing d’introduction des features ● Stockage des Variables et valeurs de configuration ● Automatisation de la configuration d’un environnement ● Catalogue des valeurs de configuration ● Nommage explicite ● Modularité et encapsulation ● DRY principle ● Minimalisme ● KISS principle ● Tester la configuration
  69. 69. Ippon Technologies © 2014 Gestion de conf - Environnement Configuration environnement < Configuration application Outils de gestion de configuration Gestion du changement
  70. 70. Ippon Technologies © 2014 Gestion de conf - Données Données et application diffèrent en 2 points ● volume ● cycle de vie
  71. 71. Ippon Technologies © 2014 Gestion de conf - Données Préserver les données entre 2 release ● Database scripting ● Modification incrémentale Contrainte supplémentaire ● Rolling back Database et Zero downtime Release
  72. 72. Ippon Technologies © 2014 Gestion de conf - Données Database scripting : ● Initialisation DB : script, versionnement ● Chaque Migration : script, versionnement Buts : ● Construire n’importe quelle version de la base ● formaliser la dépendance de version {base:application} ● Intégration au process de déploiement continu
  73. 73. Ippon Technologies © 2014 Gestion de conf - Données Script d’initialisation ● Création de la structure ● Création des instances ● Création des schémas ● Alimenter les données de référence Pour la release de projet simple, le process suivant peut suffir : ● Suppression de la base N-1 ● Création de la base N ● Alimentation en donnée Projet plus complexe : Changement incrémentale
  74. 74. Ippon Technologies © 2014 Gestion de conf - Données Migration Incrémentale Qu’est-ce : Roll-forward et Roll-back Comment : Versionner la base SQL Utilisation d’outil Flyway, Liquibase… Attention aux migrations dont le rollback est impossible
  75. 75. Ippon Technologies © 2014 Migration Incrémentale Le cas des Migrations destructrices ● Copier le contenu de tables sous un autre nom versionné ● Backup/Restore
  76. 76. Ippon Technologies © 2014 Gestion de conf - données Rolling back and zero downtime release ● Cacher les transactions et permettre leur rejeu ● Déploiement Blue-Green (prod-backup) ○ Backup Blue et restore sur Green ○ Migrate Blue ○ Rollback nécessaire : switch sur Green ● Découpler déploiement applicatif et migration de base ○ Faire en sorte que chaque version applicative fonctionne avec la version N et N+1 de la base de données
  77. 77. Ippon Technologies © 2014 Build Tools
  78. 78. Ippon Technologies © 2014 Build Tools Un build doit être : Indépendant de la plate-forme Reproductible Automatisable Configurable Gérer les dépendances Se connecter au SCM
  79. 79. Ippon Technologies © 2014 Build Tools - L’offre Apache Ant Apache Maven Gradle
  80. 80. Ippon Technologies © 2014 Build Tools - Ant “Modern build Tool”... qui date de 2000 Implémentation Java unifiant des commandes hétérogènes dans des environnements divers Une sorte de “make”, sans la complexité d’usage Flexible, adaptable, extensible Absence de contrainte Interaction avec un gestionnaire de dépendances
  81. 81. Ippon Technologies © 2014 Ant - Cibles et points d’extension Create Directory Layout Ready to compile Generate source Compile depends extension-of depends
  82. 82. Ippon Technologies © 2014 Build Tools - Maven Description du build du projet (POM) Description des dépendances du projet Conventions par l’exception Cycle de vie prédéfini Gestion de dépendances mutualisée (dépôt local/public) Nombreux plugins (appelés mojos pour Maven), que l’on peut développer soi-même
  83. 83. Ippon Technologies © 2014 Maven lifecycle Validate Compile Test Package Install Verify Integration-test
  84. 84. Ippon Technologies © 2014 Maven Profiles Séparer les tests Surcharger la configuration par environnement
  85. 85. Ippon Technologies © 2014 Maven profiles - séparation des tests Product Integration Tests Functionnal Tests Parent Project … <modules> <product> </modules> <profiles> <profile id=”full-test”> <modules> <module>integration-tests</module> <module>functional-tests</module> </modules> </profile> </profiles> <profiles> <profile id=”integration-test”> <modules> <module>integration-tests</module> </modules> </profile> </profiles> ...
  86. 86. Ippon Technologies © 2014 Maven profiles TP - Surcharge de configuration
  87. 87. Ippon Technologies © 2014 Build Tools - Gradle Le meilleur de Ant et Maven DSL (Domain-Specific Langage) DAG (Directed Acyclic Graph) Conçu pour les projets très vastes Build incrémental Google Android OS
  88. 88. Ippon Technologies © 2014 Gradle lifecycle <inclure un cycle de vie du build gradle>
  89. 89. Ippon Technologies © 2014 Build Tools TP - Intégration de Maven dans Jenkins
  90. 90. Ippon Technologies © 2014 Intégration Continue
  91. 91. Ippon Technologies © 2014 Commit Stage Pipeline de déploiement Code analysis Build Configuration Managment SCM Intégration Continue Automatic QA Test Exploratory QA Test Capacity / Load Test UAT / Demo Production IDE Unit Test Test coverage Artifact
  92. 92. Ippon Technologies © 2014 Intégration Continue - Tests Tests unitaires Tests d’intégration Tests fonctionnels Tests d’exploration
  93. 93. Ippon Technologies © 2014 Test unitaire Tester des algorithmes isolés Valider les règles de gestion unitaires Prévenir les risques de régression Code testable = Code mieux pensé
  94. 94. Ippon Technologies © 2014 Test unitaire - Solutions JUnit + Mockito ou EasyMock Spock + Groovy DEMO
  95. 95. Ippon Technologies © 2014 Intégration Continue TP - Tests sous Jenkins
  96. 96. Ippon Technologies © 2014 Test d’intégration Vérifier le chargement du contexte du cadre applicatif (Spring, Java EE, etc.) Repenser son cloisonnement par technologie Mettre à l’épreuve les transactions
  97. 97. Ippon Technologies © 2014 Test d’intégration - Solutions Spring TestContext Framework Arquillian DEMO
  98. 98. Ippon Technologies © 2014 Test d’intégration - Solutions Spring TestContext Framework @RunWith(SpringJUnit4ClassRunner.class) // specifies the Spring configuration to load for this test fixture @ContextConfiguration("daos.xml") public final class HibernateTitleDaoTests { // this instance will be dependency injected by name @Resource private HibernateTitleDao titleDao; public void testLoadTitle() throws Exception { Title title = this.titleDao.loadTitle(new Long(10)); assertNotNull(title); } }
  99. 99. Ippon Technologies © 2014 Test d’intégration - Solutions Test 1 Test 2 Test Suite 1 Test 1 Test 2 Test Suite 2 chargement du contexte suppression du contexte chargement du contexte suppression du contexte
  100. 100. Ippon Technologies © 2014 Test d’intégration - Solutions Spring TestContext Framework - astuces ● Charger des contextes allégés ● @DirtiesContext ● @IfProfileValue
  101. 101. Ippon Technologies © 2014 Test d’intégration - Solutions Arquillian ● Conteneur sur mesure ● ShrinkWrap : artifact sur mesure
  102. 102. Ippon Technologies © 2014 Test fonctionnel Jouer des scénarios complets Tester l’IHM au travers de laquelle on atteint toutes les couches applicatives Valider les règles de gestion non unitaires Non régression
  103. 103. Ippon Technologies © 2014 Test fonctionnel - Solution Selenium 2 (webdriver, HQ et IDE) DEMO
  104. 104. Ippon Technologies © 2014 Tests fonctionnels TP - Selenium 2
  105. 105. Ippon Technologies © 2014 Tests Aller plus loin
  106. 106. Ippon Technologies © 2014 Tests - Non régression Pierre angulaire de la confiance qualité Couvre toute l’application Systématisation Maintenance
  107. 107. Ippon Technologies © 2014 Tests - Load Test Teste l’application déployée Simule la charge attendue par l’application Les statistiques de performance comme outils de non- régression
  108. 108. Ippon Technologies © 2014 Tests - Stress Test Teste l’application déployée Augmente la charge pour identifier les limites
  109. 109. Ippon Technologies © 2014 Tests - Couverture de code Indice quant à la quantité de code testé 100% n’est pas un objectif Favoriser le code sensible
  110. 110. Ippon Technologies © 2014 Couverture de code - Solution Emma -> Jacoco Cobertura Clover Cobertura
  111. 111. Ippon Technologies © 2014 Qualité
  112. 112. Ippon Technologies © 2014 Qualité du code Homogénéiser le code Les sept péchés capitaux du développement : ● Duplication ● Convention d’écriture ● Manque de couverture ● Bugs potentiels courants ● Complexité ● Documentation ● Conception
  113. 113. Ippon Technologies © 2014 Qualité du code - Concepts Analyse statique du code Analyse Dynamique Profilers Memory Tools Monitoring Tools
  114. 114. Ippon Technologies © 2014 Qualité du code - Précautions Faux Positifs Adaptation au projet Règles personnelles Legacy projects
  115. 115. Ippon Technologies © 2014 Qualité du code - Solutions FindBugs PMD CheckStyle et Jalopy Coverity SonarQube
  116. 116. Ippon Technologies © 2014 Qualité du code - Recommandations Les premières analyses ne seront pas pertinentes L’analyse statique seule est insuffisante Automatiser l’analyse de code (et l'exécuter souvent) Communiquer sur la qualité Éviter l’excès de zèle Adapter l’analyse à chaque projet Ne pas oublier les priorités
  117. 117. Ippon Technologies © 2014 Qualité du code TP Sonar
  118. 118. Ippon Technologies © 2014 Bug Tracking
  119. 119. Ippon Technologies © 2014 Bug Tracking Disposer de métriques sur les problèmes découverts Communiquer sur la documentation projet
  120. 120. Ippon Technologies © 2014 Bug Tracking - besoins Classer les tickets Gérer les utilisateurs et leurs droits Distinguer les projets/releases Être connecté au SCM Faciliter la communication Constituer un tableau de bord
  121. 121. Ippon Technologies © 2014 Bug Tracking - cycle de vie NEW ASSIGNED VERIFIEDREOPEN CLOSED RESOLVED FIXED DUPLICATE WONT FIX WORK FOR ME INVALID REMIND LATER
  122. 122. Ippon Technologies © 2014 Bug Tracking - Livraison
  123. 123. Ippon Technologies © 2014 Bug Tracking - Solutions BugZilla Jira Mantis Redmine Trac (+ Agilo)
  124. 124. Ippon Technologies © 2014 Déploiement
  125. 125. Ippon Technologies © 2014 Déploiement - Scripting One script to rule them all Un script principal pour tous les environnements
  126. 126. Ippon Technologies © 2014 Déploiement - Le choix des armes Utiliser la bonne technologie de déploiement Utiliser des outils de packaging éprouvés
  127. 127. Ippon Technologies © 2014 Déploiement - objectif et méthode Mise à niveau ou Installation complète Déploiement = processus idempotent Évolution incrémentale
  128. 128. Ippon Technologies © 2014 Déploiement à grande echelle
  129. 129. Ippon Technologies © 2014 Déploiement à grande échelle
  130. 130. Ippon Technologies © 2014 Déploiement - astuces Automatisation ● Chemins relatifs ● Éliminer les étapes manuelles
  131. 131. Ippon Technologies © 2014 Déploiement - astuces Versionning ● Marquer les binaires avec la version SCM ● Ne pas commiter les binaires : Nexus, Archiva
  132. 132. Ippon Technologies © 2014 Déploiement - astuces Tests ● Test failed != Build Failed ● Smoke tests
  133. 133. Ippon Technologies © 2014 Deploiement - Puppet Logiciel d’automatisation qui définit et vérifie l’état d’une infrastructure tout au long du cycle de développement ● Définir l’état attendu d’un serveur ● Classes, module ● Piocher dans l’existant
  134. 134. Ippon Technologies © 2014 Déploiement - Puppet ● Fonctionne en Client/Serveur ● Chaque serveur de l’infrastructure est un client (puppet agent) ● Le serveur puppet (puppet master) héberge les modules ● Les modules sont rendu paramétrable pour s’ajuster sur chaque client ● Chaque client possède les modules qui le concerne ● A chaque run puppet, un différentiel est établi entre la configuration définie sur le master et ce que rapporte les agents.
  135. 135. Ippon Technologies © 2014
  136. 136. Ippon Technologies © 2014 Déploiement - Puppet TP Puppet : Configurer Apache
  137. 137. Ippon Technologies © 2014 Monitoring
  138. 138. Ippon Technologies © 2014 Superviser quoi ? Les temps d’exécution... ● de service ● de service distant L’occupation mémoire Les ressources partagées ● pool de threads ● pool de connexions ● DLQ et queue sevrée/surchargée Les succès/échecs
  139. 139. Ippon Technologies © 2014 Monitoring Java Logs internes ● choisir le niveau et le support (fichiers séparés, voire en base de données) Standard JMX ● exposition de propriétés du SI ● de nombreuses API phares le mettent en oeuvre nativement Surveillance de la JVM ● analyse des performances et de l’occupation mémoire
  140. 140. Ippon Technologies © 2014 Exploiter le monitoring ● Rendu graphique des métriques, dashboard (ex: Graphite) ● Seuils d’alerte sur des métriques réseau, souvent à l’ aide d’agents (ex: Zabbix) ● Analyse temps réel de la JVM et suivi fin en cas de dépassement des moyennes constatées (ex: AppDynamics) ● Exploitation de logs (ex: splunk, cacti, loggly, logstash, kibana, nagios…)
  141. 141. Ippon Technologies © 2014 Monitoring Sur mesure Diagnostic temps réel Alerte
  142. 142. Ippon Technologies © 2014 Monitoring TP Instrumentation et exploitation
  143. 143. blog.ippon.frippon.fr atomes.com @ippontech contact@ippon.fr

×