SlideShare a Scribd company logo
1 of 37
Download to read offline
Java la tête dans le nuage

         par Noël Bardelot
      Ingénieur chez So@t
Introduction

●   Qu'est-ce que le Cloud ?
●   Qu'est-ce que CloudBees ?
●   Ce qui sera abordé
●   Ce qui ne sera pas abordé (ce soir)
●   Les cinq « pourquoi »
●   Un voyage dans le nuage, pas à pas

                   Presentation by Noël Bardelot, So@t   2
Qu'est-ce que le Cloud ?

●   « La programmation dans le Cloud consiste à
    utiliser des ressources (matérielles et logicielles) qui
    sont fournies comme service à travers un réseau. »
    (traduction libre de Wikipedia)

●   Trois principales catégories de ressources :
     –   Infrastructure (IaaS): temps de calcul, mémoire, bande
         passante...
     –   Plateforme (PaaS): système, SGBD, conteneur J2E...
     –   Logiciel (SaaS): Google Docs, Tumblr...
●   Concepts : montée en charge, redondance, standards

                                      Presentation by Noël Bardelot, So@t   3
Qu'est-ce que CloudBees ?


●   Créé en 2010
●   Par Sacha Labourey, ancien directeur
    technique de JBoss
●   Vend un PaaS orienté Java
●   Devoxx France 2012


                   Presentation by Noël Bardelot, So@t   4
Ce qui sera abordé


●   CloudBees gratuit pour du logiciel libre
    –   Poste de développement Linux
    –   Une application Java SE développée sur Eclipse
    –   Git : dépôt de sources
    –   Maven : dépôts et constructions
    –   Jenkins : automatisation des constructions


                      Presentation by Noël Bardelot, So@t   5
Ce qui ne sera pas abordé


●   MySQL et le conteneur Web : revenez pour la
    prochaine soirée !
●   CloudBees pour J2E, qui est payant
●   Windows ou OS X
      ...mais grâce à Java vous vous sentirez comme chez vous

●   D'autres langages orientés Java (JRuby)


                           Presentation by Noël Bardelot, So@t   6
Cinq fois « pourquoi ? »

●   Posons nous la question cinq fois
    –   Pourquoi utiliser CloudBees? Parce qu'il rend la vie du
        développeur plus simple.
    –   Pourquoi ? On peut passer plus de temps à coder.
    –   Pourquoi ? CloudBees fournit des outils qui font beaucoup de
        choses fastidieuses à notre place.
    –   Pourquoi ? La plupart des choses tournent chez CloudBees, nous
        n'avons qu'à les configurer, ce qui est plus simple.
    –   Pourquoi ? Ce sont des outils standards, nous les connaissons
        déjà ! Nous les utilisons déjà tous les jours !


                            Presentation by Noël Bardelot, So@t          7
La pause XKCD
(du site xkcd.com de Randall Munroe)




         Presentation by Noël Bardelot, So@t   8
Pas à pas : préparation

1) Configurer le poste de développement
  •   JDK
  •   Eclipse
  •   DAVFS2
  •   Maven
  •   Git

2) Rejoindre la ruche CloudBees
  •   Créer un compte CloudBees
  •   Installer le SDK CloudBees
  •   Première visite du site

                                Presentation by Noël Bardelot, So@t   9
Pas à pas : Git (1)

●   Créer un nouveau dépôt Git dans CloudBees
●   Créer un couple de clefs (publique, privée) SSH
    ssh-keygen

●   Associer la clef publique au site CloudBees
       Help > Support > Account > SSH Keys
●   Cloner le dépôt Git dans l'espace de travail Eclipse
    git clone ssh://git@git.cloudbees.com/<projectid>/<repo>.git <repo>

●   Vérifier qu'on voit bien le dépôt à distance
    git remote show

                              Presentation by Noël Bardelot, So@t         10
Pas à pas : Git (2)

●   Paramétrer le fichier ~/.gitconfig
      [alias]
         graph = log --graph --full-history --all 
          --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"
      [user]
         email = user@mailserver.com
         name = John Doe
      [core]
         eol = crlf

●   Ce paramétrage peut aussi être fait avec
    la commande git config
                           Presentation by Noël Bardelot, So@t              11
Pas à pas : Git (3)

●   Créer un premier fichier nommé license.txt dans le
    répertoire du projet
    –   Vous pouvez utiliser par exemple la GPL v3: http://www.gnu.org/licenses/gpl-3.0.html

●   Pour débuter avec Git, afficher les commandes
        git
●   En cas de doute taper
        git <command> -h
            or
        git <command> --help

                                  Presentation by Noël Bardelot, So@t                          12
Pas à pas : Git (4)

●   Ajouter le fichier modifié au prochain commit
      git add license.txt
●   Exporter la variable EDITOR dans ~/.bashrc permet
    de changer l'éditeur pour les messages de commit
      export EDITOR=vim
