Formation Usine Logicielle gratuite par Ippon 2014

Preview:

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

Usine logicielle JavaL’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ïveProblèmes courants rencontrésMise à 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 chargesManque de configurationRessources locales incompatibles avec la productionBugs

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 fichierTraçabilité du fichier mis à dispositionCommunication 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 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

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

Ippon Technologies © 2014

Recette

Test volatiles● non fiables● non reproductibles● incomplets

Tâches rébarbatives, manuelles, hautement sujettes à l’erreurEffet 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éelleMulti-utilisateur

● Confidentialité des données● Concurrence

Tenue en chargeRetour en arrière

Ippon Technologies © 2014

Mise en production - Anti-pattern

Temps d’indisponibilité excessifIssue 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’acceptanceTests de chargeMé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éVersionnementGestion de configurationBuild toolsIntégration continueTests de non régressionBug TrackingOutils de déploiementOutils de monitoring

Ippon Technologies © 2014

IDEEnvironnement 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 codeApplication de convention de codageDétection de redondance de code

Ippon Technologies © 2014

IDE - tests

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

Ippon Technologies © 2014

IDE - debugging

Debug en localDebug à distanceModification à 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épendancesOutil de bug-trackingServeur web, avec accès en mode debugBase de données

Ippon Technologies © 2014

IDE - offre

Intellij IDEAEclipseNetbeans

Ippon Technologies © 2014

IDE - Netbeans 1/2

SimpleRobusteLié à OracleFonctionne 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épanduCommunauté / contributeurs importantsNombreux pluginsCouvre toutes les technologiesMulti-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 pluginsSupport natif d’UMLIntelligence 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

SCMGestion 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

CentraliseVersionneRésout les conflits

Permet le catalogage (tagging)

Ippon Technologies © 2014

SCM - Fonctionnalités

Commit/CheckoutBranching/MergingDiff 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

CVSSVNGit

Ippon Technologies © 2014

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

Gestion de configuration

Ippon Technologies © 2014

Gestion de conf - Versionner

Aussi important que les sources

VersionnerVersionner toutÊtre à jour

Messages explicites

Ippon Technologies © 2014

Gestion de conf - Dépendances

Dépendances externesComposants 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 VMsValidation 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 configurationGestion 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émentaleContrainte 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, 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

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

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

Ippon Technologies © 2014

Migration IncrémentaleLe 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-formeReproductibleAutomatisableConfigurable

Gérer les dépendancesSe connecter au SCM

Ippon Technologies © 2014

Build Tools - L’offre

Apache AntApache MavenGradle

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

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

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 MavenDSL (Domain-Specific Langage)DAG (Directed Acyclic Graph)Conçu pour les projets très vastesBuild incrémentalGoogle 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 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

Ippon Technologies © 2014

Intégration Continue - Tests

Tests unitairesTests d’intégrationTests fonctionnelsTests d’exploration

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é

Ippon Technologies © 2014

Test unitaire - Solutions

JUnit + Mockito ou EasyMockSpock + 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 technologieMettre à l’épreuve les transactions

Ippon Technologies © 2014

Test d’intégration - Solutions

Spring TestContext FrameworkArquillian

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 completsTester l’IHM au travers de laquelle on atteint toutes les couches applicativesValider les règles de gestion non unitairesNon 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

TestsAller plus loin

Ippon Technologies © 2014

Tests - Non régression

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

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

Ippon Technologies © 2014

Tests - Stress Test

Teste l’application déployéeAugmente 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 objectifFavoriser le code sensible

Ippon Technologies © 2014

Couverture de code - Solution

Emma -> JacocoCoberturaClover 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 codeAnalyse DynamiqueProfilersMemory ToolsMonitoring Tools

Ippon Technologies © 2014

Qualité du code - Précautions

Faux PositifsAdaptation au projetRègles personnellesLegacy projects

Ippon Technologies © 2014

Qualité du code - Solutions

FindBugsPMDCheckStyle et JalopyCoveritySonarQube

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

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écouvertsCommuniquer sur la documentation projet

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

Ippon Technologies © 2014

Bug Tracking - cycle de vie

NEW

ASSIGNED

VERIFIEDREOPEN

CLOSED

RESOLVED

FIXEDDUPLICATEWONT FIXWORK FOR MEINVALIDREMINDLATER

Ippon Technologies © 2014

Bug Tracking - Livraison

Ippon Technologies © 2014

Bug Tracking - Solutions

BugZillaJiraMantisRedmineTrac (+ Agilo)

Ippon Technologies © 2014

Déploiement

Ippon Technologies © 2014

Déploiement - Scripting

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

Ippon Technologies © 2014

Déploiement - Le choix des armes

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

Ippon Technologies © 2014

Déploiement - objectif et méthode

Mise à niveau ou Installation complèteDé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 distantL’occupation mémoireLes ressources partagées● pool de threads● pool de connexions● DLQ et queue sevrée/surchargéeLes 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 nativementSurveillance 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 mesureDiagnostic temps réelAlerte

Ippon Technologies © 2014

Monitoring

TP Instrumentation et exploitation

blog.ippon.frippon.fr atomes.com

@ippontech contact@ippon.fr