SlideShare a Scribd company logo
1 of 143
Download to read offline
Usine logicielle Java
L’industrialisation de la
mise en production
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
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
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
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
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 logiciel
Ippon Technologies © 2014
Une mise en production standard
Développement
Compilation
Déploiement
Intégration
Validation / Recette manuelle
Mise en production
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 incompatibles avec la production
Bugs
Ippon Technologies © 2014
Compilation
Quelles sources ?
Quelles options de compilation ?
Quelles dépendances de librairie ?
Quelles versions ?
Sur quelle plate-forme ?
Qui est responsable ?
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
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
● 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
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
Ippon Technologies © 2014
Recette
Test volatiles
● non fiables
● non reproductibles
● incomplets
Tâches rébarbatives, manuelles, hautement sujettes à l’
erreur
Effet boite noire
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
Multi-utilisateur
● Confidentialité des données
● Concurrence
Tenue en charge
Retour en arrière
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 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
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
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
Ippon Technologies © 2014
Émergence de nouveaux besoins
Qualité
Tests d’acceptance
Tests de charge
Métriques
Automatisation du déploiement
...
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 systématique
3 grandes étapes : provisionner, installer, configurer
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 configuration
Build tools
Intégration continue
Tests de non régression
Bug Tracking
Outils de déploiement
Outils de monitoring
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 tests automatique raisonnable
● Architecture saine
● Outils de debugging performants
● Culture d’ingénierie qui valorise le refactoring
Ippon Technologies © 2014
IDE - code lisible
Formateur de code
Application de convention de codage
Détection de redondance de code
Ippon Technologies © 2014
IDE - tests
Création simplifiée de tests
Lancement et résultat des tests
Outil de visualisation de couverture de tests
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étection de code à factoriser/améliorer
(PMD, Checkstyle)
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
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)
+ Support de technologies avancées (JavaFX, Java 3D…)
- Plugins moins nombreux
- En retard sur les nouveaux langages
- Utilisation de Maven quasi-obligatoire
Ippon Technologies © 2014
IDE - Eclipse 1/2
Le plus répandu
Communauté / contributeurs importants
Nombreux plugins
Couvre toutes les technologies
Multi-lingue
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é
Ippon Technologies © 2014
IDE - Intellij IDEA 1/2
Stabilité
Richesse du support “out-of-the-box”
Nombreux plugins
Support natif d’UML
Intelligence contextuelle
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
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
● configuration serveur
● scripts
● schéma de la base de données
● … tout ce qui est utile à un déploiement
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 données
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 de configuration
Ippon Technologies © 2014
Gestion de conf - Versionner
Aussi important que les sources
Versionner
Versionner tout
Être à jour
Messages explicites
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érationnel
● Risques induits
Ippon Technologies © 2014
Gestion de conf - Typologie
Type de configuration
● build
● packaging
● deployment
● startup/runtime
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
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
Ippon Technologies © 2014
Gestion de conf - Environnement
Configuration environnement < Configuration application
Outils de gestion de configuration
Gestion du changement
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
● Modification incrémentale
Contrainte supplémentaire
● Rolling back Database et Zero downtime Release
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
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
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
Ippon Technologies © 2014
Migration Incrémentale
Le cas des Migrations destructrices
● Copier le contenu de tables sous un autre nom versionné
● Backup/Restore
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
Ippon Technologies © 2014
Build Tools
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
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 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
Ippon Technologies © 2014
Ant - Cibles et points d’extension
Create Directory Layout
Ready to compile
Generate source
Compile
depends
extension-of
depends
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
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
…
<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>
...
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 Acyclic Graph)
Conçu pour les projets très vastes
Build incrémental
Google Android OS
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
Continue
Automatic
QA Test
Exploratory
QA Test
Capacity / Load Test
UAT / Demo Production
IDE
Unit Test
Test
coverage
Artifact
Ippon Technologies © 2014
Intégration Continue - Tests
Tests unitaires
Tests d’intégration
Tests fonctionnels
Tests d’exploration
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é
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.)
Repenser son cloisonnement par technologie
Mettre à l’épreuve les transactions
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.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);
}
}
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
Ippon Technologies © 2014
Test d’intégration - Solutions
Spring TestContext Framework - astuces
● Charger des contextes allégés
● @DirtiesContext
● @IfProfileValue
Ippon Technologies © 2014
Test d’intégration - Solutions
Arquillian
● Conteneur sur mesure
● ShrinkWrap : artifact sur mesure
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
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ématisation
Maintenance
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
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
Favoriser le code sensible
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
● Convention d’écriture
● Manque de couverture
● Bugs potentiels courants
● Complexité
● Documentation
● Conception
Ippon Technologies © 2014
Qualité du code - Concepts
Analyse statique du code
Analyse Dynamique
Profilers
Memory Tools
Monitoring Tools
Ippon Technologies © 2014
Qualité du code - Précautions
Faux Positifs
Adaptation au projet
Règles personnelles
Legacy projects
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 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
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 projet
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
Ippon Technologies © 2014
Bug Tracking - cycle de vie
NEW
ASSIGNED
VERIFIEDREOPEN
CLOSED
RESOLVED
FIXED
DUPLICATE
WONT FIX
WORK FOR ME
INVALID
REMIND
LATER
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 environnements
Ippon Technologies © 2014
Déploiement - Le choix des armes
Utiliser la bonne technologie de déploiement
Utiliser des outils de packaging éprouvés
Ippon Technologies © 2014
Déploiement - objectif et méthode
Mise à niveau ou Installation complète
Déploiement = processus idempotent
Évolution incrémentale
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 les binaires : Nexus, Archiva
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
infrastructure tout au long du cycle de développement
● Définir l’état attendu d’un serveur
● Classes, module
● Piocher dans l’existant
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.
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émoire
Les ressources partagées
● pool de threads
● pool de connexions
● DLQ et queue sevrée/surchargée
Les succès/échecs
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
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…)
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

