Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
Arnaud Tournier committed May 20, 2019
1 parent 8ab627c commit fc36ecc
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 62 deletions.
4 changes: 2 additions & 2 deletions formation-deploiement-jee/index.ad
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ Full stack (x86_64 to JavaScript)

=== URLs

http://lteconsulting.fr/javaee-deploiement/[lteconsulting.fr/javaee-deploiement/]
http://lteconsulting.fr/formations/deploiement-jee/[lteconsulting.fr/formations/deploiement-jee/]

TP : http://lteconsulting.fr/javaee-deploiement/tp.html[lteconsulting.fr/javaee-deploiement/tp.html]
TP : http://lteconsulting.fr/formations/deploiement-jee/tp.html[lteconsulting.fr/formations/deploiement-jee/tp.html]

== Qu'est-ce que le déploiement ?

Expand Down
4 changes: 2 additions & 2 deletions formation-deploiement-jee/index.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!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>
<!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/formations/deploiement-jee/">lteconsulting.fr/formations/deploiement-jee/</a></p></div>
<div class="paragraph"><p>TP : <a href="http://lteconsulting.fr/formations/deploiement-jee/tp.html">lteconsulting.fr/formations/deploiement-jee/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
Expand Down
38 changes: 19 additions & 19 deletions formation-deploiement-jee/tp.ad
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Pour créer le fichier `.war`, utiliser le menu `Fichier`/`Exporter...` d'Eclips

_Normalement on fait cela avec un outil de build comme `Maven`, `Gradle`, `Ant` ou autre..._

== Exercice : déployer l'application dans Tomcat
== Exercice 1 : déployer l'application dans Tomcat

Le déploiement de l'application peut se faire depuis Eclipse ou en général n'importe quel IDE. Néanmoins, il est interressant
de savoir déployer une application à la main.
Expand All @@ -71,17 +71,7 @@ version Windows Batch (`.bat`)).

Vous devez pouvoir accéder à l'adresse `http://localhost:8080/NOM_DE_VOTRE_APPLICATION}` dans un navigateur.

=== Conclusions

La mise en oeuvre est très simple !

Mais quels sont les problèmes ?

- Crash serveur = arrêt du service
- Montée de version = arrêt du service
- Montée en charge (ok, si on peut fixer le nombre d'utilisateurs à l'avance).

== Exercice : ajouter un état à l'application
== Exercice 2 : ajouter un état à l'application

=== Une application à état (simple)

