Assurer le redémarrage d'une application Go en cas de plantage

Cet article a été publié depuis plus de 6 mois, cela signifie que le contenu peut ne plus être d'actualité.

Lorsque l'on développe une application Go et que l'on souhaite déployer cette dernière, on se pose souvent la question: "Comment assurer son redémarrage en cas de plantage ?". Car contrairement à un script PHP ou tout autre script qui est exécuté par un serveur Web, en cas d'erreur fatale de notre application, le processus faisant fonctionner cette dernière va s'arrêter.

Pour cela, nous avons besoin d'utiliser un programme dont le but est de gérer les processus. Pour cela j'utilise Supervisor. Ce dernier va donc s'assurer qu'il y a toujours une instance de l'application en fonctionnement et en cas d'arrêt de cette dernière, relancera un nouveau processus automatiquement.

Dans sa version la plus simple, un service Supervisor se paramètre au travers d'un fichier de configuration :

[program:my_app]
command=/path/to/app

Si vous souhaitez en savoir plus, je vous invite à parcourir la documentation de l'outil. Elle vous permettra notamment de comprendre comment ce dernier fonctionne ainsi que la paramètre sur lesquels vous pouvez agir et qui vous permettront par exemple de définir l'utilisateur qui exécutera le processus, le nombre d'instance que vous souhaitez démarrer, comment doivent être gérer les sorties standard et bien d'autres encore...