La nouvelle version de {golem}
est disponible !
Lire l’article complet sur https://golemverse.org/post/golem-0.4.0-release-on-cran/
Quoi de neuf ?
Moins de dépendances
Lorsque nous avons publié la première version de {golem}
sur le CRAN, nous avons décidé que toutes les applications basées sur {golem}
devraient dépendre de {golem}
. C’était un choix conscient, et nous l’avons fait parce que {golem}
vient avec des fonctions internes qui sont utilisées au moment de l’exécution de l’application.
Par exemple, bundle_resources()
lie toutes les ressources externes (CSS, JS, …), is_running()
détecte que l’application en cours est une application {golem}, with_golem_options()
qui permet de passer des arguments à vos fonctions run_app()
, et d’autres encore. Nous étions très conscients que ce choix avait un inconvénient : ajouter une dépendance à chaque application.
La gestion des dépendances est un sujet important dans le monde du software engineering, et certains projets ont tendance à minimiser autant que possible le nombre de dépendances.
Ils ont raison : dépendances peut être synonyme de problèmes, notamment si l’un des package dont vous dépendez est retiré du CRAN.
Même dans un monde confiné où vous avez votre propre dépôt de type CRAN, il y a toujours l’inconvénient du temps d’installation : plus vous avez de dépendances, plus il faut de temps pour installer le package, et par conséquent pour compiler une image Docker, par exemple.
C’est pourquoi nous aurions pu être tentés d’imaginer une approche différente pour {golem}
: créer des fichiers à l’intérieur de votre projet qui contiendraient tout ce dont vous avez besoin. Mais je pense que cette approche peut être plus dangereuse et n’est pas « complète » pour les raisons développées dans le blogpost sur le site de golemverse.
{golem}
a deux types de dépendances : les dépendances dev (les paquets que vous utilisez lorsque vous développez avec {golem})
et les dépendances runtime (celles qui sont utilisées lorsque l’application tourne). Dans la version 0.3.3 de {golem}
, nous avons commencé à supprimer les dépendances dev. La première à disparaître a été {dockerfiler}
, et maintenant avec la version 0.4.0 nous avons déplacé toutes les dépendances dev dans la section Suggests de la DESCRIPTION. Cela signifie que si vous utilisez {golem}
dans une nouvelle distribution de R, l’arbre des dépendances est beaucoup plus léger. 65 dépendances pour la 0.3.5, et 37 pour la 0.4.0.
Mode maintenance
Une nouvelle fonctionnalité dont je suis particulièrement enthousiaste est l’option « Maintenance mode ».
Cette fonctionnalité est née d’un besoin spécifique : en production, j’avais besoin de rendre une application « offline », car je savais que la base de données était sur le point de migrer. Cela impliquait de faire des changements bizarres dans l’interface utilisateur pendant une courte période, avant de remettre l’application en ligne.
C’est alors qu’est née l’idée d’un « mode maintenance », pour les moments où vous avez besoin que votre application soit indisponible : mise à jour de la base de données, changements d’API, etc. Lorsque ce mode de maintenance est activé, votre application est mise en pause et une page spécifique est affichée à vos utilisateurs. Et ce qui est génial, c’est qu’il suffit d’une variable d’environnement : vous n’avez pas besoin de changer quoi que ce soit dans votre application.
Le mode maintenance sera activé chaque fois que le processus R détectera que la variable d’environnement GOLEM_MAINTENANCE_ACTIVE est positionnée à TRUE.
Pour en savoir plus, consultez le site https://golemverse.org/post/golem-0.4.0-release-on-cran/