diff --git a/internship.xml b/internship.xml index fbe1fc2..e3278d4 100644 --- a/internship.xml +++ b/internship.xml @@ -21,7 +21,7 @@ - + 2014-09-04T14:45 diff --git a/slides/Makefile b/slides/Makefile new file mode 100644 index 0000000..125007b --- /dev/null +++ b/slides/Makefile @@ -0,0 +1,44 @@ +DOCNAME = defense +TARGET = defense.pdf + +RM ?= rm -f +MPP = perl -I../mpp ../mpp/mpp +MPPFLAGS = +PANDOC = pandoc +PANDOCFLAGS = --latex-engine=xelatex --listings --toc --no-tex-ligatures --normalize --slide-level=2 -M lang=frenchb +BUTLER = perl -I../butler/src ../butler.pl +BUTLERFLAGS = --docname=${DOCNAME} --xml=../internship.xml +LATEX = xelatex +LATEXFLAGS = -halt-on-error -no-shell-escape + +DEPS := ../internship.xml $(shell ${MPP} --list-includes ${TARGET:.pdf=.md}) + +all: ${TARGET} + +assistant: MPPFLAGS += --assistant + +assistant: all + +clean: + ${RM} ${TARGET} + +${TARGET}: ${DEPS} + +.md.mppmd: + ${MPP} ${MPPFLAGS} $< > $@ + +.mppmd.tex: + ${PANDOC} ${PANDOCFLAGS} -t beamer --template=../templates/nemu/beamer/template.tex -o $@ $< + +#.mppmd.maintex: +# ${PANDOC} ${PANDOCFLAGS} -t latex -o $@ $< + +#.maintex.tex: +# ${BUTLER} ${BUTLERFLAGS} --main=$< > $@ + +.tex.pdf: + ${LATEX} ${LATEXFLAGS} -jobname=${@:%.pdf=%} $< + ${LATEX} ${LATEXFLAGS} -jobname=${@:%.pdf=%} $< >/dev/null + ${RM} ${@:.pdf=.aux} ${@:.pdf=.log} ${@:.pdf=.out} ${@:.pdf=.toc} + +.SUFFIXES: .md .mppmd .maintex .tex .pdf diff --git a/slides/defense.md b/slides/defense.md new file mode 100644 index 0000000..caaae8f --- /dev/null +++ b/slides/defense.md @@ -0,0 +1,134 @@ +% Soutenance de stage de fin d'études +% Pierre-Olivier Mercier +% Jeudi 4 septembre 2014 + +# Novaquark + +## L'entreprise + +* Startup fondée en janvier 2014 ; +* fondée par Jean-Christophe Baillie ; +* de 4 collaborateurs à 14 aujourd'hui ; +* actuellement dans l'incubateur Agoranov. + +%%image(../templates/nemu/images/nq-high.png) + +## L'objet + +%%image(../report/img/dual-dark.png, 0.5) + +* Jeu-vidéo MMO ; +* monde unique, éditable, rendu par *Voxel* ; +* économie, gameplay émergent : où les joueurs construisent leur propre jeu via leurs interactions. + +## Visuel du jeu + +TODO image voxel + visuel du jeu + + +# Le stage + +## Présentation du sujet + +* Travail avec l'équipe en charge du serveur ; +* mise en place des bases de l'infrastructure de mise à l'échelle : + * virtualisation, *cloud computing* ; + * relevé de métriques, + * déploiement centralisé, + * sécurité du cluster ; +* tests de montée en charge du serveur : + * déploiement automatique, + * dans les nuages. + + +# Travail effectué + +## États de l'art + +### Plates-formes d'infrastructure en tant que service (IaaS) + +* Amazon Web Services Elastic Cloud 2 ; +* Google Compute Engine. + +### Outils de déploiement automatique + +* Ansible, Chef, Puppet ; +* Capistrano, Fabric, ... + +### Solutions de virtualisation + +* Linux Containers (LXC), Docker ; +* Oracle VirtualBox, Linux KVM. + + +## Réponses à des problématiques + +### Chat en jeu + +* XMPP : jabberd*, ejabberd, prosody, ... +* IRC, Zephyr, ... + +### Authentification centralisée + +* LDAP : centralisation ; +* Kerberos : jeu/serveurs et services en jeu (chat, ...). + +### Utilisation du serveur par les développeurs + +* Machine virtuelle personnelle ; +* interface de gestion simplifiée. + + +## Conception de recettes de déploiement + +### Via Ansible + +* Serveur de monitoring ; +* serveur de jeu ; +* serveur de conteneurs génériques. + +### via Docker + +* Site web du jeu ; +* forum ; +* supervision ; +* LDAP. + + +## Programme de relevé de métriques système + +### sysinfo_influxdb + +* Projet libre sous licence CC0 ; +* disponible sur GitHub ; +* écrit en Go (*linkage* statique) ; +* utilise la base de données InfluxDB. + +### Métriques relevées + +* Utilisation du CPU ; +* mémoire disponible ; +* bande passante utilisée ; +* entrées/sorties disques ; +* charge, *uptime*. + + +## Tests de montée en charge + +### Sur Amazon Web Services EC2 + +* Déploiement de machines virtuelles ; +* analyse des résultats : métriques, goulots d'étranglements ; +* profiling du code en charge. + + +# Conclusion + +## Conclusion + +### J'ai pu travailler: + +* avec des notions avant-gardistes : problèmatiques d'un monde unique réparti ; +* sur des technologies d'avenir émergentes : virtualisation légère, conteneurs applicatifs ; +* sur des sujets récurents : *cloud computing*, déploiement, sécurité ; +* pour et avec des projets libres : Ansible, InfluxDB, SBT, ... diff --git a/templates/nemu/beamer/template.tex b/templates/nemu/beamer/template.tex index f3c2f5b..29c9e94 100644 --- a/templates/nemu/beamer/template.tex +++ b/templates/nemu/beamer/template.tex @@ -1,6 +1,7 @@ \documentclass[$if(fontsize)$$fontsize$,$endif$$if(handout)$handout,$endif$$if(beamer)$ignorenonframetext,$endif$]{$documentclass$} +\usepackage{tikz} \usetheme{Darmstadt} -\setbeamercolor{structure}{fg=black, bg=white} +\setbeamercolor{structure}{fg=black, bg=black} \setbeamercovered{dynamic} \setbeamercolor*{author in head/foot}{parent=palette tertiary} @@ -10,6 +11,23 @@ \setbeamercolor*{section in head/foot}{parent=palette tertiary} \setbeamercolor*{subsection in head/foot}{parent=palette primary} +\pgfdeclareimage[height=\the\paperheight]{backgroundImage}{images/background} + +\setbeamertemplate{background}{ + \begin{tikzpicture} + \useasboundingbox (0,0) rectangle (\the\paperwidth, \the\paperheight) ; + + \pgftext[at=\pgfpoint{-70pt}{0cm},left,base]{\pgfuseimage{backgroundImage}} ; + + + \ifnum\thepage>0\relax% + \fill[white, opacity=0.4] (0cm, 0cm) -- (0cm, 1.0\paperwidth) -- (1.0\paperwidth, 1.0\paperwidth) -- (1.0\paperwidth, 0cm) ; + \fi + \end{tikzpicture} +} + +\setbeamertemplate{blocks}[rounded][shadow=false] + \setbeamertemplate{footline} { \leavevmode% @@ -117,6 +135,8 @@ $if(verbatim-in-note)$ $endif$ $if(tables)$ \usepackage{longtable} +\setmainfont[Ligatures=Common]{LinBiolinum} + % These lines are needed to make table captions work with longtable: \makeatletter \def\fnum@table{\tablename~\thetable} @@ -184,17 +204,17 @@ $if(title)$ \title{$title$} $endif$ $if(author)$ -\author{$for(author)$$author$$sep$ \and $endfor$} +\author[$for(author)$$author$$sep$ \and $endfor$]{$for(author)$$author$$sep$ \and $endfor$\newline\scriptsize{sous la direction de M. Jean-Christophe Baillie}} $endif$ $if(date)$ \date{$date$} $endif$ -\pgfdeclareimage[height=3.4cm]{assistant-logo}{images/assistants} -\institute{\pgfuseimage{assistant-logo}} - -\logo{\includegraphics[scale=0.1]{images/epita}} +\setbeamertemplate{title page}[default][colsep=-4bp,rounded=true] +\pgfdeclareimage[width=\textwidth]{nq-logo}{images/nq-high} +\institute{\pgfuseimage{nq-logo}} +%\logo{\includegraphics[scale=0.1]{images/background}} \begin{document} $if(title)$ diff --git a/templates/nemu/images/background.jpg b/templates/nemu/images/background.jpg new file mode 100644 index 0000000..f8d86ef Binary files /dev/null and b/templates/nemu/images/background.jpg differ