More Related Content

What's hot

DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests PlanDenis Voituron
 
Angular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTAngular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTtayebbousfiha1
 
Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Amazon Web Services
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring CloudFlorian Beaufumé
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetesJulien Maitrehenry
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sassmarwa baich
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandTroublemaker Khunpech
 

What's hot (20)

DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests Plan
 
Angular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTAngular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHT
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...
 
Introduction à Angular 2
Introduction à Angular 2Introduction à Angular 2
Introduction à Angular 2
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Angular
AngularAngular
Angular
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
 
Firebase
FirebaseFirebase
Firebase
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFX
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Introduction a Flutter
Introduction a FlutterIntroduction a Flutter
Introduction a Flutter
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 

Similar to Formation Usine Logicielle gratuite par Ippon 2014

Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs XebiaLabs
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
Continuous S.A. presentation
Continuous S.A. presentationContinuous S.A. presentation
Continuous S.A. presentationcontinuousphp
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?LeClubQualiteLogicielle
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
Solution Linux 2012 : Utilisateurs du Libre ne restez pas dans votre coin
Solution Linux 2012 : Utilisateurs du Libre ne restez pas dans votre coinSolution Linux 2012 : Utilisateurs du Libre ne restez pas dans votre coin
Solution Linux 2012 : Utilisateurs du Libre ne restez pas dans votre coinAnne Nicolas
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Ippon
 
Devops chez Voyages-Sncf.com
Devops chez Voyages-Sncf.comDevops chez Voyages-Sncf.com
Devops chez Voyages-Sncf.comantony_guilloteau
 
Webinar: Passez progressivement de releases manuelles
Webinar: Passez progressivement de releases manuellesWebinar: Passez progressivement de releases manuelles
Webinar: Passez progressivement de releases manuellesXebiaLabs
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez EngieLeClubQualiteLogicielle
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Samuel Metias
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Click and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et JenkninsClick and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et JenkninsSophie Beaupuis
 
Lean en conception et développement par Michael Ballé
Lean en conception et développement par Michael BalléLean en conception et développement par Michael Ballé
Lean en conception et développement par Michael BalléInstitut Lean France
 
L'agilité chez Jouve via le Behaviour Driven Development
L'agilité chez Jouve via le Behaviour Driven DevelopmentL'agilité chez Jouve via le Behaviour Driven Development
L'agilité chez Jouve via le Behaviour Driven DevelopmentJouve
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Jean-Pierre Lambert
 
Patterns Agiles avec Visual Studio 2012 et TFS 2012
Patterns Agiles avec Visual Studio 2012 et TFS 2012Patterns Agiles avec Visual Studio 2012 et TFS 2012
Patterns Agiles avec Visual Studio 2012 et TFS 2012Microsoft
 

