Lorsqu'un incident survient dans un environnement de production, il faut agir de façon rigoureuse et rapidement.
Antoine, directeur de projet chez SpikeeLabs, nous présente dans ce slideware un "kit de survie" en cas d'incident en production.
Ce kit a été créé sur 2 niveaux :
- process : peu importe le type d'application, les process permettant d'agir sereinement et efficacement en cas d'incident en production respectent toujours plus ou moins les mêmes étapes.
- outillage : les outils de développement sont de plus en plus évolués mais finalement pour nous aider à gérer les incidents en production, nous sommes très souvent amenés à utiliser des outils éprouvés, qu'Antoine nomme affectueusement les "dinosaures de l'informatique"
1. LE KIT DE SURVIE EN
PRODUCTION
Comment les dinosaures de
l’informatique peuvent nous sauver ?
2. PLAN
La survie ? Quelle survie ?
Un kit de survie, oui, mais pour
quoi faire ?
Toujours plus d’outils pour un kit à
votre image
Conclusion
Plan
3. 01
• L’informatique, une question de survie ?
• Quels dangers pour une solution en
production ?
LA SURVIE ? QUELLE SURVIE ?
4. L’INFORMATIQUE, UNE QUESTION DE SURVIE ?
Plutôt une question de confort : l’informatique est un ensemble de solutions
automatisées à des problèmes, réalisées en suivant une organisation plus ou moins
rigoureuse
Ces solutions sont vouées à être intégrées en milieu hostile puisqu’il est en visibilité
des utilisateurs : la Production
La Production doit être :
Fiable
Disponible
Maintenable
Une solution doit donc répondre aux problèmes et survivre suite à son
intégration en Production
5. QUELS DANGERS POUR UNE SOLUTION EN PRODUCTION ?
Quelques exemples de situations dégradées en Production :
Critiques
Indisponibilité/instabilité : les utilisateurs n’accèdent plus à un outil incontournable
Qualité de données : des informations pré requises ne sont pas disponibles à temps
Majeurs
Indisponibilité/instabilité : les outils sont accessibles mais ne fonctionnent pas correctement
Qualité de données : les informations sont présentes mais erronées
Mineurs
Indisponibilité/instabilité : les outils sont accessibles et fonctionnels mais leur utilisation n’est pas aisée
Qualité de données : les données sont présentes et justes mais nécessitent une manipulation
Attention ! La gravité de ces situations est relative !
6. 02
• Pourquoi opter pour la survie ?
• Un plan d’approche en trois phases
• MODE SURVIE – Comprendre la situation
• MODE SURVIE – Rétablir une situation normale
• MODE SURVIE – Rattraper les erreurs
UN KIT DE SURVIE, OUI, MAIS POUR QUOI FAIRE ?
7. POURQUOI OPTER POUR LA SURVIE ?
Lorsqu’une situation dégradée jugée critique est observée en Production, il faut
réagir vite :
L’analyse approfondie de la situation, la spécification, les développements, les tests et le
déploiement d’un correctif nécessitent trop de temps
Des actions plus rapides peuvent être priorisées sur ce correctif, même s’il convient de le
planifier :
Utilisation d’un banc de Production de secours
Restauration d’un serveur ou d’une base de données dans un état antérieur stable (Snapshot/Dump) –
Nécessite la compréhension de la situation
Retour-arrière d’une application en cas de montée de version sur cet applicatif (Rollback) – Nécessite la
compréhension de la situation
Mise en place d’un contournement automatisé et rattrapage des données produites en situation
dégradée
8. UN PLAN D’APPROCHE EN TROIS PHASES
Réaction à vif
« Mode survie »
Planning en heures
• « Comprendre la
situation » en analysant
• « Rétablir une situation
normale » sans
développement
• « Rattraper les erreurs »
Correctif applicatif
rapide
Planning en jours
• Développements simples
et courts en réponse à
l’analyse de la situation
en Production
• Tests sur les cas observés
en production
• Déploiement priorisé
Correctif applicatif
stabilisé
Planning en semaines
• Développements
spécifiés avec
extrapolation de la
situation en Production
• Tests sur l’ensemble des
cas théoriques
• Documentation accrue
9. MODE SURVIE – COMPRENDRE LA SITUATION
Analyser et ordonner les événements récents :
Etat de l’environnement
Bon fonctionnement des composants
Messages d’erreurs et rapports d’exécution
Collecter les données nécessaires au traitement
Outils recommandés :
find, locate
sort, uniq
grep
vi, nano, cat
10. MODE SURVIE – COMPRENDRE LA SITUATION
EXEMPLE
Cas d’étude :
Le 20 janvier 2021 à 17h, les responsables RH d’une entreprise indiquent l’impossibilité de
générer les fiches de paie des 25 salariés et constatent l’apparition d’un volume anormalement
important de documents destinés à des employés externes à l’entreprise
A savoir :
L’outil RH dispose de deux traitements s’articulant sur une base de données des employés de
l’entreprise :
1. Le 1er envoie un mail automatique personnalisé pour indiquer aux externes que leur facture a été reçue
et que le paiement sera réalisé dans les prochains jours. Ce traitement se lance automatiquement
lorsqu’une ressource externe dépose sa facture au sein d’un répertoire dédié qui lui est accessible
2. Le 2nd génère les fiches de paie des salariés et les dépose dans leur coffre fort numérique, externe à la
société. Ce traitement est planifié une fois par mois
Hypothèse :
Le volume trop important de documents à destination des externes bloque la chaine de
traitement de l’outil RH et empêche la génération des fiches de paie par manque d’espace
disque
11. MODE SURVIE – COMPRENDRE LA SITUATION
EXEMPLE
Idées :
1. Vérifier la présence de fichiers volumineux de plus de 2 Mo :
$ find . -size +2048k
2. Identifier des fichiers contenant une expression particulière permettant d’incriminer le
traitement dédié aux factures des prestataires :
$ find . -size + 2048k | xargs ls | xargs grep -l "externe Intranet"
3. Vérifier qu’il existe des fichiers créés le 20 janvier 2021 entre 14h00 et 17h00 :
$ find . -size + 2048k -newermt "2021-01-20 14:00" -not -newermt
"2021-01-20 17:00" | xargs ls | xargs grep -l "externe Intranet" |
xargs ls -lh
4. Etudier la présence de doublons dans le fichier (impossible d’éditer le fichier depuis Notepad,
Excel…)
$ set -x && sort ./dir_1/dir_1_2/users_csv_01.csv | uniq -c | head
Analyse :
Le traitement dédié aux factures des prestataires a généré de trop nombreuses lignes le 20
janvier à 14h parce qu’il se déclenche sur la colonne « date_modification » de la table
« employe_demo » de la base utilisée par la suite d’outils RH
12. MODE SURVIE – RÉTABLIR UNE SITUATION NORMALE
Agir :
Remettre l’environnement en ordre de marche
Relancer les composants
Préparer les données en entrées
Relancer le traitement en observant les résultats de la relance OU se substituer au traitement
(shunt/contournement)
Outils recommandés :
vi, nano
sed, awk, bash, python
tail
grep
13. MODE SURVIE – RÉTABLIR UNE SITUATION NORMALE
EXEMPLE
Une fiche d’exploitation pour un cas réel
Préparer les données : user des expressions régulières. Un exemple est fourni dans la
section suivante
Proposer un contournement en se basant sur des scripts simples :
bash
…
python
14. MODE SURVIE – RATTRAPER LES ERREURS
Réagir :
S’assurer de la stabilité de l’environnement
S’assurer de la stabilité des composants
Corriger les données en erreur produites pendant le dysfonctionnement du traitement
Outils recommandés :
sort, uniq
grep
vi, nano, cat
15. MODE SURVIE – RÉTABLIR UNE SITUATION NORMALE
EXEMPLE
Reprise du cas d’étude de la section « Comprendre la situation »
Correctif :
Modifier les dates « date_modification » dans la table « employe_demo » pour les
externes seulement en y mettant la date de dernier traitement avec succès contenue dans la
table « last_success_run_demo »
16. 04
• Quelques outils pratiques
• Pour aller plus loin
• À vous de jouer
• Conclusion
TOUJOURS PLUS D’OUTILS POUR UN KIT À VOTRE IMAGE
17. Les commandes systèmes :
https://www.ubuntupit.com/best-linux-commands-
to-run-in-the-terminal/
Scripts Python :
https://linuxhint.com/python_scripts_beginners_gui
de/
Scripts Perl : https://learn.perl.org/first_steps/
…
QUELQUES OUTILS PRATIQUES
18. Les interfaces de lignes de
commandes (CLI)
SQL/NO SQL
SQLServer : https://docs.microsoft.com/fr-
fr/sql/tools/mssql-cli?view=sql-server-
ver15
Cassandra :
https://cassandra.apache.org/doc/latest/t
ools/
MongoDB :
https://docs.mongodb.com/mongocli/sta
ble/
…
Message Broker
RabbitMQ :
https://www.rabbitmq.com/cli.html
…
Les expressions régulières
Wikipedia (EN) :
https://en.wikipedia.org/wiki/Regular_exp
ression
Créer et tester des expressions régulières :
https://regexr.com/ ou
https://regex101.com/
Les tâches planifiées
CRONTAB : https://crontab.guru/
POUR ALLER PLUS LOIN
19. À VOUS DE JOUER
Des problèmes solutions qui se basent sur des dinosaures
Gardez une trace (ex : wiki) de vos expériences et constituez votre propre arsenal
d’outils
20. Des dinosaures efficaces et éprouvés pour des
résultats rapides
Les commandes systèmes
Les scripts rapides et simples à déployer
Les expressions régulières et la théorie du langage
La survie, la débrouille, mais pas la
désorganisation
Il faut tracer, pour vous mais aussi pour les autres
Une philosophie d’exploitation qui s’applique
aux développements et aux tests
CONCLUSION