●   Soumettre les changements à votre branche master
      git commit -v
●   Publier les changements sur le dépôt CloudBees
      git push origin master

                      Presentation by Noël Bardelot, So@t   13
La pause XKCD
(du site xkcd.com de Randall Munroe)




         Presentation by Noël Bardelot, So@t   14
Pas à pas : Maven (1)

●   Configurer /etc/fstab pour utiliser DAV
       https://repository-<projectid>.forge.cloudbees.com/snapshot/ /mnt/cloudbees/snapshot davfs
       rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0

       https://repository-<projectid>.forge.cloudbees.com/release/ /mnt/cloudbees/release davfs
       rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0

       https://repository-<projectid>.forge.cloudbees.com/private/ /mnt/cloudbees/private davfs
       rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0

       https://repository-<projectid>.forge.cloudbees.com/backup/ /mnt/cloudbees/backup davfs
       rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0


●   Configurer /etc/davfs2/davfs2.conf
       use_locks 0
       ask_auth 1
       if_match_bug 1
       ignore_home kernoops

●   Ajouter l'utilisateur au groupe davfs2
       sudo usermod -aG davfs2 <user>


                                           Presentation by Noël Bardelot, So@t                      15
Pas à pas : Maven (2)

●   Déclarer les serveurs dans ~/.m2/settings.xml
    <servers>
        <server>
        <id>cloudbees-snapshot</id>
        <username>userid</username>
        <password>password</password>
        </server>
        <server>
        <id>cloudbees-release</id>
        <username>userid</username>
        <password>password</password>
        </server>
    </servers>

●   Les serveurs pourront être reliés par leur ID dans le
    fichier pom.xml de chaque projet
●   Attention userid n'est pas l'adresse e-mail !
                               Presentation by Noël Bardelot, So@t   16
Pas à pas : Maven (3)

●   Une clef maîtresse pour chiffrer les autres
       mvn --encrypt-master-password S3cr3t_p4ssPhr4se
●   Créer le fichier ~/.m2/settings-security.xml pour la stocker
       <settingsSecurity>
           <master>{encrypted master password}</master>
       </settingsSecurity>
●   Utiliser la clef maîtresse pour créer d'autres clefs
       mvn --encrypt-password cloudbeespassword
●   Utiliser ~/.m2/settings.xml pour les stocker
       <password>{encrypted password}</password>



                           Presentation by Noël Bardelot, So@t     17
Pas à pas : Maven (4)

●   Créer l'arborescence, et la donner au groupe
      /mnt/cloudbees:
      drwxr-xr-x 2 root   davfs2   4096   nov.      3   00:43     backup
      drwxr-xr-x 2 root   davfs2   4096   nov.      3   00:43     private
      drwxr-xr-x 2 root   davfs2   4096   nov.      3   00:43     release
      drwxr-xr-x 2 root   davfs2   4096   nov.      3   00:43     snapshot
●   Monter le dépôt privé avec DAV
      sudo mount /mnt/cloudbees/private
●   Y déposer les fichiers de configuration Maven
      sudo cp ~/.m2/settings.xml /mnt/cloudbees/private
      sudo cp ~/.m2/settings-security.xml /mnt/cloudbees/private
●   Ils sont désormais utilisables depuis Jenkins

                            Presentation by Noël Bardelot, So@t              18
Pas à pas : Maven (5)

●   Configurer le déploiement vers CloudBees
    dans le fichier pom.xml
    <distributionManagement>
        <repository>
             <id>cloudbees-release</id>
             <name>Cloudbees Releases</name>
             <url>dav:https://repository-<projectid>.forge.cloudbees.com/release</url>
        </repository>
        <snapshotRepository>
             <id>cloudbees-snapshot</id>
             <name>Cloudbees Snapshots</name>
             <url>dav:https://repository-<projectid>.forge.cloudbees.com/snapshot</url>
        </snapshotRepository>
    </distributionManagement>




                               Presentation by Noël Bardelot, So@t                        19
Pas à pas : Maven (6)

●   Il faut également une extension configurée pour utiliser DAV,
    celle-ci étant conseillée par CloudBees
      <build>
          <extensions>
              <extension>
                  <groupId>org.apache.maven.wagon</groupId>
                  <artifactId>wagon-webdav-jackrabbit</artifactId>
                  <version>2.2</version>
              </extension>
          </extensions>
      </build>
●   Vous pouvez maintenant déployer votre projet depuis le
    poste de développement vers CloudBees avec l'habituel
      mvn deploy



                            Presentation by Noël Bardelot, So@t      20
La pause XKCD
(du site xkcd.com de Randall Munroe)




         Presentation by Noël Bardelot, So@t   21
Pas à pas : Eclipse (1)
●   Utilisez l'extension m2e pour créer un fichier
    pom.xml




