Cet article est le dernier de notre série consacrée à la charte de développement backend chez Deepki. Nous y abordons des sujets liés à l’opérationnel : le déploiement, l’observabilité et la sécurité.

Sécurité

Dans le développement logiciel, la sécurité est un élément clé à ne pas négliger. Pour éviter les failles de sécurité, il est important de suivre quelques règles élémentaires.

Tout d’abord, il est essentiel de ne pas faire confiance aux données externes. Les inputs doivent être nettoyés afin d’éviter les injections de code. De plus, il est recommandé de ne pas stocker les credentials dans le repo, notamment les identifiants et mots de passe de base de données ou de service externe. Des solutions techniques existent pour éviter cela, comme Ansible Vault.

Lorsqu’on stocke des mots de passe, il est important de les chiffrer, de les saler et de les rendre lent à déchiffrer. Idéalement, on utilise un algorithme éprouvé comme bcrypt. De même, il est crucial de ne pas logger de données sensibles comme les mots de passe ou les numéros de carte de crédit.

Pour les APIs exposées sur Internet, il est indispensable d’utiliser SSL. Il est important de toujours partir du principe que le réseau est compromis et donc de prendre les mesures de sécurité nécessaires.

Enfin, il ne faut pas oublier de donner le moins de privilèges possibles à chaque produit. Si une application ne fait que des lectures dans une DB, il est inutile de lui donner un accès en écriture.

Déploiements

Nous préférons des déploiements fréquents, courts et sans interruption de service. Cela implique de gérer la rétrocompatibilité dans la mesure du possible, et lorsque ce n’est pas possible ou trop coûteux, de bien réfléchir aux impacts et de prévenir les équipes concernées.

En cas de problème suite à un déploiement, la personne qui a effectué le déploiement doit corriger le problème ou prendre la décision de revenir en arrière. Nous évitons donc les déploiements tardifs dans la journée ou avant le week-end.

Logs et métriques

Les logs sont des fichiers qui enregistrent les événements du système, tandis que les métriques sont des mesures quantitatives de divers aspects du système. Les logs sont utilisés pour le débogage et la recherche de problèmes spécifiques, tandis que les métriques servent à surveiller le système en temps réel et à détecter les problèmes avant qu’ils ne deviennent critiques.

En tant que développeurs, nous avons pour rôle de produire :

  • Des logs, utilisables par des humains pour comprendre ce qu’il s’est produit dans le passé et pour diagnostiquer des problèmes qui sont déjà arrivés.
  • Des métriques, utilisables pas des humains ou des automates pour surveiller le système en temps réel et détecter les problèmes avant qu’ils ne deviennent critiques.

Conclusion

Cet article clôt la série consacrée à la charte du développement backend chez Deepki. Nous espérons que cette série vous aura donné envie d’appliquer vous aussi ces principes, et qu’ils vous aideront à écrire du code maintenable et de qualité !