mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-28 19:42:37 +02:00
81 lines
2.8 KiB
ReStructuredText
81 lines
2.8 KiB
ReStructuredText
PyconFR 2015 — Hospital - des tests en prod
|
|
###########################################
|
|
|
|
:date: 2015.10.18
|
|
:category: pyconfr2015
|
|
:unlisted: true
|
|
|
|
.. note::
|
|
|
|
Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
|
à les completer si besoin.
|
|
|
|
Speaker: Benoit Bryon, Peopledoc.
|
|
|
|
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).
|
|
|
|
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.
|
|
|
|
Lors d'un déploiement, comment faire pour vérifier que tout tourne lorsque tout
|
|
est déployé ?
|
|
|
|
Comment faire ?
|
|
---------------
|
|
|
|
- Les tests permettent de tester hors sol.
|
|
- Le provisionning permet de valider que tout tourne correctement, mais
|
|
- simplement au démarrage. Les pannes ne sont pas détectées.
|
|
- Le logging va permettre de detecter les erreurs, mais trop tard.
|
|
- Le monitoring permet d'avoir une vue de l'exterieur.
|
|
|
|
Hostpital propose de faire des assertions sur la configuration,
|
|
l'environnement, *en cours de fonctionnement*. Ce sont les developeurs qui
|
|
ajoutent ces assertions.
|
|
|
|
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.
|
|
|
|
Hospital
|
|
--------
|
|
|
|
::
|
|
pip install hospital
|
|
|
|
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:
|
|
`assert_http_response` ou `assert_ping`.
|
|
|
|
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).
|
|
|
|
Pour la supervision, les healthchecks sont lancés avec une ligne de commande
|
|
`hospital-cli`. Il est possible de lancer également ces tests avec nose ou
|
|
py.test.
|
|
|
|
Il est aussi possible de faire le monitoring avec une API HTTP `hospital
|
|
serve`.
|
|
|
|
Les lacunes de hospital
|
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
Wrap up
|
|
-------
|
|
|
|
Validez votre configuration, la connectivité avec les services externes. Faites
|
|
des tests souvent !
|