143
Usine logicielle Java L’industrialisation de la mise en production

Formation Usine Logicielle gratuite par Ippon 2014

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Formation Usine Logicielle gratuite par Ippon 2014

Usine logicielle JavaL’industrialisation de la

mise en production

Page 2: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 3: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 4: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Pour nous contacter

Pour nous contacter et participer à nos formations :● Technique : [email protected]● Commercial : [email protected]

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

Page 5: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 6: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Introduction

Page 7: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Changement vs Stabilité (1)

VS

Page 8: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Changement vs Stabilité (2)

VS

Page 9: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Time to market vs Opportunités

VS

Page 10: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Industrialisation du changement

VS

Page 11: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Mise en production naïveProblèmes courants rencontrésMise à jour des besoins

Le déploiement logiciel

Page 12: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Une mise en production standard

Développement

Compilation

Déploiement

Intégration

Validation / Recette manuelle

Mise en production

Page 13: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Problèmes fréquemment rencontrés

Page 14: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Développement

Mésinterprétation du cahier des chargesManque de configurationRessources locales incompatibles avec la productionBugs

Page 15: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Compilation

Quelles sources ?Quelles options de compilation ?Quelles dépendances de librairie ?Quelles versions ?Sur quelle plate-forme ?Qui est responsable ?

Page 16: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement

Arrêt du service ?Copie du binaire au bon endroit (bon tomcat)Viabilité du fichierTraçabilité du fichier mis à dispositionCommunication quand à la disponibilité du livrable

Page 17: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Deploiement - Anti-pattern

Un déploiement ? Quel déploiement ?

Page 18: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Intégration

Le livrable n’est pas suffisamment configurableLa 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 techniqueElle est fastidieuse en cas de plate-forme fortement redondante

Page 19: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Anti-pattern d’intégration

Documentation fastidieuseAller-retours Dev-IntegrationModification de dernière minuteÉléments de cluster hétérogènesRelease de plus de quelques minutes

Page 20: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Recette

Test volatiles● non fiables● non reproductibles● incomplets

Tâches rébarbatives, manuelles, hautement sujettes à l’erreurEffet boite noire

Page 21: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Anti-pattern de recette

Tests manuels

Page 22: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Mise en production

Temps d’indisponibilitéComportement de l’application en condition réelleMulti-utilisateur

● Confidentialité des données● Concurrence

Tenue en chargeRetour en arrière

Page 23: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Mise en production - Anti-pattern

Temps d’indisponibilité excessifIssue imprévisible

Page 24: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Besoins mis à jour

Page 25: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 26: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 27: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 28: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Émergence de nouveaux besoins

Qualité

Tests d’acceptanceTests de chargeMétriques

Automatisation du déploiement...

Page 29: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Vers le déploiement continu

Page 30: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Principes du déploiement continu

Page 31: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Grands principes

Processus fiable et répétable● Automatisation systématique● Versionnement systématique

3 grandes étapes : provisionner, installer, configurer

Page 32: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Grands principes

Affronter les tâches pénibles

Page 33: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Grands principes

“Bring Quality In”

Page 34: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Grands principes

Fait = Démontré à l’utilisateur

Page 35: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Grands principes

Responsabiliser toute l’équipe

Page 36: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Grands principes

Amélioration Continue

Page 37: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Le déploiement continu pas à pas

Page 38: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Solutions

Vers l’industrialisation logicielle● Outillage● Culture

Page 39: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Le déploiement continu pas à pas

Environnement de Développement IntégréVersionnementGestion de configurationBuild toolsIntégration continueTests de non régressionBug TrackingOutils de déploiementOutils de monitoring

Page 40: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDEEnvironnement de

Développement Intégré

Page 41: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 42: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE - code lisible

Formateur de codeApplication de convention de codageDétection de redondance de code

Page 43: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE - tests

Création simplifiée de testsLancement et résultat des testsOutil de visualisation de couverture de tests

Page 44: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE - debugging

Debug en localDebug à distanceModification à chaud du code

Page 45: Formation Usine Logicielle gratuite par Ippon 2014

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)

Page 46: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE - interaction

SCM (Source Code Management)Gestion des dépendancesOutil de bug-trackingServeur web, avec accès en mode debugBase de données

Page 47: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE - offre

Intellij IDEAEclipseNetbeans

Page 48: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE - Netbeans 1/2

SimpleRobusteLié à OracleFonctionne mieux avec Maven* et GlassFish

Page 49: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 50: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE - Eclipse 1/2

Le plus répanduCommunauté / contributeurs importantsNombreux pluginsCouvre toutes les technologiesMulti-lingue

Page 51: Formation Usine Logicielle gratuite par Ippon 2014

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é

Page 52: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE - Intellij IDEA 1/2

StabilitéRichesse du support “out-of-the-box”Nombreux pluginsSupport natif d’UMLIntelligence contextuelle

Page 53: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 54: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

IDE

TP Eclipse/IDEA/Netbeans

Page 55: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