●   … ou importez un fichier pom.xml existant
●   Dans tous les cas n'oubliez pas d'adapter votre fichier
    pom.xml de la manière décrite dans la partie
    « Maven » de la présentation !

                    Presentation by Noël Bardelot, So@t       22
Pas à pas : Eclipse (2)

●   Ajouter le support CloudBees au projet Eclipse
    –   Faire un clic droit sur le projet
    –   CloudBees > Add CloudBees Support
●   Plusieurs options disponibles
    –   New Jenkins Job
    –   Run Local
    –   Deploy to RUN@Cloud
    –   Remove CloudBees Support
                        Presentation by Noël Bardelot, So@t   23
Pas à pas : Eclipse (3)
●   Créer un programme Java




                 Presentation by Noël Bardelot, So@t   24
Pas à pas : Eclipse (4)
●   Créer un test avec JUnit que Maven lancera




                  Presentation by Noël Bardelot, So@t   25
Pas à pas : Eclipse (5)
●   Ajouter les dépendances du projet dans le fichier pom.xml
      <dependencies>
          <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.10</version>
          </dependency>
          <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.6.6</version>
          </dependency>
          <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.6.6</version>
          </dependency>
          <dependency>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
          <version>1.7</version>
          </dependency>
      </dependencies>




                                  Presentation by Noël Bardelot, So@t   26
Pas à pas : Eclipse (6)
●   Ajouter une configuration log4j.xml dans les
    deux répertoires de ressources
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
    <log4j:configuration>
            <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
                <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern"
                           value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
                </layout>
            </appender>
        <root>
            <priority value="debug"></priority>
            <appender-ref ref="stdout" />
        </root>
    </log4j:configuration>



                            Presentation by Noël Bardelot, So@t                 27
Pas à pas : Eclipse (7)


●   Il reste une alerte à la compilation du JAR
      [WARNING] Using platform encoding (UTF-8 actually) to copy filtered
      resources, i.e. build is platform dependent!

●   Corriger ce problème dans le fichier pom.xml
      <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>




                          Presentation by Noël Bardelot, So@t                  28
Pas à pas : Eclipse (8)
●   Afficher les changements de notre dépôt Git local
      git status

●   Ajouter les fichiers/répertoires modifiés à la
    prochaine révision
      git add <list of directories and files>

●   Créer la nouvelle révision sur le dépôt local
      git commit -v

●   Pousser les révisions locales vers la branche origin
    dans le dépôt CloudBees
      git push origin master



                               Presentation by Noël Bardelot, So@t   29
Pas à pas : Eclipse (9)
●   Nettoyer et compiler
       mvn clean compile

●   Déployer sur le dépôt Maven local
       mvn install

●   Et si tout va bien, déployer pour la première fois sur
    le dépôt Maven chez CloudBees
       mvn deploy
●   Vérifier les traces : s'il n'y a pas d'erreur les artéfacts se trouvent
    dans le dépôt Maven snapshot chez CloudBees, ce que vous
    pouvez voir ou bien depuis le site, ou bien depuis votre montage
    DAV


                            Presentation by Noël Bardelot, So@t               30
La pause XKCD
(du site xkcd.com de Randall Munroe)




         Presentation by Noël Bardelot, So@t   31
Pas à pas : Jenkins (1)

●   Pour compiler/déployer depuis le poste de travail quand
    Jenkins peut le faire pour nous ?
●   Création d'un job Jenkins
    –   Aller sur la page Jenkins depuis le lien 'Builds' dans CloudBees
    –   Créer un nouveau job
    –   Choisir Free-style project et l'appeler <repo> origin HEAD
●   Comme le temps c'est de l'argent également dans le Cloud,
    faites attention à configurer vos jobs pour n'utiliser que ce
    dont vous avez réellement besoin



                             Presentation by Noël Bardelot, So@t           32
Pas à pas : Jenkins (2)
●   Rappelez-vous des fichiers settings.xml et
    settings-security.xml que vous aviez copé dans le
    dépôt Maven privé
●   Disponible par le chemin /private depuis Jenkins
●   Pour déployer depuis Jenkins il faut configurer son
    utilisation de Maven pour qu'il le sache
    –   Cliquer sur Jenkins administration puis System configuration
    –   Trouver la propriété nommée MAVEN_OPTS global
    –   Lui donner la valeur suivante
        -Dsettings.security=/private/<projectid>/settings-security.xml




                                   Presentation by Noël Bardelot, So@t   33
Pas à pas : Jenkins (3)

●   Retourner au job, et cliquer configure
●   Configurer le dépôt Git
    –   Repository URL:
        ssh://git@git.cloudbees.com/<projectid>/<repo>.git

    –   Branches to build: origin/HEAD
