Vers une meilleure intégration de GeoServer dans une infrastructure cloud
Adrien Van Hamme
A l’origine des travaux réalisés
Depuis 2019, Camptocamp est engagé auprès de l’Agence du Numérique de la Sécurité Civile (ANSC) pour réaliser le développement des composants cartographiques de son projet NexSIS 18-112.
Ce projet consiste en la réalisation d’un ensemble d’applications web, permettant aux acteurs de la Sécurité Civile de recevoir des appels d’urgence, de qualifier (Où ? Quoi ? Qui ?) ces appels et de choisir les ressources qui vont intervenir. L’année 2021 sera une année charnière pour ce projet, puisqu’il est prévu de mettre à disposition les applications NexSIS 18-112 auprès de plusieurs services d’incendie et de secours (pompiers) en région parisienne et en province.
Les applications développées dans le cadre de NexSIS 18-112 laissent une place importante à la géographie et aux outils cartographiques (représentation, aide à la décision, etc.). Dans le cadre du développement de ces applications, GeoServer s’est rapidement imposé comme une brique incontournable, dans le but de faire face à un certain nombre des besoins exprimés par le client.
Nous avons été en mesure d’aider notre client à identifier ses contraintes et à exprimer ses objectifs autour de GeoServer. Son principal souhait était de se rapprocher d’un GeoServer haute-disponibilité et de le faire gagner en résilience. Améliorer l’exploitabilité de GeoServer était également un objectif à poursuivre, les équipes d’exploitation du client n’étant pas particulièrement familiarisées avec cette solution. En regard de ses objectifs, le client a fixé une contrainte : ce chantier ne devait pas avoir d’impacts sur les développements déjà réalisés, comme sur ceux à venir.
Défi relevé !
Une fois ces éléments portés à notre connaissance, nous avons été en mesure de faire une proposition à notre client. Nous lui avons notamment proposé de reverser le travail effectué auprès de la communauté de GeoServer.
D’un point de vue technique, notre proposition contenait principalement trois axes :
- Stocker la configuration de GeoServer dans une base de données (plus fiable qu’un système de fichiers)
- Améliorer le fonctionnement d’un cluster GeoServer (rafraîchissement de la configuration entre instances)
- Séparer les composants logiciels de GeoServer en microservices (WebUI, API REST, Service WFS, WMS, etc.)
Après plusieurs mois de travaux, la première version de GeoServer Cloud vient d’être publiée. Cette nouvelle brique est une surcouche qui, appliquée à GeoServer, permet d’en améliorer la disponibilité, la résilience, et l'exploitabilité.
GeoServer Cloud, qui a été déployé sur les plateformes de notre client, permet maintenant de :
- Partager simplement une configuration entre plusieurs instances de GeoServer
- Fiabiliser le rafraichissement de la configuration au sein de ces instances via un MOM (RabbitMQ dans le cas de notre client)
- Dimensionner finement les services exposés par GeoServer (et ce pour chaque service)
- Améliorer la résilience de GeoServer face à la panne et faciliter sa maintenance
- Simplifier l’intégration de GeoServer dans un contexte “cloud“ (un cluster Kubernetes dans le cas de notre client)
Et demain ?
Il reste encore évidemment du travail pour industrialiser toutes les améliorations que nous avons voulu apporter à GeoServer. Cela étant, ce travail est suffisamment mature pour être rendu public auprès de la communauté des utilisateurs et contributeurs de GeoServer. C’est en ce sens que nous avons officiellement remis les clefs de ce projet GeoServer Cloud à l’OSGeo et GeoServer :
- Dépôt officiel : https://github.com/geoserver/geoserver-cloud
- Documentation : http://geoserver.org/geoserver-cloud/
Et pour faciliter encore un peu plus le déploiement de GeoServer, nous travaillons, en parallèle, à la création d’un provider Terraform. Cet outil permettra de générer une configuration de GeoServer via des appels à l’API REST exposée par GeoServer. En d’autres termes, cela nous donne la possibilité de gérer notre configuration de GeoServer “as code”, ce qui est particulièrement pratique pour versionner cette configuration, l’appliquer automatiquement dans une chaîne de CI/CD, etc.. Le déploiement d’un cluster GeoServer devient donc complètement automatisable et la configuration sera appliquée sans aucune intervention manuelle de la part d’un exploitant ! Ceux qui le veulent pourront même se passer totalement de l’interface graphique (WebUI) de GeoServer… ce qui est rendu possible par le découpage en microservices offert par GeoServer Cloud !
Carrière
Vous souhaitez travailler dans un environnement inspirant et rejoindre nos équipes motivées et multiculturelles ?