SCMGestion de Code Source

Page 56: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 57: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

SCM - Services

CentraliseVersionneRésout les conflits

Permet le catalogage (tagging)

Page 58: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

SCM - Fonctionnalités

Commit/CheckoutBranching/MergingDiff current/tag/branch

Intégrité des données

Page 59: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

SCM - Usage

Branching / merging ; deux approches :● branche systématique● tout sur le trunk

Page 60: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

SCM - Usage

Page 61: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

SCM - Solutions

CVSSVNGit

Page 62: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

VersionnerGérer les dépendancesGérer la configuration systèmeGérer les environnements

Gestion de configuration

Page 63: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Versionner

Aussi important que les sources

VersionnerVersionner toutÊtre à jour

Messages explicites

Page 64: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Dépendances

Dépendances externesComposants logiciels

Page 65: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Flexibilité

Configuration et flexibilité● Coût de développement● Coût opérationnel● Risques induits

Page 66: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Typologie

Type de configuration● build● packaging● deployment● startup/runtime

Page 67: Formation Usine Logicielle gratuite par Ippon 2014

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 VMsValidation de configuration● Isolation● Tests

Page 68: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 69: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Environnement

Configuration environnement < Configuration application

Outils de gestion de configurationGestion du changement

Page 70: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Données

Données et application diffèrent en 2 points● volume● cycle de vie

Page 71: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Données

Préserver les données entre 2 release● Database scripting● Modification incrémentaleContrainte supplémentaire● Rolling back Database et Zero downtime Release

Page 72: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Données

Database scripting :● Initialisation DB : script, versionnement● Chaque Migration : script, versionnementButs :● Construire n’importe quelle version de la base● formaliser la dépendance de version {base:application}● Intégration au process de déploiement continu

Page 73: Formation Usine Logicielle gratuite par Ippon 2014

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érencePour 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éeProjet plus complexe : Changement incrémentale

Page 74: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gestion de conf - Données

Migration IncrémentaleQu’est-ce :Roll-forward et Roll-backComment :Versionner la baseSQLUtilisation d’outil Flyway, Liquibase…Attention aux migrations dont le rollback est impossible

Page 75: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Migration IncrémentaleLe cas des Migrations destructrices● Copier le contenu de tables sous un autre nom versionné● Backup/Restore

Page 76: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 77: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Build Tools

Page 78: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Build Tools

Un build doit être :Indépendant de la plate-formeReproductibleAutomatisableConfigurable

Gérer les dépendancesSe connecter au SCM

Page 79: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Build Tools - L’offre

Apache AntApache MavenGradle

Page 80: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Build Tools - Ant

“Modern build Tool”... qui date de 2000Implémentation Java unifiant des commandes hétérogènes dans des environnements diversUne sorte de “make”, sans la complexité d’usage

Flexible, adaptable, extensibleAbsence de contrainteInteraction avec un gestionnaire de dépendances

Page 81: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Ant - Cibles et points d’extension

Create Directory Layout

Ready to compile

Generate source

Compile

depends

extension-of

depends

Page 82: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Build Tools - Maven

Description du build du projet (POM)Description des dépendances du projetConventions par l’exceptionCycle de vie prédéfiniGestion 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

Page 83: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Maven lifecycle

Validate

Compile

Test

Package

Install

Verify

Integration-test

Page 84: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Maven Profiles

Séparer les tests

Surcharger la configuration par environnement

Page 85: Formation Usine Logicielle gratuite par Ippon 2014

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>...

Page 86: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Maven profiles

TP - Surcharge de configuration

Page 87: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Build Tools - Gradle

Le meilleur de Ant et MavenDSL (Domain-Specific Langage)DAG (Directed Acyclic Graph)Conçu pour les projets très vastesBuild incrémentalGoogle Android OS

Page 88: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Gradle lifecycle

<inclure un cycle de vie du build gradle>

Page 89: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Build Tools

TP - Intégration de Maven dans Jenkins

Page 90: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Intégration Continue

Page 91: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Commit Stage

Pipeline de déploiement

Code analysisBuild

Configuration Managment

SCM Intégration Continue

Automatic QA Test

Exploratory QA Test

Capacity / Load Test

UAT / Demo Production

IDE

Unit Test Test coverage

Artifact

Page 92: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Intégration Continue - Tests

Tests unitairesTests d’intégrationTests fonctionnelsTests d’exploration

Page 93: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Test unitaire

Tester des algorithmes isolésValider les règles de gestion unitairesPrévenir les risques de régressionCode testable = Code mieux pensé

Page 94: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Test unitaire - Solutions

JUnit + Mockito ou EasyMockSpock + Groovy

DEMO

Page 95: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Intégration Continue

TP - Tests sous Jenkins

Page 96: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Test d’intégration

Vérifier le chargement du contexte du cadre applicatif (Spring, Java EE, etc.)Repenser son cloisonnement par technologieMettre à l’épreuve les transactions

Page 97: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Test d’intégration - Solutions

