mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-30 12:32:38 +02:00
96 lines
No EOL
4.3 KiB
HTML
96 lines
No EOL
4.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<title>PyconFR 2015 — Hospital - des tests en prod - Alexis Métaireau</title>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link rel="stylesheet" href="https://blog.notmyidea.org/theme/css/main.css" type="text/css" />
|
|
<link href="https://blog.notmyidea.org/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Alexis Métaireau ATOM Feed" />
|
|
</head>
|
|
<body>
|
|
<section id="links">
|
|
<li>
|
|
<a class="" href="https://blog.notmyidea.org/" id="site-title">Blog</a>
|
|
</li>
|
|
<li><a class="" href="https://blog.notmyidea.org/pages/projets.html">Projets</a></li>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
<header>
|
|
<h1 class="post-title">PyconFR 2015 — Hospital - des tests en prod</h1>
|
|
<time datetime="2015-10-18T00:00:00+02:00">18 octobre 2015</time>
|
|
|
|
|
|
</header>
|
|
<article>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N’hésitez pas
|
|
à les completer si besoin.</p>
|
|
</div>
|
|
<p>Speaker: Benoit Bryon, Peopledoc.</p>
|
|
<p>Pour une procédure de déploiement, comment est-ce qu’on valide que tout va bien
|
|
une fois que tout est dépoyé ? Si on a une application très simple (upload et
|
|
envoi de fichiers).</p>
|
|
<p>Pour des applications plus complexes, il y a beaucoup de choses à tester (base
|
|
de données, cache, email, etc). Beaucoup de parties sont utiles: reverse
|
|
proxy, django, base de données etc.</p>
|
|
<p>Lors d’un déploiement, comment faire pour vérifier que tout tourne lorsque tout
|
|
est déployé ?</p>
|
|
<div class="section" id="comment-faire">
|
|
<h2>Comment faire ?</h2>
|
|
<ul class="simple">
|
|
<li>Les tests permettent de tester hors sol.</li>
|
|
<li>Le provisionning permet de valider que tout tourne correctement, mais</li>
|
|
<li>simplement au démarrage. Les pannes ne sont pas détectées.</li>
|
|
<li>Le logging va permettre de detecter les erreurs, mais trop tard.</li>
|
|
<li>Le monitoring permet d’avoir une vue de l’exterieur.</li>
|
|
</ul>
|
|
<p>Hostpital propose de faire des assertions sur la configuration,
|
|
l’environnement, <em>en cours de fonctionnement</em>. Ce sont les developeurs qui
|
|
ajoutent ces assertions.</p>
|
|
<p>Cela peut servir à valider un déploiement, pour etre rassuré une fois que le
|
|
déploiement effectué. Cela peut aussi service à surveiller un service et
|
|
diagnostiquer les problèmes.</p>
|
|
</div>
|
|
<div class="section" id="hospital">
|
|
<h2>Hospital</h2>
|
|
<dl class="docutils">
|
|
<dt>::</dt>
|
|
<dd>pip install hospital</dd>
|
|
</dl>
|
|
<p>Hospital est un outil en python. On définit des tests, de la même manière que
|
|
l’on définit des tests unitaires. On fait des assertions, comme pour les tests
|
|
unitaires. Hospital propose des helpers pour les cas courants:
|
|
<cite>assert_http_response</cite> ou <cite>assert_ping</cite>.</p>
|
|
<p>La vue est une vue de l’intérieur. La différence avec le monitoring est que
|
|
l’on teste la connectivité entre les services (exemple d’une requete
|
|
elasticsearch qui échoue depuis un service django).</p>
|
|
<p>Pour la supervision, les healthchecks sont lancés avec une ligne de commande
|
|
<cite>hospital-cli</cite>. Il est possible de lancer également ces tests avec nose ou py.test.</p>
|
|
<p>Il est aussi possible de faire le monitoring avec une <span class="caps">API</span> <span class="caps">HTTP</span> <cite>hospital
|
|
serve</cite>.</p>
|
|
<div class="section" id="les-lacunes-de-hospital">
|
|
<h3>Les lacunes de hospital</h3>
|
|
<p>Les healthchecks sont fait actuellement en synchrone. Cela peut prendre du
|
|
temps. Il pourrait etre interessant de lancer des taches de manière distribuée
|
|
/ en paralelle.</p>
|
|
<p>Il pourrait etre utile de faire la distinction entre les smoketests et les
|
|
diagnostiques: les premiers sont des petits checks qui permettent de dire si ça
|
|
marche, de manière très simple. De l’autre coté, les diagnostiques seraient eux
|
|
plus fins.</p>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="wrap-up">
|
|
<h2>Wrap up</h2>
|
|
<p>Validez votre configuration, la connectivité avec les services externes. Faites
|
|
des tests souvent !</p>
|
|
</div>
|
|
|
|
</article>
|
|
|
|
</body>
|
|
</html> |