Dans le monde des microservices avec Spring Boot, un arrêt progressif est clé pour la fiabilité. Voici un résumé concis en cinq points : 👇
1- Activez l’arrêt contrôlé
Configurez le serveur pour finir les requêtes en cours, évitant des interruptions brutales.
2- Définissez des délais
Fixez un temps (ex. 30s) pour terminer les tâches avant arrêt forcé.
3- Exposez les endpoints
Utilisez Actuator pour inclure health, info et shutdown, facilitant l’orchestration.
4- Gérez les signaux
Assurez la prise en charge de SIGTERM/SIGINT pour un arrêt fluide.
5- Testez l’approche
Vérifiez en local et préprod qu’aucune erreur (ex. HTTP 5xx) n’apparaisse.
⚠️ Et quand votre application Spring Boot est dans un conteneur, veuillez à ce qu'elle occupe bien le process 1 (PID 1), ou utilisez les outils comme supervisord, tini, dumb-int, etc....
Si cette condition n'est pas respectée, alors tout signals SIGTEM/SIGINT ne seront jamais propagés au process de votre application. Et donc, votre application sera violemmement tuée après les 30s (SIGKILL)
ℹ️ Pensez à bien écrire vos Dockerfile, pour que le PID 1 soit votre application
J'aide les développeurs à monter en compétences | CEO Clean Code Academy | +10 d'expérience / 100% clients satisfaits 🌟
1 month ago
souvent sous-estimé, mais un shutdown bien géré évite tellement de bugs sournois en prod. et avec Spring Boot + Actuator, on a toutes les briques pour faire ça proprement.