Spring TestContext FrameworkArquillian

DEMO

Page 98: Formation Usine Logicielle gratuite par Ippon 2014

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); }}

Page 99: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 100: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Test d’intégration - Solutions

Spring TestContext Framework - astuces● Charger des contextes allégés● @DirtiesContext● @IfProfileValue

Page 101: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Test d’intégration - Solutions

Arquillian● Conteneur sur mesure● ShrinkWrap : artifact sur mesure

Page 102: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Test fonctionnel

Jouer des scénarios completsTester l’IHM au travers de laquelle on atteint toutes les couches applicativesValider les règles de gestion non unitairesNon régression

Page 103: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Test fonctionnel - Solution

Selenium 2 (webdriver, HQ et IDE)

DEMO

Page 104: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Tests fonctionnels

TP - Selenium 2

Page 105: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

TestsAller plus loin

Page 106: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Tests - Non régression

Pierre angulaire de la confiance qualitéCouvre toute l’applicationSystématisationMaintenance

Page 107: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Tests - Load Test

Teste l’application déployéeSimule la charge attendue par l’applicationLes statistiques de performance comme outils de non-régression

Page 108: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Tests - Stress Test

Teste l’application déployéeAugmente la charge pour identifier les limites

Page 109: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Tests - Couverture de code

Indice quant à la quantité de code testé100% n’est pas un objectifFavoriser le code sensible

Page 110: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Couverture de code - Solution

Emma -> JacocoCoberturaClover Cobertura

Page 111: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Qualité

Page 112: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 113: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Qualité du code - Concepts

Analyse statique du codeAnalyse DynamiqueProfilersMemory ToolsMonitoring Tools

Page 114: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Qualité du code - Précautions

Faux PositifsAdaptation au projetRègles personnellesLegacy projects

Page 115: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Qualité du code - Solutions

FindBugsPMDCheckStyle et JalopyCoveritySonarQube

Page 116: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Qualité du code - Recommandations

Les premières analyses ne seront pas pertinentesL’analyse statique seule est insuffisanteAutomatiser l’analyse de code (et l'exécuter souvent)Communiquer sur la qualitéÉviter l’excès de zèleAdapter l’analyse à chaque projetNe pas oublier les priorités

Page 117: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Qualité du code

TP Sonar

Page 118: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Bug Tracking

Page 119: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Bug Tracking

Disposer de métriques sur les problèmes découvertsCommuniquer sur la documentation projet

Page 120: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Bug Tracking - besoins

Classer les ticketsGérer les utilisateurs et leurs droitsDistinguer les projets/releasesÊtre connecté au SCMFaciliter la communicationConstituer un tableau de bord

Page 121: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Bug Tracking - cycle de vie

NEW

ASSIGNED

VERIFIEDREOPEN

CLOSED

RESOLVED

FIXEDDUPLICATEWONT FIXWORK FOR MEINVALIDREMINDLATER

Page 122: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Bug Tracking - Livraison

Page 123: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Bug Tracking - Solutions

BugZillaJiraMantisRedmineTrac (+ Agilo)

Page 124: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement

Page 125: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement - Scripting

One script to rule them allUn script principal pour tous les environnements

Page 126: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement - Le choix des armes

Utiliser la bonne technologie de déploiementUtiliser des outils de packaging éprouvés

Page 127: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement - objectif et méthode

Mise à niveau ou Installation complèteDéploiement = processus idempotentÉvolution incrémentale

Page 128: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement à grande echelle

Page 129: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement à grande échelle

Page 130: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement - astuces

Automatisation● Chemins relatifs● Éliminer les étapes manuelles

Page 131: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement - astuces

Versionning● Marquer les binaires avec la version SCM● Ne pas commiter les binaires : Nexus, Archiva

Page 132: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement - astuces

Tests● Test failed != Build Failed● Smoke tests

Page 133: Formation Usine Logicielle gratuite par Ippon 2014

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

Page 134: Formation Usine Logicielle gratuite par Ippon 2014

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.

Page 135: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Page 136: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Déploiement - Puppet

TP Puppet : Configurer Apache

Page 137: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Monitoring

Page 138: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Superviser quoi ?

Les temps d’exécution...● de service● de service distantL’occupation mémoireLes ressources partagées● pool de threads● pool de connexions● DLQ et queue sevrée/surchargéeLes succès/échecs

Page 139: Formation Usine Logicielle gratuite par Ippon 2014

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 nativementSurveillance de la JVM● analyse des performances et de l’occupation mémoire

Page 140: Formation Usine Logicielle gratuite par Ippon 2014

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…)

Page 141: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Monitoring

Sur mesureDiagnostic temps réelAlerte

Page 142: Formation Usine Logicielle gratuite par Ippon 2014

Ippon Technologies © 2014

Monitoring

TP Instrumentation et exploitation

Page 143: Formation Usine Logicielle gratuite par Ippon 2014

blog.ippon.frippon.fr atomes.com

@ippontech [email protected]