Similar to Formation Usine Logicielle gratuite par Ippon 2014 (20)

Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
20111004 04 - Présentation ATDD
20111004 04 - Présentation ATDD20111004 04 - Présentation ATDD
20111004 04 - Présentation ATDD
 
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
Continuous S.A. presentation
Continuous S.A. presentationContinuous S.A. presentation
Continuous S.A. presentation
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Solution Linux 2012 : Utilisateurs du Libre ne restez pas dans votre coin
Solution Linux 2012 : Utilisateurs du Libre ne restez pas dans votre coinSolution Linux 2012 : Utilisateurs du Libre ne restez pas dans votre coin
Solution Linux 2012 : Utilisateurs du Libre ne restez pas dans votre coin
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014
 
Devops chez Voyages-Sncf.com
Devops chez Voyages-Sncf.comDevops chez Voyages-Sncf.com
Devops chez Voyages-Sncf.com
 
Webinar: Passez progressivement de releases manuelles
Webinar: Passez progressivement de releases manuellesWebinar: Passez progressivement de releases manuelles
Webinar: Passez progressivement de releases manuelles
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Click and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et JenkninsClick and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et Jenknins
 
Lean en conception et développement par Michael Ballé
Lean en conception et développement par Michael BalléLean en conception et développement par Michael Ballé
Lean en conception et développement par Michael Ballé
 
L'agilité chez Jouve via le Behaviour Driven Development
L'agilité chez Jouve via le Behaviour Driven DevelopmentL'agilité chez Jouve via le Behaviour Driven Development
L'agilité chez Jouve via le Behaviour Driven Development
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
 
Patterns Agiles avec Visual Studio 2012 et TFS 2012
Patterns Agiles avec Visual Studio 2012 et TFS 2012Patterns Agiles avec Visual Studio 2012 et TFS 2012
Patterns Agiles avec Visual Studio 2012 et TFS 2012
 

More from Ippon

Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Ippon
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
 
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Ippon
 
Multi criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationMulti criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationIppon
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursIppon
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014Ippon
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Ippon
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàCassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàIppon
 
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesIppon
 
Offre 2015 numeriq_ippon
Offre 2015 numeriq_ipponOffre 2015 numeriq_ippon
Offre 2015 numeriq_ipponIppon
 
Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Ippon
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratiqueIppon
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 
Stateful is beautiful
Stateful is beautifulStateful is beautiful
Stateful is beautifulIppon
 
Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Ippon
 

More from Ippon (20)

Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...
 
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
 
Multi criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationMulti criteria queries on a cassandra application
Multi criteria queries on a cassandra application
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeurs
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàCassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
 
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à Achilles
 
Offre 2015 numeriq_ippon
Offre 2015 numeriq_ipponOffre 2015 numeriq_ippon
Offre 2015 numeriq_ippon
 
Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratique
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
Stateful is beautiful
Stateful is beautifulStateful is beautiful
Stateful is beautiful
 
Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011
 

