Technologie

Le ClimWeb comprend des outils et des fonctionnalités destinés à soutenir les SMHN dans leurs activités quotidiennes de gestion de sites Web, en fournissant des informations et des services à leurs utilisateurs.

Cette section vise à présenter le choix des technologies, l’approche de développement et à présenter les packages qui supportent les fonctionnalités disponibles sur le ClimWeb à un niveau élevé.

Le ClimWeb développé est open source et hébergé sur GitHub à l’adresse https://github.com/wmo-raf/nmhs-cms

Cadre de base ClimWeb

Le modèle de site Web est construit sur le framework open source Wagtail. Wagtail lui-même est construit sur Django , qui est un framework Web Python de haut niveau qui encourage un développement rapide et une conception propre et pragmatique.

Framework ClimWeb

Les éléments suivants ont été pris en compte lors du choix de Wagtail comme cadre de choix :

  • Python comme langage de programmation. Le domaine météorologique et climatique nécessite de nombreuses interactions avec les données scientifiques. Python est l’un des langages de script qui facilite le développement de procédures permettant de manipuler ce type de données. Développer un site Web en utilisant Python permet ainsi la flexibilité de développer des fonctionnalités basées sur les données

  • Facile à utiliser : L’une des principales caractéristiques de Wagtail est son interface intuitive et conviviale. Cela permet aux éditeurs de contenu de gérer facilement des sites Web sans avoir à apprendre les complexités et les aspects techniques du cadre sous-jacent.

  • Flexibilité : Wagtail est flexible lorsqu’il s’agit de créer et de gérer des sites Web. Il permet le développement rapide de sites Web hautement personnalisés avec des mises en page, du contenu et des fonctionnalités complexes, en fonction des besoins des éditeurs de contenu.

  • Extensibilité : Wagtail est conçu pour être facilement étendu avec une grande variété de plugins, de thèmes, de composants et d’autres fonctionnalités. Cela permet d’ajouter de nouvelles fonctionnalités, de personnaliser l’apparence de leur site Web et d’étendre les fonctionnalités de ClimWeb.

  • Sécurité : Wagtail est conçu dans un souci de sécurité. Il est livré avec les fonctionnalités de sécurité intégrées de Django telles que l’authentification des utilisateurs, la validation des entrées et la protection contre les méthodes d’attaque courantes.

  • Évolutivité : Basé sur Django, Wagtail est conçu pour être hautement évolutif, ce qui en fait un choix idéal pour les sites Web comportant de grandes quantités de contenu et d’utilisateurs. Il peut gérer de grandes quantités de données sans aucun problème de performances, permettant aux développeurs de créer des sites Web qui peuvent se développer à mesure que leur base d’utilisateurs augmente.

  • Fonctionnalités d’entreprise prêtes à l’emploi : Wagtail inclut les autorisations des utilisateurs et des groupes, les flux de travail de contenu et de modération, les rapports, le suivi de l’historique des modifications de contenu et d’autres fonctionnalités dont les administrateurs et les équipes de sites Web ont besoin.

  • Expérience de l’équipe de développement : L’équipe de développement actuelle de ClimWeb du SMHN possède une vaste expérience dans le développement de projets basés sur Wagtail et Django. Cela permet de mettre en œuvre rapidement de nouvelles fonctionnalités et fonctionnalités

Approche de développement

Nous utilisons l’approche modulaire Django/Wagtail pour développer des « applications Django » pour fournir un ensemble de fonctionnalités. Une application Django/Wagtail est un package Python qui fournit un ensemble de fonctionnalités. Les applications peuvent être réutilisées dans divers projets.

Les applications incluent une combinaison de modèles Django, de vues, de modèles, de balises de modèle, de fichiers statiques, d’URL, de middleware, etc. Ceux-ci sont ensuite connectés au projet avec les paramètres INSTALLED_APPS. Une application est donc, dans ce contexte, un ensemble de codes qui interagit avec différentes parties du framework.

Le NMHS ClimWeb est ainsi conçu avec un ensemble d’applications internes qui fournissent des fonctionnalités pour différentes pages Web du site Web fonctionnel. Celles-ci sont organisées sous le répertoire pages du code source de ClimWeb. Chaque sous-répertoire des pages correspond à une section du site Web qui peut permettre de créer une ou plusieurs pages liées à cette section

Des fonctionnalités plus spécialisées sont développées sous forme d’applications externes Wagtail qui peuvent être connectées au projet de code. Ceux-ci sont ensuite installés sous forme de packages Python publiés sur le Python Package Index (PyPI), qui est un référentiel de logiciels pour le langage de programmation Python.