●   Dans la section Build
    –   Add a high level maven goal
    –   Set the goal:
        deploy -s /private/<projectid>/settings.xml

                            Presentation by Noël Bardelot, So@t   34
Pas à pas : Jenkins (4)
●   Les autres options sur lesquelles s'attarder
    –   Manual builds
    –   Garbage your old artifacts (since it's a snapshot job)
    –   Allow parrallel builds
    –   Publish Javadoc and/or JUnit reports
●   Jenkins est fourni chez CloudBees avec une poignée
    d'extensions, et vous pouvez en installer d'autres
●   Si votre objectif est un projet Web sous TomCat ou un
    projet J2E n'oubliez pas que Jenkins peut effectuer le
    déploiement automatique sur le conteneur

                            Presentation by Noël Bardelot, So@t   35
Place aux questions




    Presentation by Noël Bardelot, So@t   36
Licence
    Cette présentation est publiée sous la licence Creative
                     Common BY-NC-ND

Vous êtes libre de reproduire distribuer et communiquer la présentation, en l'attribuant à
            son auteur, sans la dériver ni en faire une utilisation commerciale.


                   Pour lire la licence complète :
      http://creativecommons.org/licenses/by-nc-nd/2.0/fr/




                               Presentation by Noël Bardelot, So@t                       37

More Related Content

What's hot

Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuAhmed Archive
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Fabien Arcellier
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?ALTER WAY
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation dockerOlivier Eeckhoutte
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.ioNicolas Hennion
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Aurelien Navarre
 
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...OpenNebula Project
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
Varnish & blue/green deployments
Varnish & blue/green deploymentsVarnish & blue/green deployments
Varnish & blue/green deploymentsOxalide
 
Présentation de nagios
Présentation de nagiosPrésentation de nagios
Présentation de nagiosilyassin
 

What's hot (20)

Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Squid squid guard
Squid squid guardSquid squid guard
Squid squid guard
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
 
Squid
SquidSquid
Squid
 
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Varnish & blue/green deployments
Varnish & blue/green deploymentsVarnish & blue/green deployments
Varnish & blue/green deployments
 
Présentation de nagios
Présentation de nagiosPrésentation de nagios
Présentation de nagios
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 

Viewers also liked

2. wco intro wco
2. wco intro wco2. wco intro wco
2. wco intro wcosugogo
 
4. wco instruments safe rkc
4. wco instruments safe rkc4. wco instruments safe rkc
4. wco instruments safe rkcsugogo
 
Apres leplat analyse_activite
Apres leplat analyse_activiteApres leplat analyse_activite
Apres leplat analyse_activiteRose Cavalcante
 
5. wco dm introduction and background
5. wco dm introduction and background5. wco dm introduction and background
5. wco dm introduction and backgroundsugogo
 
Expert Folder soldes Janvier 2014 FR
Expert Folder soldes Janvier 2014 FRExpert Folder soldes Janvier 2014 FR
Expert Folder soldes Janvier 2014 FRExpert
 
10 gn cand cbm
10 gn cand cbm10 gn cand cbm
10 gn cand cbmsugogo
 
Promoción de la inversión privada en carreteras
Promoción de la inversión privada en carreterasPromoción de la inversión privada en carreteras
Promoción de la inversión privada en carreterasAlcides Velazco
 
7. information modelling
7. information modelling7. information modelling
7. information modellingsugogo
 
Jacques roubaud et Les animaux de tout le monde
Jacques roubaud et Les animaux de tout le mondeJacques roubaud et Les animaux de tout le monde
Jacques roubaud et Les animaux de tout le mondeUniversity of Connecticut
 
French Right of REVOLUTION & Political CORRUPTION
French   Right of REVOLUTION & Political CORRUPTIONFrench   Right of REVOLUTION & Political CORRUPTION
French Right of REVOLUTION & Political CORRUPTIONVogelDenise
 
Louaize bc higher education in lebanon french w
Louaize bc higher education in lebanon french wLouaize bc higher education in lebanon french w
Louaize bc higher education in lebanon french wIAU_Past_Conferences
 
Utrecht sb- parallel workshops list french
Utrecht  sb- parallel workshops list frenchUtrecht  sb- parallel workshops list french
Utrecht sb- parallel workshops list frenchIAU_Past_Conferences
 
French 2A Review Beginning
French 2A Review BeginningFrench 2A Review Beginning
French 2A Review Beginningmorochex
 
Présentation SIFE cycle de visite 1 (2012)
Présentation SIFE cycle de visite 1 (2012)Présentation SIFE cycle de visite 1 (2012)
Présentation SIFE cycle de visite 1 (2012)kaoutara007
 
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7Solutions IT et Business
 
Le rapport de l'Afsca
Le rapport de l'AfscaLe rapport de l'Afsca
Le rapport de l'Afscalesoirbe
 

Viewers also liked (20)

2. wco intro wco
2. wco intro wco2. wco intro wco
2. wco intro wco
 
4. wco instruments safe rkc
4. wco instruments safe rkc4. wco instruments safe rkc
4. wco instruments safe rkc
 
apple
appleapple
apple
 
Apres leplat analyse_activite
Apres leplat analyse_activiteApres leplat analyse_activite
Apres leplat analyse_activite
 
5. wco dm introduction and background
5. wco dm introduction and background5. wco dm introduction and background
5. wco dm introduction and background
 
Expert Folder soldes Janvier 2014 FR
Expert Folder soldes Janvier 2014 FRExpert Folder soldes Janvier 2014 FR
Expert Folder soldes Janvier 2014 FR
 
10 gn cand cbm
10 gn cand cbm10 gn cand cbm
10 gn cand cbm
 
Promoción de la inversión privada en carreteras
Promoción de la inversión privada en carreterasPromoción de la inversión privada en carreteras
Promoción de la inversión privada en carreteras
 
7. information modelling
7. information modelling7. information modelling
7. information modelling
 
Jacques roubaud et Les animaux de tout le monde
Jacques roubaud et Les animaux de tout le mondeJacques roubaud et Les animaux de tout le monde
Jacques roubaud et Les animaux de tout le monde
 
French Right of REVOLUTION & Political CORRUPTION
French   Right of REVOLUTION & Political CORRUPTIONFrench   Right of REVOLUTION & Political CORRUPTION
French Right of REVOLUTION & Political CORRUPTION
 
Louaize bc higher education in lebanon french w
Louaize bc higher education in lebanon french wLouaize bc higher education in lebanon french w
Louaize bc higher education in lebanon french w
 
Sp ws1 jean dominique assié
Sp ws1 jean dominique assiéSp ws1 jean dominique assié
Sp ws1 jean dominique assié
 
Utrecht sb- parallel workshops list french
Utrecht  sb- parallel workshops list frenchUtrecht  sb- parallel workshops list french
Utrecht sb- parallel workshops list french
 
French 2A Review Beginning
French 2A Review BeginningFrench 2A Review Beginning
French 2A Review Beginning
 
title
titletitle
title
 
French 040412
French 040412French 040412
French 040412
 
Présentation SIFE cycle de visite 1 (2012)
Présentation SIFE cycle de visite 1 (2012)Présentation SIFE cycle de visite 1 (2012)
Présentation SIFE cycle de visite 1 (2012)
 
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7
 
Le rapport de l'Afsca
Le rapport de l'AfscaLe rapport de l'Afsca
Le rapport de l'Afsca
 

Similar to Dev cloud java : la tête dans les nuages

Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
Virt lightning-montreal-linux-meetup-2020-02
Virt lightning-montreal-linux-meetup-2020-02Virt lightning-montreal-linux-meetup-2020-02
Virt lightning-montreal-linux-meetup-2020-02Gonéri Le Bouder
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Pierre Ternon
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm
 
Drush make driven development
Drush make driven developmentDrush make driven development
Drush make driven developmentSébastien Corbin
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printempsJulien Maitrehenry
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à dockerBoubker ABERWAG
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...AbdellahELMAMOUN
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfHamida Rebai Trabelsi
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureParis Container Day
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Xavier NOPRE
 
2023-02-02 - Marvelous March
2023-02-02 - Marvelous March2023-02-02 - Marvelous March
2023-02-02 - Marvelous MarchFrederic Leger
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...AZUG FR
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
 
Virtualisation et intégration des applications d'entreprise en environnement ...
Virtualisation et intégration des applications d'entreprise en environnement ...Virtualisation et intégration des applications d'entreprise en environnement ...
Virtualisation et intégration des applications d'entreprise en environnement ...Kouotou Aboubakar Sidiki, Eng, PMP
 

Similar to Dev cloud java : la tête dans les nuages (20)

Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Virt lightning-montreal-linux-meetup-2020-02
Virt lightning-montreal-linux-meetup-2020-02Virt lightning-montreal-linux-meetup-2020-02
Virt lightning-montreal-linux-meetup-2020-02
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et Administration
 
Drush make driven development
Drush make driven developmentDrush make driven development
Drush make driven development
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à docker
 
Vagrant - Concept
Vagrant - ConceptVagrant - Concept
Vagrant - Concept
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
2023-02-02 - Marvelous March
2023-02-02 - Marvelous March2023-02-02 - Marvelous March
2023-02-02 - Marvelous March
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 
Virtualisation et intégration des applications d'entreprise en environnement ...
Virtualisation et intégration des applications d'entreprise en environnement ...Virtualisation et intégration des applications d'entreprise en environnement ...
Virtualisation et intégration des applications d'entreprise en environnement ...
 

More from SOAT

Back from Microsoft //Build 2018
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018SOAT
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libéréeSOAT
 
Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !SOAT
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseSOAT
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
 
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-DurandSOAT
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-DurandSOAT
 
2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-DurandSOAT
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido SOAT
 
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotSOAT
 
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014SOAT
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...SOAT
 
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014SOAT
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soatSOAT
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...SOAT
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014SOAT
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)SOAT
 
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#SOAT
 
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatSOAT
 
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesSOAT
 