Formation Usine Logicielle gratuite par Ippon 2014

  • 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. 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. 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. 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. Ippon Technologies © 2014 Introduction
  • 7. Ippon Technologies © 2014 Changement vs Stabilité (1) VS
  • 8. Ippon Technologies © 2014 Changement vs Stabilité (2) VS
  • 9. Ippon Technologies © 2014 Time to market vs Opportunités VS
  • 10. Ippon Technologies © 2014 Industrialisation du changement VS
  • 11. Ippon Technologies © 2014 Mise en production naïve Problèmes courants rencontrés Mise à jour des besoins Le déploiement logiciel
  • 12. Ippon Technologies © 2014 Une mise en production standard Développement Compilation Déploiement Intégration Validation / Recette manuelle Mise en production
  • 13. Ippon Technologies © 2014 Problèmes fréquemment rencontrés
  • 14. Ippon Technologies © 2014 Développement Mésinterprétation du cahier des charges Manque de configuration Ressources locales incompatibles avec la production Bugs
  • 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. 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. Ippon Technologies © 2014 Deploiement - Anti-pattern Un déploiement ? Quel déploiement ?
  • 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. 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. Ippon Technologies © 2014 Recette Test volatiles ● non fiables ● non reproductibles ● incomplets Tâches rébarbatives, manuelles, hautement sujettes à l’ erreur Effet boite noire
  • 21. Ippon Technologies © 2014 Anti-pattern de recette Tests manuels
  • 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. Ippon Technologies © 2014 Mise en production - Anti-pattern Temps d’indisponibilité excessif Issue imprévisible
  • 24. Ippon Technologies © 2014 Besoins mis à jour
  • 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. 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. 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. Ippon Technologies © 2014 Émergence de nouveaux besoins Qualité Tests d’acceptance Tests de charge Métriques Automatisation du déploiement ...
  • 29. Ippon Technologies © 2014 Vers le déploiement continu
  • 30. Ippon Technologies © 2014 Principes du déploiement continu
  • 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. Ippon Technologies © 2014 Grands principes Affronter les tâches pénibles
  • 33. Ippon Technologies © 2014 Grands principes “Bring Quality In”
  • 34. Ippon Technologies © 2014 Grands principes Fait = Démontré à l’utilisateur
  • 35. Ippon Technologies © 2014 Grands principes Responsabiliser toute l’équipe
  • 36. Ippon Technologies © 2014 Grands principes Amélioration Continue
  • 37. Ippon Technologies © 2014 Le déploiement continu pas à pas
  • 38. Ippon Technologies © 2014 Solutions Vers l’industrialisation logicielle ● Outillage ● Culture
  • 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. Ippon Technologies © 2014 IDE Environnement de Développement Intégré
  • 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. Ippon Technologies © 2014 IDE - code lisible Formateur de code Application de convention de codage Détection de redondance de code
  • 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. Ippon Technologies © 2014 IDE - debugging Debug en local Debug à distance Modification à chaud du code
  • 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. 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. Ippon Technologies © 2014 IDE - offre Intellij IDEA Eclipse Netbeans
  • 48. Ippon Technologies © 2014 IDE - Netbeans 1/2 Simple Robuste Lié à Oracle Fonctionne mieux avec Maven* et GlassFish
  • 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. Ippon Technologies © 2014 IDE - Eclipse 1/2 Le plus répandu Communauté / contributeurs importants Nombreux plugins Couvre toutes les technologies Multi-lingue
  • 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. 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. 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. Ippon Technologies © 2014 IDE TP Eclipse/IDEA/Netbeans
  • 55. Ippon Technologies © 2014 SCM Gestion de Code Source
  • 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. Ippon Technologies © 2014 SCM - Services Centralise Versionne Résout les conflits Permet le catalogage (tagging)
  • 58. Ippon Technologies © 2014 SCM - Fonctionnalités Commit/Checkout Branching/Merging Diff current/tag/branch Intégrité des données
  • 59. Ippon Technologies © 2014 SCM - Usage Branching / merging ; deux approches : ● branche systématique ● tout sur le trunk
  • 60. Ippon Technologies © 2014 SCM - Usage
  • 61. Ippon Technologies © 2014 SCM - Solutions CVS SVN Git
  • 62. Ippon Technologies © 2014 Versionner Gérer les dépendances Gérer la configuration système Gérer les environnements Gestion de configuration
  • 63. Ippon Technologies © 2014 Gestion de conf - Versionner Aussi important que les sources Versionner Versionner tout Être à jour Messages explicites
  • 64. Ippon Technologies © 2014 Gestion de conf - Dépendances Dépendances externes Composants logiciels
  • 65. Ippon Technologies © 2014 Gestion de conf - Flexibilité Configuration et flexibilité ● Coût de développement ● Coût opérationnel ● Risques induits
  • 66. Ippon Technologies © 2014 Gestion de conf - Typologie Type de configuration ● build ● packaging ● deployment ● startup/runtime
  • 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. 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. Ippon Technologies © 2014 Gestion de conf - Environnement Configuration environnement < Configuration application Outils de gestion de configuration Gestion du changement
  • 70. Ippon Technologies © 2014 Gestion de conf - Données Données et application diffèrent en 2 points ● volume ● cycle de vie
  • 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. 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. 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. 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. Ippon Technologies © 2014 Migration Incrémentale Le cas des Migrations destructrices ● Copier le contenu de tables sous un autre nom versionné ● Backup/Restore
  • 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. Ippon Technologies © 2014 Build Tools
  • 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. Ippon Technologies © 2014 Build Tools - L’offre Apache Ant Apache Maven Gradle
  • 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. Ippon Technologies © 2014 Ant - Cibles et points d’extension Create Directory Layout Ready to compile Generate source Compile depends extension-of depends
  • 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. Ippon Technologies © 2014 Maven lifecycle Validate Compile Test Package Install Verify Integration-test
  • 84. Ippon Technologies © 2014 Maven Profiles Séparer les tests Surcharger la configuration par environnement
  • 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. Ippon Technologies © 2014 Maven profiles TP - Surcharge de configuration
  • 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. Ippon Technologies © 2014 Gradle lifecycle <inclure un cycle de vie du build gradle>
  • 89. Ippon Technologies © 2014 Build Tools TP - Intégration de Maven dans Jenkins
  • 90. Ippon Technologies © 2014 Intégration Continue
  • 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. Ippon Technologies © 2014 Intégration Continue - Tests Tests unitaires Tests d’intégration Tests fonctionnels Tests d’exploration
  • 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. Ippon Technologies © 2014 Test unitaire - Solutions JUnit + Mockito ou EasyMock Spock + Groovy DEMO
  • 95. Ippon Technologies © 2014 Intégration Continue TP - Tests sous Jenkins
  • 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. Ippon Technologies © 2014 Test d’intégration - Solutions Spring TestContext Framework Arquillian DEMO
  • 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. 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. Ippon Technologies © 2014 Test d’intégration - Solutions Spring TestContext Framework - astuces ● Charger des contextes allégés ● @DirtiesContext ● @IfProfileValue
  • 101. Ippon Technologies © 2014 Test d’intégration - Solutions Arquillian ● Conteneur sur mesure ● ShrinkWrap : artifact sur mesure
  • 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. Ippon Technologies © 2014 Test fonctionnel - Solution Selenium 2 (webdriver, HQ et IDE) DEMO
  • 104. Ippon Technologies © 2014 Tests fonctionnels TP - Selenium 2
  • 105. Ippon Technologies © 2014 Tests Aller plus loin
  • 106. Ippon Technologies © 2014 Tests - Non régression Pierre angulaire de la confiance qualité Couvre toute l’application Systématisation Maintenance
  • 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. Ippon Technologies © 2014 Tests - Stress Test Teste l’application déployée Augmente la charge pour identifier les limites
  • 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. Ippon Technologies © 2014 Couverture de code - Solution Emma -> Jacoco Cobertura Clover Cobertura
  • 111. Ippon Technologies © 2014 Qualité
  • 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. Ippon Technologies © 2014 Qualité du code - Concepts Analyse statique du code Analyse Dynamique Profilers Memory Tools Monitoring Tools
  • 114. Ippon Technologies © 2014 Qualité du code - Précautions Faux Positifs Adaptation au projet Règles personnelles Legacy projects
  • 115. Ippon Technologies © 2014 Qualité du code - Solutions FindBugs PMD CheckStyle et Jalopy Coverity SonarQube
  • 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. Ippon Technologies © 2014 Qualité du code TP Sonar
  • 118. Ippon Technologies © 2014 Bug Tracking
  • 119. Ippon Technologies © 2014 Bug Tracking Disposer de métriques sur les problèmes découverts Communiquer sur la documentation projet
  • 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. Ippon Technologies © 2014 Bug Tracking - cycle de vie NEW ASSIGNED VERIFIEDREOPEN CLOSED RESOLVED FIXED DUPLICATE WONT FIX WORK FOR ME INVALID REMIND LATER
  • 122. Ippon Technologies © 2014 Bug Tracking - Livraison
  • 123. Ippon Technologies © 2014 Bug Tracking - Solutions BugZilla Jira Mantis Redmine Trac (+ Agilo)
  • 124. Ippon Technologies © 2014 Déploiement
  • 125. Ippon Technologies © 2014 Déploiement - Scripting One script to rule them all Un script principal pour tous les environnements
  • 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. Ippon Technologies © 2014 Déploiement - objectif et méthode Mise à niveau ou Installation complète Déploiement = processus idempotent Évolution incrémentale
  • 128. Ippon Technologies © 2014 Déploiement à grande echelle
  • 129. Ippon Technologies © 2014 Déploiement à grande échelle
  • 130. Ippon Technologies © 2014 Déploiement - astuces Automatisation ● Chemins relatifs ● Éliminer les étapes manuelles
  • 131. Ippon Technologies © 2014 Déploiement - astuces Versionning ● Marquer les binaires avec la version SCM ● Ne pas commiter les binaires : Nexus, Archiva
  • 132. Ippon Technologies © 2014 Déploiement - astuces Tests ● Test failed != Build Failed ● Smoke tests
  • 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. 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.
  • 136. Ippon Technologies © 2014 Déploiement - Puppet TP Puppet : Configurer Apache
  • 137. Ippon Technologies © 2014 Monitoring
  • 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. 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. 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. Ippon Technologies © 2014 Monitoring Sur mesure Diagnostic temps réel Alerte
  • 142. Ippon Technologies © 2014 Monitoring TP Instrumentation et exploitation