Expand Down Expand Up @@ -202,7 +192,17 @@ Choisir le répertoire du projet (celui dans lequel on trouve le fichier `pom.xm
- copie du `target/XXXX.war` dans le répertoire de déploiement de Tomcat
- actualisation dans le navigateur

== Exercice : déployer l'application sur deux Tomcat avec load balancing
=== Conclusions

La mise en oeuvre est très simple !

Mais quels sont les problèmes ?

- Crash serveur = arrêt du service
- Montée de version = arrêt du service
- Montée en charge (ok, si on peut fixer le nombre d'utilisateurs à l'avance).

== Exercice 3 : déployer l'application sur deux Tomcat avec load balancing

Nous allons voir par la pratique comment les différentes façons de déployer notre application en cluster
impactent son fonctionnement.
Expand Down Expand Up @@ -359,7 +359,7 @@ INCONVENIENTS :
- mauvaise répartition de la charge.
- Quand un des serveurs crashe on perd les sessions de tous les utilisateurs qui y étaient connectés. Pas très bon pour les affaires...

==== Exercice : Déport de la session dans une base externe
==== Exercice 4 : Déport de la session dans une base externe

Le phénomène de perte de session précédent est l'effet du standard Java EE.

Expand Down Expand Up @@ -479,7 +479,7 @@ INCONVENIENTS:
- on a un serveur de base de donnée à gérer en plus !
- les resources ne sont pas forcément bien gérées non plus : on va avoir tendance à ne pas remplir les serveurs ce qui empêche de les mettre à l'arrêt... Solution : remettre les sticky-sessions pour avoir le meilleur des deux mondes.

==== Utilisation de JWT
==== Exercice 5 : Utilisation de JWT

Il est possible de déporter les données de sessions directement dans le navigateur !

Expand Down Expand Up @@ -528,7 +528,7 @@ Key createKey() {
}
----

==== Exercice : stockage d'une information de session dans un jeton JWT
==== Exercice 6 : stockage d'une information de session dans un jeton JWT

Ecrivez maintenant le code nécessaire pour stocker dans le jeton JWT le _pseudo_ de l'utilisateur.

Expand Down Expand Up @@ -562,7 +562,7 @@ Toujours une histoire de compromis, il faut choisir le meilleur entre :
- complexité de la solution,
- productivité.

== Exercice : Déploiement de l'application avec Docker.
== Exercice 7 : Déploiement de l'application avec Docker.

=== Installation de Docker

Expand Down Expand Up @@ -672,7 +672,7 @@ Avec le navigateur, constater que les dix serveurs Tomcat sont alternativement u

Tuer quelques containers pour constater que l'application n'est nullement dérangée.

== Exercice : Gérer notre application avec Kubernetes
== Exercice 8 : Gérer notre application avec Kubernetes

Voir la http://kubernetes.io/docs/getting-started-guides/docker/[doc] pour commencer.

Expand Down Expand Up @@ -756,7 +756,7 @@ kubectl delete pod application

Ceci termine l'exercice d'introduction à Kubernetes.

== Exercice : Utilisation de `JMeter` pour analyser les stratégies de déploiement
== Exercice 9 : Utilisation de `JMeter` pour analyser les stratégies de déploiement

Groupez vous par groupe de 8 personnes.

Expand Down
78 changes: 39 additions & 39 deletions formation-deploiement-jee/tp.html
Original file line number Diff line number Diff line change
Expand Up @@ -448,14 +448,13 @@ <h1>Déploiement Java EE - Travaux pratiques</h1>
<li><a href="#_création_du_fichier_code_war_code">Création du fichier <code>.war</code></a></li>
</ul>
</li>
<li><a href="#_exercice_déployer_l_application_dans_tomcat">Exercice : déployer l&#8217;application dans Tomcat</a>
<li><a href="#_exercice_1_déployer_l_application_dans_tomcat">Exercice 1 : déployer l&#8217;application dans Tomcat</a>
<ul class="sectlevel2">
<li><a href="#_déploiement_de_l_application_dans_le_serveur_tomcat">Déploiement de l&#8217;application dans le serveur Tomcat</a></li>
<li><a href="#_lancement_de_tomcat">Lancement de Tomcat</a></li>
<li><a href="#_conclusions">Conclusions</a></li>
</ul>
</li>
<li><a href="#_exercice_ajouter_un_état_à_l_application">Exercice : ajouter un état à l&#8217;application</a>
<li><a href="#_exercice_2_ajouter_un_état_à_l_application">Exercice 2 : ajouter un état à l&#8217;application</a>
<ul class="sectlevel2">
<li><a href="#_une_application_à_état_simple">Une application à état (simple)</a></li>
<li><a href="#_ajout_d_un_compteur">Ajout d&#8217;un compteur</a></li>
Expand All @@ -470,9 +469,10 @@ <h1>Déploiement Java EE - Travaux pratiques</h1>
<li><a href="#_compilation_du_squelette_de_projet_java_ee_maven">Compilation du squelette de projet Java EE Maven</a></li>
<li><a href="#_importation_du_projet_maven_dans_eclipse">Importation du projet Maven dans Eclipse</a></li>
<li><a href="#_cycle_de_développement">Cycle de développement</a></li>
<li><a href="#_conclusions">Conclusions</a></li>
</ul>
</li>
<li><a href="#_exercice_déployer_l_application_sur_deux_tomcat_avec_load_balancing">Exercice : déployer l&#8217;application sur deux Tomcat avec load balancing</a>
<li><a href="#_exercice_3_déployer_l_application_sur_deux_tomcat_avec_load_balancing">Exercice 3 : déployer l&#8217;application sur deux Tomcat avec load balancing</a>
<ul class="sectlevel2">
<li><a href="#_comment_faire_face_au_problème_de_crash_serveur">Comment faire face au problème de crash serveur ?</a></li>
<li><a href="#_installer_la_seconde_instance_de_tomcat">Installer la seconde instance de Tomcat</a></li>
Expand All @@ -484,18 +484,18 @@ <h1>Déploiement Java EE - Travaux pratiques</h1>
<li><a href="#_conclusion">Conclusion</a></li>
</ul>
</li>
<li><a href="#_exercice_déploiement_de_l_application_avec_docker">Exercice : Déploiement de l&#8217;application avec Docker.</a>
<li><a href="#_exercice_7_déploiement_de_l_application_avec_docker">Exercice 7 : Déploiement de l&#8217;application avec Docker.</a>
<ul class="sectlevel2">
<li><a href="#_installation_de_docker">Installation de Docker</a></li>
</ul>
</li>
<li><a href="#_exercice_gérer_notre_application_avec_kubernetes">Exercice : Gérer notre application avec Kubernetes</a>
<li><a href="#_exercice_8_gérer_notre_application_avec_kubernetes">Exercice 8 : Gérer notre application avec Kubernetes</a>
<ul class="sectlevel2">
<li><a href="#_installation_et_création_d_un_cluster_de_développement">Installation et création d&#8217;un cluster de développement</a></li>
<li><a href="#_exécution_de_l_application">Exécution de l&#8217;application</a></li>
</ul>
</li>
<li><a href="#_exercice_utilisation_de_code_jmeter_code_pour_analyser_les_stratégies_de_déploiement">Exercice : Utilisation de <code>JMeter</code> pour analyser les stratégies de déploiement</a></li>
<li><a href="#_exercice_9_utilisation_de_code_jmeter_code_pour_analyser_les_stratégies_de_déploiement">Exercice 9 : Utilisation de <code>JMeter</code> pour analyser les stratégies de déploiement</a></li>
<li><a href="#_bilan">Bilan</a></li>
<li><a href="#_troubleshooting">Troubleshooting</a>
<ul class="sectlevel2">
Expand Down Expand Up @@ -568,7 +568,7 @@ <h3 id="_création_du_fichier_code_war_code">Création du fichier <code>.war</co
</div>
</div>
<div class="sect1">
<h2 id="_exercice_déployer_l_application_dans_tomcat">Exercice : déployer l&#8217;application dans Tomcat</h2>
<h2 id="_exercice_1_déployer_l_application_dans_tomcat">Exercice 1 : déployer l&#8217;application dans Tomcat</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Le déploiement de l&#8217;application peut se faire depuis Eclipse ou en général n&#8217;importe quel IDE. Néanmoins, il est interressant
Expand Down Expand Up @@ -599,32 +599,10 @@ <h3 id="_lancement_de_tomcat">Lancement de Tomcat</h3>
<p>Vous devez pouvoir accéder à l&#8217;adresse <code><a href="http://localhost:8080/NOM_DE_VOTRE_APPLICATION}" class="bare">http://localhost:8080/NOM_DE_VOTRE_APPLICATION}</a></code> dans un navigateur.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusions">Conclusions</h3>
<div class="paragraph">
<p>La mise en oeuvre est très simple !</p>
</div>
<div class="paragraph">
<p>Mais quels sont les problèmes ?</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Crash serveur = arrêt du service</p>
</li>
<li>
<p>Montée de version = arrêt du service</p>
</li>
<li>
<p>Montée en charge (ok, si on peut fixer le nombre d&#8217;utilisateurs à l&#8217;avance).</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_exercice_ajouter_un_état_à_l_application">Exercice : ajouter un état à l&#8217;application</h2>
<h2 id="_exercice_2_ajouter_un_état_à_l_application">Exercice 2 : ajouter un état à l&#8217;application</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_une_application_à_état_simple">Une application à état (simple)</h3>
Expand Down Expand Up @@ -802,10 +780,32 @@ <h3 id="_cycle_de_développement">Cycle de développement</h3>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_conclusions">Conclusions</h3>
<div class="paragraph">
<p>La mise en oeuvre est très simple !</p>
</div>
<div class="paragraph">
<p>Mais quels sont les problèmes ?</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Crash serveur = arrêt du service</p>
</li>
<li>
<p>Montée de version = arrêt du service</p>
</li>
<li>
<p>Montée en charge (ok, si on peut fixer le nombre d&#8217;utilisateurs à l&#8217;avance).</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_exercice_déployer_l_application_sur_deux_tomcat_avec_load_balancing">Exercice : déployer l&#8217;application sur deux Tomcat avec load balancing</h2>
<h2 id="_exercice_3_déployer_l_application_sur_deux_tomcat_avec_load_balancing">Exercice 3 : déployer l&#8217;application sur deux Tomcat avec load balancing</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Nous allons voir par la pratique comment les différentes façons de déployer notre application en cluster
Expand Down Expand Up @@ -1070,7 +1070,7 @@ <h4 id="_sticky_load_balancer">Sticky load balancer</h4>
</div>
</div>
<div class="sect3">
<h4 id="_exercice_déport_de_la_session_dans_une_base_externe">Exercice : Déport de la session dans une base externe</h4>
<h4 id="_exercice_4_déport_de_la_session_dans_une_base_externe">Exercice 4 : Déport de la session dans une base externe</h4>
<div class="paragraph">
<p>Le phénomène de perte de session précédent est l&#8217;effet du standard Java EE.</p>
</div>
Expand Down Expand Up @@ -1266,7 +1266,7 @@ <h5 id="_paramétrage_de_tomcat">Paramétrage de Tomcat</h5>
</div>
</div>
<div class="sect3">
<h4 id="_utilisation_de_jwt">Utilisation de JWT</h4>
<h4 id="_exercice_5_utilisation_de_jwt">Exercice 5 : Utilisation de JWT</h4>
<div class="paragraph">
<p>Il est possible de déporter les données de sessions directement dans le navigateur !</p>
</div>
Expand Down Expand Up @@ -1325,7 +1325,7 @@ <h4 id="_utilisation_de_jwt">Utilisation de JWT</h4>
</div>
</div>
<div class="sect3">
<h4 id="_exercice_stockage_d_une_information_de_session_dans_un_jeton_jwt">Exercice : stockage d&#8217;une information de session dans un jeton JWT</h4>
<h4 id="_exercice_6_stockage_d_une_information_de_session_dans_un_jeton_jwt">Exercice 6 : stockage d&#8217;une information de session dans un jeton JWT</h4>
<div class="paragraph">
<p>Ecrivez maintenant le code nécessaire pour stocker dans le jeton JWT le <em>pseudo</em> de l&#8217;utilisateur.</p>
</div>
Expand Down Expand Up @@ -1400,7 +1400,7 @@ <h3 id="_conclusion">Conclusion</h3>
</div>
</div>
<div class="sect1">
<h2 id="_exercice_déploiement_de_l_application_avec_docker">Exercice : Déploiement de l&#8217;application avec Docker.</h2>
<h2 id="_exercice_7_déploiement_de_l_application_avec_docker">Exercice 7 : Déploiement de l&#8217;application avec Docker.</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_installation_de_docker">Installation de Docker</h3>
Expand Down Expand Up @@ -1562,7 +1562,7 @@ <h3 id="_installation_de_docker">Installation de Docker</h3>
</div>
</div>
<div class="sect1">
<h2 id="_exercice_gérer_notre_application_avec_kubernetes">Exercice : Gérer notre application avec Kubernetes</h2>
<h2 id="_exercice_8_gérer_notre_application_avec_kubernetes">Exercice 8 : Gérer notre application avec Kubernetes</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Voir la <a href="http://kubernetes.io/docs/getting-started-guides/docker/">doc</a> pour commencer.</p>
Expand Down Expand Up @@ -1660,7 +1660,7 @@ <h3 id="_exécution_de_l_application">Exécution de l&#8217;application</h3>
</div>
</div>
<div class="sect1">
<h2 id="_exercice_utilisation_de_code_jmeter_code_pour_analyser_les_stratégies_de_déploiement">Exercice : Utilisation de <code>JMeter</code> pour analyser les stratégies de déploiement</h2>
<h2 id="_exercice_9_utilisation_de_code_jmeter_code_pour_analyser_les_stratégies_de_déploiement">Exercice 9 : Utilisation de <code>JMeter</code> pour analyser les stratégies de déploiement</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Groupez vous par groupe de 8 personnes.</p>
Expand Down Expand Up @@ -1860,7 +1860,7 @@ <h4 id="_sous_windows_3">Sous Windows</h4>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2019-05-20 12:43:47 CEST
Last updated 2019-05-20 16:02:53 CEST
</div>
</div>
</body>
Expand Down

0 comments on commit fc36ecc

Please sign in to comment.