Packs de fonctionnalités

  • CAP Composer : Outil de composition et de publication du Common Alerting Protocol (CAP) qui fournit des fonctionnalités permettant de créer et de publier des alertes au format CAP.

  • Forecast Manager – Interface de gestion des prévisions urbaines des SMHN

  • GeoManager - Fournit une interface interactive pour gérer et publier des ensembles de données géoréférencées (SIG)

  • Administrative Boundary Manager : Fournit des fonctionnalités pour charger, gérer et visualiser les limites d’un pays

  • Éditeur WebStories - Fournit des fonctionnalités pour créer et publier des Google Web Stories

  • Surveys Creator – Fournit des fonctionnalités pour créer et publier des enquêtes directement dans ClimWeb, visualisation et analyse des résultats à l’aide de graphiques interactifs

Packages d’intégration d’outils tiers

Marketing par e-mail

Réunions en ligne

  • Intégration Zoom : Intégrez Zoom l’inscription aux événements (réunions ou webinaires) pour former des pages créées avec Wagtail

Cadres et bibliothèques d’interface utilisateur


Développement de nouvelles fonctionnalités

Une approche modulaire est utilisée lors du développement de nouvelles fonctionnalités à inclure dans ClimWeb. La nouvelle fonctionnalité doit être développée de manière isolée en tant que package Wagtail Python et publiée sur PyPi pour être installée à l’aide de Pip.

Nous suivons les étapes suivantes en général :

  • Explorez les packages existants dans la communauté Wagtail/Django qui offrent des fonctionnalités similaires.

  • Si un package existant existe et ne peut pas être directement intégré au ClimWeb, nous essayons de personnaliser au maximum ce package, pour le rendre interopérable. Sinon, on l’utilise directement

  • Si nous ne trouvons pas de packages existants, nous développons le package à partir de zéro. L’idée est d’éviter autant que possible de réinventer la roue.

Déploiement de production

Docker permet de conteneuriser les différents composants du ClimWeb.

Les autres conteneurs utilisés comprennent

  • PostgreSQL avec l’extension PostGIS comme base de données

  • Nginx en tant que serveur Web et proxy Web

  • Memcached comme système de mise en cache pour les requêtes Web

  • Eclipse Mosquitto en tant que courtier de messages MQTT. Principalement utilisé pour la messagerie des alertes CAP

Ceux-ci sont placés dans un fichier de configuration Docker Compose, utilisé pour déployer le projet à l’aide de Docker Compose.

Un référentiel d’initialisation est fourni qui rassemble tous les différents composants en un seul projet. Ceci est accessible sur https://github.com/wmo-raf/nmhs-cms-init . Un guide d’installation est fourni dans le fichier README du référentiel.

Gestion des mises à jour

De nouvelles versions contenant des corrections de bogues et des mises à jour de fonctionnalités sont publiées périodiquement sur les versions du référentiel nmhs-cms.

Lorsqu’il y a une nouvelle version, l’interface d’administration de ClimWeb affichera un message indiquant qu’il y a une nouvelle version. L’administrateur du site Web peut alors choisir de mettre à niveau vers la nouvelle version, après avoir parcouru les notes de version qui accompagnent chaque version.

La mise à niveau se fait par un clic sur un bouton, qui déclenche un processus de construction de Docker avec les nouvelles versions. Une fois la nouvelle version créée avec succès, le conteneur est redémarré avec la nouvelle version appliquée.

Bouton de mise à jour ClimWeb

Dans les rares cas où le déclencheur de build automatique échoue, les administrateurs système sont formés pour effectuer manuellement la mise à niveau.

Sécurité dans Django/Wagtail

Le ClimWeb, utilisant Django/Wagtail, contient les fonctionnalités de sécurité suivantes intégrées. Plus de détails sur chaque fonctionnalité peuvent être trouvés sur https://docs.djangoproject.com/en/5.0/topics/security

  • Protection contre les scripts intersites (XSS)

  • Protection contre la falsification de requêtes intersites (CSRF)

  • Protection contre les injections SQL

  • Protection contre le détournement de clics

  • Paramètres de protection SSL\HTTPS

  • Validation de l’en-tête de l’hôte

  • Protection de la politique de référence

  • Politique d’ouverture d’origine croisée

  • Sécurité des sessions

  • Protection du contenu téléchargé par l’utilisateur

Fonctionnalités de sécurité spécifiques à ClimWeb :

  • Possibilité de changer périodiquement l’URL de l’administrateur

  • Mécanismes de sauvegarde quotidienne

  • Préventions des connexions par force brute

  • Authentification à 2 facteurs pour le compte administrateur