Déploiement et Configuration

Slides:



Advertisements
Présentations similaires
École Nationale Supérieure d’Informatique et d’Analyse des Systèmes
Advertisements

CRÉER UNE APPLICATION INTERNET RELIEE A UNE BASE DE DONNEES
Tournée TechNet 2006 sur la conception « Une infrastructure sécurisée bien gérée »
Architecture Technique de la plate-forme CASTORE
UV Libre : Bureau Des Elèves encadré par Nicolas Malandain - ASI3 – UV Libre BDE –
SuccessTeam Académy Formation
Implémentation de la gestion de réseau dans Windows 2000 et plus
L’intégration continue
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
Architecture Technique de la plate-forme CASTOR Projet Castor © Ecole des Mines de Nantes
Flipzee PRO.
Introduction aux CMS.
GTCB Kahila Boulbaba BTS IRIS Session Sommaire Description du projet Présentation Moyen mis en œuvre Interaction entre les éléments Répartition.
LES OUTILS POUR LA GOUVERNANCE DES DONNÉES LA PASSION DES DONNÉES LA PRÉCISION DES RÉSULTATS.
Les outils d’intégration continue
Le virus constructeur d‘Amour
LOGICIEL DE L'AMOUR!.
Retour sur l'allocation d'espace Exemple sur une table facture (sans les tables associées) N° fact, N° Client, N° Cde, date Cde, date fact, date réglement,
TDD & Legacy By Agile4Techos. Qui sommes nous? Bernard Huguet Luc Jeanniard Johan Martinsson Cyrille Roy.
Présentation Struts1-JaxB
Direction Informatique & Système d’Information
Tapestry - Eclipse Link
Symfony2.
Lutilisation de la Cloudwatt-box Emmanuel Keller, CTO OpenSearchServer.
MICROSOFT POWER POINT Fais « Enter » Par Danièle Lippé.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
LE CLUB DES ENTREPRENEURS DU GRAND BRIANÇONNAIS
Des outils pour le développement logiciel
Christine Evain Simon Carolan
Création d'un projet Web avec Netbeans
Informatique Décisionnel
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Module 8 : Maintenance des logiciels à l'aide des services SUS
Conception, création et animation d’une classe virtuelle
Projet de Master première année 2007 / 2008
Date : Juillet 2014 Formation : TAI Formateur : Tayeb BENDJELTI
GROUPE BTS IRIS 2 Informatique et Réseaux pour l’industrie et les Services techniques E-6 PROJET INFORMATIQUE REVUE N°2      INTERROGATION DE LA BASE DE.
Outil de gestion des cartes grises
Attention ! Mise en Garde Philippe TRIGANO.
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
TDD & Legacy By Agile4Techos.
Supports de formation au SQ Unifié
09/11/2006 CMS Content Management System Système de Gestion de Contenu.
Bonjour François Sass.
Quand l’agilité n’est pas une option
MEMOIRE INDUSTRIEL ESIEA
Mise en place d’un Intranet
S'initier au HTML et aux feuilles de style CSS Cours 5.
Alexandre Blond Antoine Deshayes
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
PROJET PERSONNEL Site web avec des jeux Par Antoine Boucher Foyer 503.
S'initier au HTML et aux feuilles de style CSS Cours 5.
Validation des compétences B2i au collège
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
Bruno Orsier Exigences Exécutables Efficaces Doing the Right Software Agile4Techos Rémy Sanlaville.
En route vers le déploiement . . .
Réalisé par : Grégory CORDIER Promotion : RIE03 UE : Management Social & Humain Réalisé par : Grégory CORDIER Promotion : RIE03 UE : Management Social.
Citrix ® Presentation Server 4.0 : Administration Module 9 : Déploiement d'applications.
Plan de la présentation
♫ Branchez vos haut-parleurs ! ♫ Branchez vos haut-parleurs ! CLIQUEZ POUR PASSER LES DIAPOS CLIQUEZ POUR PASSER LES DIAPOS Copyright © 2008 Tommy's Window.
Applications Internet Cours 3 21 janvier 2010 Cours 3 21 janvier 2010.
Projet Informatique 2009 Application Web en PHP 5 / MySQL Intranet et Espace Client Marc Gervais – Florian Simon – Gildas Quéméner.
Ansible Déploiement, provisionning et configuration
Sécurisation infrastructure Altibus Ajout d’un serveur pour le réseau Call Center.
Création d’un site WEB 1 – Un site WEB c’est quoi ? 2 – Questions à se poser avant la construction d’un site WEB 3 – Principes de fonctionnement d’un site.
PPE PROJET GBS. But de ce PPE  Le but de ce PPE était de créer un site internet dynamique pour la société GSB, pour cela nous avons du :  Reprendre.
Chapitre 6 Déploiement et gestion des logiciels à l'aide d'une stratégie de groupe Module S44.
PROJET DE SESSION DANS LE CADRE DU COURS: SCG Réalisation d’applications en SIG PRÉSENTÉ PAR: Marie-Andrée Levesque 18 AVRIL 2006.
TD N°5: Une GPAO pour l’usine Odyssée. Lancement du logiciel Logiciel « Usine Odyssée 7 » disponible dans … Entrer votre nom et un nom d’entreprise de.
WHAT IS THIS ? Serveur d’intégration Environnement JAVA Open Source Ou logiciel d’intégration continue.
Transcription de la présentation:

Déploiement et Configuration Transparent d’accueil Cette présentation à pour but de présenter et de proposer des solutions pour résoudre les problèmes liés au déploiement et à la configuration automatique d’application. Cela à la fois dans un monde Unix/Windows, Client lourd/léger, grosse entreprise d’informatique ou petite structure. Déploiement et Configuration Nicolas Capponi, Alain Delafosse et Laurent Tardif By Agile4techos

Qui sommes nous ? Alain Delafosse Laurent TARDIF Nicolas Capponi Consultant Java / Objet Principal contributeur Pack/Conf chez Kelkoo Architecte chez Kelkoo Alain Delafosse Consultant Java Production chez Kelkoo Architecte chez Kelkoo Laurent TARDIF M&T chez Kelkoo Intl! Architecte chez Y! (IC, I18n, Securité) IC chez Agilent Présentons notre équipe.   Nous avons travailler sur de grosses applications (kelkoo/yahoo), composées d’appli cation web et/ou de clients  lourd avec des webservices, base de données, …. Cela dans un monde hétérogène : Unix (redhat, BSD, fefora, centa OX,) /windows. Sur des applications internationalisables. Dans des organisations agiles ou non, avec des équipes de dev/qa/prod avec ou non des déploiements chez des clients. Cette présentation se base sur des cas réels de nos projets.

Nous allons vous montrer comment La session Rendre une application existante configurable et installable automatiquement ? C’est possible !!! Nous allons vous montrer comment  Présenter les pratiques agiles liées au déploiement et à la configuration   Il est assez courant de rencontrer les problèmes suivant, nous allons apporter des réponses : Je ne maîtrise pas ma procédure d'installation, J'appréhende chaque déploiement car c'est long et compliqué, Je ne sais pas à quelle version de mon code correspondent mes binaires en production, Je ne sais pas exactement ce que contient mon application, Je ne fais pas valider ma procédure d'installation par la QA... ...et pourtant je dois bien livrer des nouvelles fonctionnalités régulièrement. et l'agilité pousse a livrer régulièrement ... 

Notre application : Nokia Test Client lourd Traduction Questions Réponses Configuration Utilisateurs Ressources Client Q/R Client mi-lourd ServiceQ/R Client U ServiceU Rappel de l'appli en disant que c notre trame de la journée Base de données Des librairies métier des web services des clients  un client lourd Un client mi-lourd (utilise les WS) Client léger ? (pas sur ) Un client qui a des stats On considère qu'on a une application classique. Le code est de bonne qualité mais déploiement et configuration non automatique. Stockage Statistiques Client S

Le deploiement c’est quoi ? Java Java Java Client lourd Traduction Questions Réponses Configuration Utilisateurs Grizzly : services, admin, conf, … Resources Client Q/R Client mi-lourd ServiceQ/R fichiers Client U ServiceU Mysql : services, conf, data La première fois il faut déployer l’infrastructure : Base de données Configuration Schéma de base de donnée des données Java le container de services (tomcat) Configuration général Configuration de mes services des fichiers de ressources ( traductions , ...) * des données (les questions, .... ) Après et à chaque fois, il faut déployer nos jars , et nos scripts … notre code. Une partie du problème de l’installation et de la perte de connaissance viens du fait de la fréquence de certaines opérations. Stockage Statistiques Client S

DEMONSTRATION Au début Je ne maîtrise pas l'installation incrémentale. Il manque des fichiers ? (ca marche car déjà présent). Je garde des fichiers qui ne servent plus. Je ne maîtrise pas les logiciels (versions) installés. Je ne sais pas ré-installer un nouveau serveur Je mets beaucoup de temps à installer. Si le principal contributeur n'est pas la, comment faire pour installer ? partage de connaissances/compétences DEMO : (le transparent sert de 2eme support ) Objectifs : montrer, lister les problèmes et essayer de faire que les gens se reconnaissent. Je lis la doc d’installation, (que je me suis imprimé), il y a des petites fautes, que je ne corrige pas, c’est pas facile, je me rappel jamais ou il est … Je compile tous les projets (note, c réaliste tant que je n’ai pas trop de projets) Je génère les jars / zip Je copie les jars ou il faut Je met a jour ma doc d’installation avec le nouveau schéma de base de données J’update mon schéma (et je perd mes données …) Je lance mon start all Je clic / clic / clic … Et je vérifie a la main que c’est bon … IDEE : avoir des slides sympa pour chaque étape de la démo ….  

