Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
Arnaud Tournier committed May 20, 2019
1 parent fa50862 commit bcedaf5
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 17 deletions.
20 changes: 14 additions & 6 deletions formation-deploiement-jee/index.ad
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,23 @@
////
:revealjs_transition: zoom
Déploiement Java EE
UTI Blagnac - 2016 - LTE Consulting
UTI Blagnac - 2019 - Stack Labs
:source-highlighter: pygments
////

== Arnaud Tournier

Développeur, formateur et architecte à **LTE Consulting**.
Directeur Recherche et Développement à **Stack Labs**.

Speaker **Devoxx**, **GWT.create**, **Paris**/**Toulouse JUG**, etc...
Architecte, Développeur, Formateur et Speaker

Email : ltearno@gmail.com
Spécialiste en systèmes distribués et en cybersécurité

Email : arnaud.tournier@stack-labs.com

Twitter : @ltearno

Web : www.lteconsulting.fr
Web : www.stack-labs.com

Full stack (x86_64 to JavaScript)

Expand Down Expand Up @@ -73,6 +75,8 @@ image::dataCenter.jpg[height=400]
- **déploiement** et mises à jour,
- surveillance, interventions d'urgence...*.

Métier formalisé comme SRE : Service Reliability Engineer

=== Qualité et vitesse

Il faut aller vite et bien.
Expand Down Expand Up @@ -168,9 +172,11 @@ image::monoServeur.png[]

=== Multiplier les serveurs

**Scalabilité horizontale**.

En adaptant le logiciel, on peut répliquer l'application sur plusieurs serveurs (cluster).

**Scalabilité horizontale**.
Ceci va permettre de s'appuyer sur du matériel grand public (avec assez peu de performances).

=== Web 2.0

Expand All @@ -184,6 +190,8 @@ Les architectures modernes sont composées de multiples serveurs exécutant de m

Elles fournissent des services universellement accessibles.

Elles répondent dynamiquement à la charge, tout en optimisant le coût des resources informatiques.

== Déploiement distribué

Le déploiement distribué pose de nombreux problèmes passionnants :
Expand Down
12 changes: 7 additions & 5 deletions formation-deploiement-jee/index.html
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="author" content="Arnaud Tournier"><title>Déploiement Java EE</title><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui" name="viewport"><link href="reveal.js/css/reveal.css" rel="stylesheet"><link rel="stylesheet" href="reveal.js/css/theme/moon.css" id="theme"><link href="reveal.js/lib/css/zenburn.css" rel="stylesheet"><script>document.write( '<link rel="stylesheet" href="reveal.js/css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );</script></head><body><div class="reveal"><div class="slides"><section><h1>Déploiement Java EE</h1><p><small>Arnaud Tournier</small></p></section><section><section id="_arnaud_tournier"><h2>Arnaud Tournier</h2><div class="paragraph"><p>Développeur, formateur et architecte à <strong>LTE Consulting</strong>.</p></div><div class="paragraph"><p>Speaker <strong>Devoxx</strong>, <strong>GWT.create</strong>, <strong>Paris</strong>/<strong>Toulouse JUG</strong>, etc&#8230;&#8203;</p></div><div class="paragraph"><p>Email : <a href="mailto:ltearno@gmail.com">ltearno@gmail.com</a></p></div><div class="paragraph"><p>Twitter : @ltearno</p></div><div class="paragraph"><p>Web : www.lteconsulting.fr</p></div><div class="paragraph"><p>Full stack (x86_64 to JavaScript)</p></div></section><section id="_urls"><h2>URLs</h2><div class="paragraph"><p><a href="http://lteconsulting.fr/javaee-deploiement/">lteconsulting.fr/javaee-deploiement/</a></p></div>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="author" content="Arnaud Tournier"><title>Déploiement Java EE</title><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui" name="viewport"><link href="reveal.js/css/reveal.css" rel="stylesheet"><link rel="stylesheet" href="reveal.js/css/theme/moon.css" id="theme"><link href="reveal.js/lib/css/zenburn.css" rel="stylesheet"><script>document.write( '<link rel="stylesheet" href="reveal.js/css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );</script></head><body><div class="reveal"><div class="slides"><section><h1>Déploiement Java EE</h1><p><small>Arnaud Tournier</small></p></section><section><section id="_arnaud_tournier"><h2>Arnaud Tournier</h2><div class="paragraph"><p>Directeur Recherche et Développement à <strong>Stack Labs</strong>.</p></div><div class="paragraph"><p>Architecte, Développeur, Formateur et Speaker</p></div><div class="paragraph"><p>Spécialiste en systèmes distribués et en cybersécurité</p></div><div class="paragraph"><p>Email : <a href="mailto:arnaud.tournier@stack-labs.com">arnaud.tournier@stack-labs.com</a></p></div><div class="paragraph"><p>Twitter : @ltearno</p></div><div class="paragraph"><p>Web : www.stack-labs.com</p></div><div class="paragraph"><p>Full stack (x86_64 to JavaScript)</p></div></section><section id="_urls"><h2>URLs</h2><div class="paragraph"><p><a href="http://lteconsulting.fr/javaee-deploiement/">lteconsulting.fr/javaee-deploiement/</a></p></div>
<div class="paragraph"><p>TP : <a href="http://lteconsulting.fr/javaee-deploiement/tp.html">lteconsulting.fr/javaee-deploiement/tp.html</a></p></div></section></section>
<section><section id="_qu_est_ce_que_le_déploiement"><h2>Qu&#8217;est-ce que le déploiement ?</h2></section><section id="_passer_de_çà"><h2>Passer de çà</h2><div class="imageblock" style=""><div class="content"><img src="images/developpeur.jpg" alt="developpeur"></div></div>
<aside class="notes"><div class="paragraph"><p>Environnement de développement
Plein de choses instables
Pas forcément la même version que le serveur de prod (grace à la norme JEE)</p></div></aside></section><section id="_a_çà"><h2>A çà</h2><div class="imageblock" style=""><div class="content"><img src="images/dataCenter.jpg" alt="dataCenter" height="400"></div></div></section><section id="_définition"><h2>Définition</h2><div class="ulist"><ul><li><p><strong>Passer du dev à la prod</strong>.</p></li><li><p>Installer ou mettre à jour une application dans un serveur d&#8217;application.</p></li><li><p>Gestion de l&#8217;exploitation du code depuis sa production par le développeur jusqu&#8217;à sa mise en production pour le(s) client(s).</p></li></ul></div></section></section>
<section><section id="_processus_impliqués"><h2>Processus impliqués</h2><div class="ulist"><ul><li><p>gestion de version,</p></li><li><p>compilation,</p></li><li><p>packaging,</p></li><li><p>vérifications,</p></li><li><p>tests,</p></li><li><p><strong>déploiement</strong> et mises à jour,</p></li><li><p>surveillance, interventions d&#8217;urgence&#8230;&#8203;*.</p></li></ul></div></section><section id="_qualité_et_vitesse"><h2>Qualité et vitesse</h2><div class="paragraph"><p>Il faut aller vite et bien.</p></div>
<section><section id="_processus_impliqués"><h2>Processus impliqués</h2><div class="ulist"><ul><li><p>gestion de version,</p></li><li><p>compilation,</p></li><li><p>packaging,</p></li><li><p>vérifications,</p></li><li><p>tests,</p></li><li><p><strong>déploiement</strong> et mises à jour,</p></li><li><p>surveillance, interventions d&#8217;urgence&#8230;&#8203;*.</p></li></ul></div><div class="paragraph"><p>Métier formalisé comme SRE : Service Reliability Engineer</p></div></section><section id="_qualité_et_vitesse"><h2>Qualité et vitesse</h2><div class="paragraph"><p>Il faut aller vite et bien.</p></div>
<div class="paragraph"><p>Le code en attente dans le repo, c&#8217;est du <strong>stock</strong> !</p></div></section><section id="_dev_ops"><h2>Dev Ops</h2><div class="paragraph"><p>Historiquement les métiers de développeur et d&#8217;exploitant étaient cloisonnés.</p></div>
<div class="paragraph"><p>Mouvement DevOps pour favoriser une intéraction fluide nécessaire pour les déploiements modernes.</p></div></section><section id="_réalité"><h2>Réalité</h2><div class="paragraph"><p>Développement et Exploitation sont complémentaires :</p></div>
<div class="paragraph"><p><strong>Le code impacte les choix d&#8217;infrastructure, et l&#8217;infrastructure impose des contraintes sur le code</strong>.</p></div>
Expand All @@ -18,10 +18,12 @@
<div class="ulist"><ul><li><p><code>WEB-INF/web.xml</code> avec le descripteur de déploiement,</p></li><li><p><code>WEB-INF/classes</code> avec des classes Java,</p></li><li><p><code>WEB-INF/lib</code> avec des <strong>jar</strong>,</p></li><li><p>des <strong>jsp</strong>,</p></li><li><p>fichiers statiques.</p></li></ul></div></section><section id="_l_ear"><h2>L&#8217;EAR</h2><div class="paragraph"><p>Un Enterprise Application aRchive contient :</p></div>
<div class="ulist"><ul><li><p><code>META-INF/application.xml</code> pour décrire les modules et <code>context-root</code>,</p></li><li><p>des <strong>war</strong>,</p></li><li><p>des <strong>ejb</strong>,</p></li><li><p>des <strong>jar</strong>.</p></li></ul></div></section><section id="_implémentations_java_ee"><h2>Implémentations Java EE</h2><div class="paragraph"><p>La norme Java EE est implémentée par des fournisseurs apportant leurs spécificités à :</p></div>
<div class="ulist"><ul><li><p>Commandes de contrôle (start, stop, &#8230;&#8203;),</p></li><li><p>Outillage de développement,</p></li><li><p>Répertoires de déploiment,</p></li><li><p>Configuration avancée,</p></li><li><p>Gestion d&#8217;un cluster.</p></li></ul></div></section><section id="_exercice"><h2>Exercice</h2><div class="paragraph"><p>Exercice 1 dans le TP : déployer une application <code>war</code> dans Tomcat.</p></div></section><section id="_répondre_à_la_charge"><h2>Répondre à la charge&#8230;&#8203;</h2><div class="paragraph"><p>Il n&#8217;est pas possible d&#8217;augmenter indéfiniment les performances d&#8217;un seul serveur.</p></div>
<div class="paragraph"><p><strong>Scalabitilité verticale</strong>.</p></div></section><section id="_surcharge"><h2>Surcharge !</h2><div class="imageblock" style=""><div class="content"><img src="images/monoServeur.png" alt="monoServeur"></div></div></section><section id="_multiplier_les_serveurs"><h2>Multiplier les serveurs</h2><div class="paragraph"><p>En adaptant le logiciel, on peut répliquer l&#8217;application sur plusieurs serveurs (cluster).</p></div>
<div class="paragraph"><p><strong>Scalabilité horizontale</strong>.</p></div></section><section id="_web_2_0"><h2>Web 2.0</h2><div class="paragraph"><p>Le serveur n&#8217;a plus à conserver l&#8217;état conversationnel (GUI) de ses clients (Ajax et SPA).</p></div>
<div class="paragraph"><p><strong>Scalabitilité verticale</strong>.</p></div></section><section id="_surcharge"><h2>Surcharge !</h2><div class="imageblock" style=""><div class="content"><img src="images/monoServeur.png" alt="monoServeur"></div></div></section><section id="_multiplier_les_serveurs"><h2>Multiplier les serveurs</h2><div class="paragraph"><p><strong>Scalabilité horizontale</strong>.</p></div>
<div class="paragraph"><p>En adaptant le logiciel, on peut répliquer l&#8217;application sur plusieurs serveurs (cluster).</p></div>
<div class="paragraph"><p>Ceci va permettre de s&#8217;appuyer sur du matériel grand public (avec assez peu de performances).</p></div></section><section id="_web_2_0"><h2>Web 2.0</h2><div class="paragraph"><p>Le serveur n&#8217;a plus à conserver l&#8217;état conversationnel (GUI) de ses clients (Ajax et SPA).</p></div>
<div class="paragraph"><p>Ceci encourage à créer des <strong>architectures orientées service</strong> et a se concentrer sur le <strong>traitement des données</strong>, de façon <strong>distribuée</strong>.</p></div></section><section id="_le_cloud"><h2>Le cloud</h2><div class="paragraph"><p>Les architectures modernes sont composées de multiples serveurs exécutant de multiples applications collaborant entre elles (<strong>par internet</strong>).</p></div>
<div class="paragraph"><p>Elles fournissent des services universellement accessibles.</p></div></section></section>
<div class="paragraph"><p>Elles fournissent des services universellement accessibles.</p></div>
<div class="paragraph"><p>Elles répondent dynamiquement à la charge, tout en optimisant le coût des resources informatiques.</p></div></section></section>
<section><section id="_déploiement_distribué"><h2>Déploiement distribué</h2><div class="paragraph"><p>Le déploiement distribué pose de nombreux problèmes passionnants :</p></div><div class="ulist"><ul><li><p>état de l&#8217;application,</p></li><li><p>stockage, mise à disposition et réplication des données,</p></li><li><p>cohérence des données,</p></li><li><p>haute disponibilité,</p></li><li><p>mise à l&#8217;échelle automatique,</p></li><li><p>gestion des resources,</p></li><li><p>tolérance aux pannes&#8230;&#8203;</p></li></ul></div></section><section id="_le_modèle_mémoire_de_java_ee"><h2>Le modèle mémoire de Java EE</h2><div class="paragraph"><p>Trois niveau de mémoire :</p></div>
<div class="ulist"><ul><li><p>les objets du serveur,</p></li><li><p>les sessions http (en standard en mémoire avec flush disque),</p></li><li><p>les bases de donnée (distribuées ou pas elle sont vues comme un service).</p></li></ul></div>
<div class="paragraph"><p>Les deux premiers posent des problèmes de répartition.</p></div></section><section id="_cluster_classique"><h2>Cluster classique</h2><div class="paragraph"><p>On utilise la solution propriétaire du fournisseur de serveur d&#8217;application (JBoss, WebLogic, Tomcat, &#8230;&#8203;).</p></div>
Expand Down
13 changes: 7 additions & 6 deletions formation-deploiement-jee/tp.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.4">
<meta name="generator" content="Asciidoctor 1.5.5">
<meta name="author" content="Arnaud Tournier">
<title>Déploiement Java EE - Travaux pratiques</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
Expand All @@ -18,7 +18,6 @@
[hidden],template{display:none}
script{display:none!important}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
body{margin:0}
a{background:transparent}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
Expand Down Expand Up @@ -53,7 +52,7 @@
table{border-collapse:collapse;border-spacing:0}
*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
Expand All @@ -65,7 +64,6 @@
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
body{-webkit-font-smoothing:antialiased}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
Expand Down Expand Up @@ -120,13 +118,16 @@
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
body{tab-size:4}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
.clearfix:after,.float-group:after{clear:both}
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
*:not(pre)>code.nobreak{word-wrap:normal}
*:not(pre)>code.nowrap{white-space:nowrap}
pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
Expand Down

0 comments on commit bcedaf5

Please sign in to comment.