More from SOAT (20)

Back from Microsoft //Build 2018
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libérée
 
Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entreprise
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
 
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand
 
2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
 
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
 
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
 
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)
 
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
 
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
 

Dev cloud java : la tête dans les nuages

  • 1. Java la tête dans le nuage par Noël Bardelot Ingénieur chez So@t
  • 2. Introduction ● Qu'est-ce que le Cloud ? ● Qu'est-ce que CloudBees ? ● Ce qui sera abordé ● Ce qui ne sera pas abordé (ce soir) ● Les cinq « pourquoi » ● Un voyage dans le nuage, pas à pas Presentation by Noël Bardelot, So@t 2
  • 3. Qu'est-ce que le Cloud ? ● « La programmation dans le Cloud consiste à utiliser des ressources (matérielles et logicielles) qui sont fournies comme service à travers un réseau. » (traduction libre de Wikipedia) ● Trois principales catégories de ressources : – Infrastructure (IaaS): temps de calcul, mémoire, bande passante... – Plateforme (PaaS): système, SGBD, conteneur J2E... – Logiciel (SaaS): Google Docs, Tumblr... ● Concepts : montée en charge, redondance, standards Presentation by Noël Bardelot, So@t 3
  • 4. Qu'est-ce que CloudBees ? ● Créé en 2010 ● Par Sacha Labourey, ancien directeur technique de JBoss ● Vend un PaaS orienté Java ● Devoxx France 2012 Presentation by Noël Bardelot, So@t 4
  • 5. Ce qui sera abordé ● CloudBees gratuit pour du logiciel libre – Poste de développement Linux – Une application Java SE développée sur Eclipse – Git : dépôt de sources – Maven : dépôts et constructions – Jenkins : automatisation des constructions Presentation by Noël Bardelot, So@t 5
  • 6. Ce qui ne sera pas abordé ● MySQL et le conteneur Web : revenez pour la prochaine soirée ! ● CloudBees pour J2E, qui est payant ● Windows ou OS X ...mais grâce à Java vous vous sentirez comme chez vous ● D'autres langages orientés Java (JRuby) Presentation by Noël Bardelot, So@t 6
  • 7. Cinq fois « pourquoi ? » ● Posons nous la question cinq fois – Pourquoi utiliser CloudBees? Parce qu'il rend la vie du développeur plus simple. – Pourquoi ? On peut passer plus de temps à coder. – Pourquoi ? CloudBees fournit des outils qui font beaucoup de choses fastidieuses à notre place. – Pourquoi ? La plupart des choses tournent chez CloudBees, nous n'avons qu'à les configurer, ce qui est plus simple. – Pourquoi ? Ce sont des outils standards, nous les connaissons déjà ! Nous les utilisons déjà tous les jours ! Presentation by Noël Bardelot, So@t 7
  • 8. La pause XKCD (du site xkcd.com de Randall Munroe) Presentation by Noël Bardelot, So@t 8
  • 9. Pas à pas : préparation 1) Configurer le poste de développement • JDK • Eclipse • DAVFS2 • Maven • Git 2) Rejoindre la ruche CloudBees • Créer un compte CloudBees • Installer le SDK CloudBees • Première visite du site Presentation by Noël Bardelot, So@t 9
  • 10. Pas à pas : Git (1) ● Créer un nouveau dépôt Git dans CloudBees ● Créer un couple de clefs (publique, privée) SSH ssh-keygen ● Associer la clef publique au site CloudBees Help > Support > Account > SSH Keys ● Cloner le dépôt Git dans l'espace de travail Eclipse git clone ssh://git@git.cloudbees.com/<projectid>/<repo>.git <repo> ● Vérifier qu'on voit bien le dépôt à distance git remote show Presentation by Noël Bardelot, So@t 10
  • 11. Pas à pas : Git (2) ● Paramétrer le fichier ~/.gitconfig [alias] graph = log --graph --full-history --all --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s" [user] email = user@mailserver.com name = John Doe [core] eol = crlf ● Ce paramétrage peut aussi être fait avec la commande git config Presentation by Noël Bardelot, So@t 11
  • 12. Pas à pas : Git (3) ● Créer un premier fichier nommé license.txt dans le répertoire du projet – Vous pouvez utiliser par exemple la GPL v3: http://www.gnu.org/licenses/gpl-3.0.html ● Pour débuter avec Git, afficher les commandes git ● En cas de doute taper git <command> -h or git <command> --help Presentation by Noël Bardelot, So@t 12
  • 13. Pas à pas : Git (4) ● Ajouter le fichier modifié au prochain commit git add license.txt ● Exporter la variable EDITOR dans ~/.bashrc permet de changer l'éditeur pour les messages de commit export EDITOR=vim ● Soumettre les changements à votre branche master git commit -v ● Publier les changements sur le dépôt CloudBees git push origin master Presentation by Noël Bardelot, So@t 13
  • 14. La pause XKCD (du site xkcd.com de Randall Munroe) Presentation by Noël Bardelot, So@t 14
  • 15. Pas à pas : Maven (1) ● Configurer /etc/fstab pour utiliser DAV https://repository-<projectid>.forge.cloudbees.com/snapshot/ /mnt/cloudbees/snapshot davfs rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0 https://repository-<projectid>.forge.cloudbees.com/release/ /mnt/cloudbees/release davfs rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0 https://repository-<projectid>.forge.cloudbees.com/private/ /mnt/cloudbees/private davfs rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0 https://repository-<projectid>.forge.cloudbees.com/backup/ /mnt/cloudbees/backup davfs rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0 ● Configurer /etc/davfs2/davfs2.conf use_locks 0 ask_auth 1 if_match_bug 1 ignore_home kernoops ● Ajouter l'utilisateur au groupe davfs2 sudo usermod -aG davfs2 <user> Presentation by Noël Bardelot, So@t 15
  • 16. Pas à pas : Maven (2) ● Déclarer les serveurs dans ~/.m2/settings.xml <servers> <server> <id>cloudbees-snapshot</id> <username>userid</username> <password>password</password> </server> <server> <id>cloudbees-release</id> <username>userid</username> <password>password</password> </server> </servers> ● Les serveurs pourront être reliés par leur ID dans le fichier pom.xml de chaque projet ● Attention userid n'est pas l'adresse e-mail ! Presentation by Noël Bardelot, So@t 16
  • 17. Pas à pas : Maven (3) ● Une clef maîtresse pour chiffrer les autres mvn --encrypt-master-password S3cr3t_p4ssPhr4se ● Créer le fichier ~/.m2/settings-security.xml pour la stocker <settingsSecurity> <master>{encrypted master password}</master> </settingsSecurity> ● Utiliser la clef maîtresse pour créer d'autres clefs mvn --encrypt-password cloudbeespassword ● Utiliser ~/.m2/settings.xml pour les stocker <password>{encrypted password}</password> Presentation by Noël Bardelot, So@t 17
  • 18. Pas à pas : Maven (4) ● Créer l'arborescence, et la donner au groupe /mnt/cloudbees: drwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 backup drwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 private drwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 release drwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 snapshot ● Monter le dépôt privé avec DAV sudo mount /mnt/cloudbees/private ● Y déposer les fichiers de configuration Maven sudo cp ~/.m2/settings.xml /mnt/cloudbees/private sudo cp ~/.m2/settings-security.xml /mnt/cloudbees/private ● Ils sont désormais utilisables depuis Jenkins Presentation by Noël Bardelot, So@t 18
  • 19. Pas à pas : Maven (5) ● Configurer le déploiement vers CloudBees dans le fichier pom.xml <distributionManagement> <repository> <id>cloudbees-release</id> <name>Cloudbees Releases</name> <url>dav:https://repository-<projectid>.forge.cloudbees.com/release</url> </repository> <snapshotRepository> <id>cloudbees-snapshot</id> <name>Cloudbees Snapshots</name> <url>dav:https://repository-<projectid>.forge.cloudbees.com/snapshot</url> </snapshotRepository> </distributionManagement> Presentation by Noël Bardelot, So@t 19
  • 20. Pas à pas : Maven (6) ● Il faut également une extension configurée pour utiliser DAV, celle-ci étant conseillée par CloudBees <build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-webdav-jackrabbit</artifactId> <version>2.2</version> </extension> </extensions> </build> ● Vous pouvez maintenant déployer votre projet depuis le poste de développement vers CloudBees avec l'habituel mvn deploy Presentation by Noël Bardelot, So@t 20
  • 21. La pause XKCD (du site xkcd.com de Randall Munroe) Presentation by Noël Bardelot, So@t 21
  • 22. Pas à pas : Eclipse (1) ● Utilisez l'extension m2e pour créer un fichier pom.xml ● … ou importez un fichier pom.xml existant ● Dans tous les cas n'oubliez pas d'adapter votre fichier pom.xml de la manière décrite dans la partie « Maven » de la présentation ! Presentation by Noël Bardelot, So@t 22
  • 23. Pas à pas : Eclipse (2) ● Ajouter le support CloudBees au projet Eclipse – Faire un clic droit sur le projet – CloudBees > Add CloudBees Support ● Plusieurs options disponibles – New Jenkins Job – Run Local – Deploy to RUN@Cloud – Remove CloudBees Support Presentation by Noël Bardelot, So@t 23
  • 24. Pas à pas : Eclipse (3) ● Créer un programme Java Presentation by Noël Bardelot, So@t 24
  • 25. Pas à pas : Eclipse (4) ● Créer un test avec JUnit que Maven lancera Presentation by Noël Bardelot, So@t 25
  • 26. Pas à pas : Eclipse (5) ● Ajouter les dépendances du projet dans le fichier pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.7</version> </dependency> </dependencies> Presentation by Noël Bardelot, So@t 26
  • 27. Pas à pas : Eclipse (6) ● Ajouter une configuration log4j.xml dans les deux répertoires de ressources <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > <log4j:configuration> <appender name="stdout" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" /> </layout> </appender> <root> <priority value="debug"></priority> <appender-ref ref="stdout" /> </root> </log4j:configuration> Presentation by Noël Bardelot, So@t 27
  • 28. Pas à pas : Eclipse (7) ● Il reste une alerte à la compilation du JAR [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! ● Corriger ce problème dans le fichier pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> Presentation by Noël Bardelot, So@t 28
  • 29. Pas à pas : Eclipse (8) ● Afficher les changements de notre dépôt Git local git status ● Ajouter les fichiers/répertoires modifiés à la prochaine révision git add <list of directories and files> ● Créer la nouvelle révision sur le dépôt local git commit -v ● Pousser les révisions locales vers la branche origin dans le dépôt CloudBees git push origin master Presentation by Noël Bardelot, So@t 29
  • 30. Pas à pas : Eclipse (9) ● Nettoyer et compiler mvn clean compile ● Déployer sur le dépôt Maven local mvn install ● Et si tout va bien, déployer pour la première fois sur le dépôt Maven chez CloudBees mvn deploy ● Vérifier les traces : s'il n'y a pas d'erreur les artéfacts se trouvent dans le dépôt Maven snapshot chez CloudBees, ce que vous pouvez voir ou bien depuis le site, ou bien depuis votre montage DAV Presentation by Noël Bardelot, So@t 30
  • 31. La pause XKCD (du site xkcd.com de Randall Munroe) Presentation by Noël Bardelot, So@t 31
  • 32. Pas à pas : Jenkins (1) ● Pour compiler/déployer depuis le poste de travail quand Jenkins peut le faire pour nous ? ● Création d'un job Jenkins – Aller sur la page Jenkins depuis le lien 'Builds' dans CloudBees – Créer un nouveau job – Choisir Free-style project et l'appeler <repo> origin HEAD ● Comme le temps c'est de l'argent également dans le Cloud, faites attention à configurer vos jobs pour n'utiliser que ce dont vous avez réellement besoin Presentation by Noël Bardelot, So@t 32
  • 33. Pas à pas : Jenkins (2) ● Rappelez-vous des fichiers settings.xml et settings-security.xml que vous aviez copé dans le dépôt Maven privé ● Disponible par le chemin /private depuis Jenkins ● Pour déployer depuis Jenkins il faut configurer son utilisation de Maven pour qu'il le sache – Cliquer sur Jenkins administration puis System configuration – Trouver la propriété nommée MAVEN_OPTS global – Lui donner la valeur suivante -Dsettings.security=/private/<projectid>/settings-security.xml Presentation by Noël Bardelot, So@t 33
  • 34. Pas à pas : Jenkins (3) ● Retourner au job, et cliquer configure ● Configurer le dépôt Git – Repository URL: ssh://git@git.cloudbees.com/<projectid>/<repo>.git – Branches to build: origin/HEAD ● Dans la section Build – Add a high level maven goal – Set the goal: deploy -s /private/<projectid>/settings.xml Presentation by Noël Bardelot, So@t 34
  • 35. Pas à pas : Jenkins (4) ● Les autres options sur lesquelles s'attarder – Manual builds – Garbage your old artifacts (since it's a snapshot job) – Allow parrallel builds – Publish Javadoc and/or JUnit reports ● Jenkins est fourni chez CloudBees avec une poignée d'extensions, et vous pouvez en installer d'autres ● Si votre objectif est un projet Web sous TomCat ou un projet J2E n'oubliez pas que Jenkins peut effectuer le déploiement automatique sur le conteneur Presentation by Noël Bardelot, So@t 35
  • 36. Place aux questions Presentation by Noël Bardelot, So@t 36
  • 37. Licence Cette présentation est publiée sous la licence Creative Common BY-NC-ND Vous êtes libre de reproduire distribuer et communiquer la présentation, en l'attribuant à son auteur, sans la dériver ni en faire une utilisation commerciale. Pour lire la licence complète : http://creativecommons.org/licenses/by-nc-nd/2.0/fr/ Presentation by Noël Bardelot, So@t 37