Comment aborder le problème Déploiement Automatisation du déploiement Configuration Automatisation de la configuration Déploiement continu C’est le plan  On va aborder le problème en deux étapes : Le déploiement Et la configuration Sans oublier que le but final c’est le déploiement continu

Zoom sur le contenu d’un déploiement Des binaires Des dépendances Des ressources (fichiers de traductions, images, etc ...) Des données (questions, réponses,  ... ) Des structures de données : schéma de base, xsd , ...  Des templates de configuration La logique d'installation Des outils d'administration (crons, start, stop) Des documents (installation, release notes, ...)  Automatisons cela en 9 étapes, l’ordre n’est pas anodin  Un ensemble de binaires (scripts, exécutable, librairies) Des dépendances systèmes ou logiciels   Un ensemble de ressources (fichiers de traductions, images, etc ...) Des données (questions, réponses,  ... ) Des structures de données : schéma de base, xsd , ...  Des templates de configuration La logique d'installation, de mise à jours, de suppression y compris les dépendances  Des outils d'administration les crons / tâches planifiées le start/stop/resume Des documents (installation, release notes, ...) 

DEMONSTRATION Déployons notre environnement de développement Pré-requis Le monde extérieur et les serveurs d’artefacts Un environnement configurable, mais standardisé …. Commençons par identifier les dépendances que nous avons : java, mysql, eclipse, … Je commence par automatiser cela. Je commence par quelquechose de simple. Histoire de se faire la main et de rencontrer rapidement la plupart des problèmes. Je liste ce dont j’ai besoin : eclipse, svn, mais aussi unzip, wget, ou autre …. Je recontre rapidement deux problèmes ou questions : J’ai quoi sur le PC au debut : ce de quoi j’ai besoin sur le PC initial pour commencer … svn , wget, …. Je défini donc une condition initiale : PC avec SVN . Une fois que j’ai SVN, je m’aperçois que j’ai besoin de wget / unzip /…. Je les mets donc sous svn. Les applications ? Je les prends sur les site oueb directement … Oula que c’est lent … en plus ca change tout le temps … (ca, je sais, j’ai de l’expérience). Ou est-ce que je stocke mes binaires : svn ? Pas adapté mais ca marche … répertoire partagé ? C vite le souk …. J’ai un outil dédié utilisé par l’équipe de déploiement ? Je m’en sert …… Au passage, ces outils font parti du framework d’installation, je les versionne. Je suis content, ca s’installe pas trop mal, mais pas chez nicolas, ni chez alain …. A, mes développeurs sont pénibles, j’ai un windows XP, 2 seven, laurent qui veut tout mettre sur le D, et pas sur le C … pffuuuu , au moins je permet un minimum de configuration …. En plus , mon application sera plus flexible et portable. Piège : duplication ou version unique ultra complexe ?  Il faut faire la part des choses entre ce que j’impose et ce que je permet de rendre flexible DATA : utilisateur, install : admin, sous arbo : nous, conf : utilisateur Illustrer dans notre cas ce que cela veut dire :

DEMONSTRATION Déployons notre application Choix initiaux : mono/multi instance , que configurer ? Le script de déploiement peut échouer correction manuelle, roll-back automatique,… Installation par étape La gestion du down-grade ? La gestion de version des données L’automatisation est un ensemble de programmes … peut être buggé ?  J’ai déjà 3 principes de bases, je m’en sers , et je continue. Je commence par me poser qqes questions : configurable ? Mono / multi instance ? J’ai identifié mes dépendances et je me coupe du monde extérieur (maven + artifactory) j’ai inclus mes ressources dans mon mécanisme de build (zip … bat … ) J’écris des scripts de mis à jours de mes schéma de base de donnée … tiens pourquoi ne pas le mettre dans mon code …. J’externalise toutes les configurations dans des ressources si ce n’est pas le cas (pour le moment une conf par defaut qui marche dans 90% des cas, et je garde le problème pour plus tard) J’écris mon script pour faire le start / stop …. Le fait d’avoir des chemins configurable fait que mes scripts sont configurable … J’écris mes documents d’installation A oui, je n’oublie pas d’inclure mon module de setup dans ma CI !!!

