Les applications web cartographique ou à caractère géographique sont de plus en plus nombreuses et de plus en plus simples à réaliser (notamment avec les outils ArcGIS Online). Bien que des outils clefs en main existent, il est important de réfléchir l’architecture complète d’une application afin de la rendre plus performante, rapide et sûre.
Cet article n’a pas la prétention d’être exhaustif sur le sujet des architectures réseaux et de la sécurité informatique. Il s’agit avant tout de détailler le fonctionnement d’une application cartographique en réseau et identifier les points d’attention et les solutions existantes.
La partie serveur
La partie serveur d’une application web est la plus importante. Elle va déterminer la fluidité et la performance de l’application. Avant de détailler les composantes internes au serveur, parlons des serveurs en eux-mêmes. Un serveur est un ensemble de matériel informatique (processeurs, disques durs, …) distribuant des services pour des clients, dans le modèle client-serveur. Pour faire simple, un serveur distribue de l’information à des clients (un logiciel, une interface web…) via des protocoles réseaux (HTTP, HTTPS, TCP/IP, FTP…).
Les serveurs, comme les ordinateurs, utilisent un système d’exploitation pour fonctionner. Le choix de ce système dépend de vos besoins et de la structure. Pour citer des exemples de système : Ubuntu Server (Linux), Debian Server (Linux), Windows Server… De manière générale, les serveurs type GNU/Linux sont les plus utilisés.
La partie serveur s’organise en 4 grandes composantes : la base de données, le serveur web, le serveur cartographique, les fichiers sources.
La base de données
Toutes les interfaces et applications web utilisent une base de données pour stocker l’information. De nombreux système de gestion de base de données existent : PostgreSQL, Oracle, MySQL, MongoDB… Le choix du système dépend des besoins. Pour l’information géographique, PostgreSQL/GIS et Oracle sont les solutions les plus appréciées.
Le rôle de la base de données est de stocker les informations dans un lieu sûr et stable, avec des protocoles de transmission de données intégrés (principalement le TCP/IP mais aussi le SSL pour plus de sécurité). La transmission de données entre la base de données et une interface web ne doit jamais se faire de manière directe, les serveurs web et les serveurs cartographiques en sont les intermédiaires pour plus de sécurité.
Le serveur web
Le serveur web est le cœur du système dans son ensemble. Un serveur web est un service intégré à un serveur informatique, il permet de répondre aux requêtes du World Wide Web (www) via des protocoles (HTTP, HTTPS, FTP…). Le serveur web est l’intermédiaire entre le client et le serveur, il fait la liaison entre la requête reçue et les composantes du serveur informatique, puis répond à la requête en envoyant un fichier HTML au client.
Les serveurs web sont très nombreux et dépendent du système d’exploitation du serveur, on pourra citer : Apache, Nginx, Internet Information Services (IIS), Node JS…
Le serveur cartographique
Un serveur cartographique est un type spécifique de serveur web permettant de gérer et distribuer des données géographiques. C’est l’intermédiaire entre la base de données spatiales (PostGIS ou Oracle par exemple) et l’interface web. Il permet notamment de distribuer des flux WMS/WMTS/WFS pour visualiser de l’information. Encore une fois, plusieurs solutions existent : MapServer, GeoServer, ArcGIS Server, QGIS Server…
Les fichiers sources
Les fichiers sources sont la partie gérant les fonctionnalités de votre application web. Ces fichiers peuvent être très variés : HTML, JavaScript, CSS, Python, PHP, …
Tous les fichiers sources d’une application web doivent être intégré au serveur web. Ce dernier a pour tâche de traduire les requêtes reçues afin d’aller chercher les fichiers sources, puis d’envoyer ces fichiers au client.
Une application web peut nécessiter un intermédiaire entre les fichiers sources et le serveur web, c’est le cas par exemple des applications Django/GeoDjango. Le serveur web ne peut communiquer directement avec l’application Django/GeoDjango, il utilise un intermédiaire : le Web Server Gateway Interface (WSGI) qui est un standard Python. WSGI est un protocole de communication entre l’application Django/GeoDjango et le serveur web.
Pour résumer, le schéma ci-dessous résume le cheminement d’une requête du client au serveur.
La partie client
La partie client est gérée par le moteur de recherche. Ce dernier traduit les informations entrées par l’utilisateur (url, recherche…) en requêtes HTTP ou HTTPS, puis les transmet à l’hôte (le serveur), le moteur lit ensuite le fichier HTML transmis par le serveur en réponse. Le serveur peut également récupérer des informations dans la requête émise par le client pour générer du SQL dans la base de données, ce processus permet de mettre à jour des données dans cette dernière par exemple.
Chaque moteur de recherche a ses spécificités, il faut être vigilant aux problèmes de compatibilités des fonctionnalités vis-à-vis du moteur, surtout avec Internet Explorer.
L’importance de l’architecture réseau d’une application web cartographique
L’architecture d’une application cartographique web est cruciale dans son développement. Il est important de s’y intéresser de près afin d’en améliorer la sécurité, la performance et l’utilité.
Il existe, de manière générale, un fossé trop important entre la Géomatique et les architectures réseaux. La compréhension des protocoles de transmission et des serveurs est pourtant un atout important dans l’efficacité d’un SIG et d’un SIG Web.
Sources
https://fr.wikipedia.org/wiki/Serveur_informatique
https://fr.wikipedia.org/wiki/Mod%C3%A8le_OSI
https://fr.wikipedia.org/wiki/Serveur_web
https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html