Nous avons maintenant : ENVIRONNEMENT Bénéfices Maîtrisé Versionné Reproductible Testable Généré régulièrement Développement QA Production / Client 3 minutes : conclusion demo Parler de l'idée de mettre un identifiant lié à la version du code dans le livrable déployé traçabilité RS: Faire le lien avec la session Build and CI Benefices :  en prod : abaisse le niveau de compétences requis pour l'installation (et le temps !) dev :  offre un environnement réinstallable (et reproductible chasse aux bugs - QA) cible aux développeurs test : automatisation et meme les environement de tests manuels sont plus souple

Le déploiement, compliqué ? Doit être configurable Ne pas confondre configurable et doit être configuré Configurable Développement QA Production / client Environnements Calcul de valeurs Configurable si je le désir Valeurs par defaut Et donc insister sur le fait que ca soit un problème compliqué. Notre installation, plus des environnements hétérogènes, … easy php : installer apache/php/mysql fonctionnels sur votre PC ne requiert aucune configuration. Il y a beaucoup de chose a configurer, mais il faut standardiser, homogénéiser et automatiser c’est ce que nous allons voir maintenant.

DEMONSTRATION Configuration Questions

DEMONSTRATION Les bonnes pratiques et les pièges Interagit mais indépendant de l'installation Utilisation de templates de configuration (Velocity, ERB, ...) Configuration = fonction (environnement, hardware, user, application ) Versions différentes par environnement Non versionné Je commence a écrire mon script qui met a jour la version. Je choisi de prendre une solution simple : arborescence svn : conf/outils/version Le script demande au début : qui (user) quoi (appli / version ) ou (server / env) … et après il fait tout tout seul. Quand je dis demande, il peut calculer certaines informations … Je peux l’exécuter quand je veux : pendant l’installation ou avant/après Du coup, quand j’installe il utilise mon script … accès svn ou fichier local ? Je peux pousser la configuration de manière asynchrone …. A oui , la plupart des configuration je les calculs …. calcul (ex Xms=%MEMORY%/3) standardisation de valeurs ( HTTP PORT = 8080, MYSQL PORT = 3306)....  surcharge de valeurs : QA : MYSQLPORT=3307 ...  Comment je traite le cas des valeurs définis plusieurs fois … * je met des priorités entre les 4 groupes, et je prend toujours dans le même sens * tiens, je rajoute un petit script qui me liste les doublons A oui, la conf cela doit se versionner, ca doit être traceable, comme des données, comme du code …

Favoriser les concepts plus que les outils Conclusion Concepts Favoriser les concepts plus que les outils Outils Les outils existent, ne réinventez pas la roue Choisissez celui adapté a vos besoins … si vos besoins changent … changez d’outils ! Choix Application Sans modifier l’application Configurable et installable ! Est-ce le but ou juste une étape ? But ? Au passage, je n’ai pas touché mon application. D’accord j’avais tout isolé dans des ressources, mais ce n’est pas difficile à faire. Le déploiement continu est plus dure a faire, car il nécessite de modifier l’application. On ne liste que quelques pistes de réflexions. Etape ! Si , on peut encore faire mieux …

Etapes suivantes: encore plus vite ! C’est possible ! L’application doit détecter le changement de configuration (ou être notifiée) Le code ne doit pas stocker localement la configuration initiale Chargement de la configuration à chaud L’application doit permettre de mettre à jour ses données sans redémarrer Chargement à chaud des données Je dois pouvoir mettre à jour mon application sans interrompre le service en cours Déploiement continu Je dois pouvoir mettre à jour le minimum de choses et le plus rapidement possible Installation incrémentale

Outils Conf et install Vous en vouliez ? En voila ! msiexec Installation msiexec Java webstart NuGet , openWrap… Conf et install http://docs.fabfile.org/0.9.2/ http://rubyhitsquad.com/Vlad_the_Deployer.html http://projects.puppetlabs.com/projects/puppet/wiki/About_Puppet http://www.capify.org/index.php/Capistrano http://heroku.com/ http://controltier.org/wiki/Main_Page

Questions By Agile4techos

ROTI (Return On Time Invested) 5 doigts : Excellente Super c'est exactement ce qu'il me fallait ! 4 doigts : Bonne Très intéressant, j’ai gagné plus que le temps que j’y ai passé. 3 doigts : Juste Moyenne Intéressant, sans plus. Je n’ai pas perdu mon temps. 2 doigts : Utile Bof ! J'ai perdu du temps. 1 doigt : Inutile Je n'ai rien appris. J’ai vraiment perdu mon temps