Les développeurs

Les développeurs

Table des matières

introduction

Cette page contient toutes les informations nécessaires aux développeurs pour contribuer à la plate-forme Hotmaps ou pour comprendre son fonctionnement.

To Top

Intégration du jeu de données

L'intégration de nouveaux jeux de données publics est gérée comme suit:

  1. les ensembles de données doivent être placés dans un référentiel git ( ajoutez vos ensembles de données sur GitLab )
  2. chaque nuit, un script intègre les jeux de données nouveaux / mis à jour sur la plate-forme DEV
  3. si tout a bien fonctionné, l'ensemble de données est maintenant disponible sur la plate-forme DEV et les développeurs peuvent l'intégrer dans leur code.
  4. Une fois le codage terminé, les nouvelles fonctionnalités sont ajoutées à la plate-forme de production via une nouvelle version.

intégration de données

Si un jeu de données échoue pendant l'intégration, un problème est créé sur Taiga (plate-forme de gestion de projet). Le problème indique que l'erreur a été générée et le développeur doit la corriger et transmettre à nouveau son travail à Git afin que le script puisse essayer de l'intégrer à nouveau le lendemain soir.

Le code source du script d'intégration est disponible à ce lien: Intégration de données

To Top

Ajoutez vos jeux de données sur GitLab

Pour ajouter des jeux de données à la liste des jeux de données publics, ils doivent être placés dans un nouveau référentiel Git sur GitLab. Voici l'organisation GitLab dans laquelle les ensembles de données doivent être insérés : Ensembles de données sur GitLab .

Une fois par jour, les référentiels sont vérifiés pour les nouveaux commits et intégrés si c'est le cas. Le processus d'intégration vérifie si les données sont conformes à la spécification ou non.

Voici la spécification: Hotmaps_Data-upload-on-Gitlab_2017-12-04_V4.pdf

To Top

Liste des principaux dépôts

Le code de l'application se trouve sur GitHub sous l' organisation Hotmaps . Cette organisation possède plusieurs référentiels

  • Hotmaps-toolbox-client contient l'interface de notre application. C'est un projet angulaire (JavaScript)
  • Hotmaps-toolbox-service contient l'API de notre application. Il est basé sur Flask (Python)
  • Hotmaps-wiki est le Wiki que vous lisez actuellement
  • base-computing-module est le modèle de base que vous pouvez utiliser pour créer vos propres modules de calcul pour Hotmaps
  • une liste de modules de calculs

To Top

Comment contribuer au code

Si vous souhaitez ajouter du code à Hotmaps, vous avez deux possibilités: si vous souhaitez mettre à jour l'interface ou le backend directement, vous devez modifier le référentiel client ou service de la boîte à outils. Si vous souhaitez ajouter votre propre module de calcul, vous pouvez créer votre propre référentiel en suivant le fichier readme du référentiel base_calculation_module.

Si vous souhaitez effectuer des travaux sur le référentiel Git, veuillez ne pas travailler directement avec la branche principale. Créez une nouvelle branche à partir de la branche develop, effectuez votre travail sur cette branche et lorsque votre fonctionnalité est testée, vous pouvez fusionner votre travail avec la branche develop, comme le montre le graphique suivant.

git_workflow

Afin de placer quelque chose dans un référentiel Hotmaps, vous devez être membre de l'équipe Hotmaps. Si vous ne l'êtes pas, vous pouvez toujours effectuer un fork de notre outil pour développer votre propre outil.

Vous pouvez trouver plus d'informations sur la façon de travailler dans ces documents:

To Top

Description de l'infrastructure informatique

ReverseProxy_architecture_latest

Tous les services et composants sont utilisés via leur propre conteneur Docker. Tous ces conteneurs sont définis dans un seul fichier docker-compose. L'image ci-dessus représente l'architecture informatique de Hotmaps.

Certaines organisations partenaires ont limité la communication au port 80 uniquement. Pour éviter les problèmes causés par cette limitation, la création d'un proxy inverse a été effectuée. Ce proxy inverse offre un seul point d’entrée, puis distribue la demande envoyée par le client au service concerné. Le proxy inverse est composé de trois composants:

  1. Serveur proxy inverse: il sert de point d’entrée unique et distribue les demandes aux bons services.
  2. Proxy-gen: c'est un service qui mappe automatiquement tous les services dans le proxy inverse. Ainsi, il n’est pas nécessaire d’ajouter manuellement un nouveau service à la configuration du proxy.
  3. let-encrypt: c'est un service qui permet l'utilisation du protocole SSL. Cela est nécessaire pour activer le protocole https. Les certificats SSL sont signés par une adresse électronique configurée dans ce service.

Trois réseaux existent:

  • hotmaps_nginx permet au proxy inverse de communiquer avec l'API, l'interface et le géoserver. Cela permet principalement de distribuer une requête au bon service entre les trois.
  • hotmaps_backend permet la communication entre tous les composants du backend: api, frontend, geoserver et la base de données PostgreSQL.
  • hotmaps_cm-net permet la communication entre chaque module de calcul et l'api.

Chaque module de calcul possède son propre conteneur Docker.

Courir avec Docker

Hotmaps utilise le logiciel Docker et l’outil Docker-Compose pour gérer les conteneurs. Un fichier docker-compose.yml contient l’ensemble de la configuration de l’architecture Docker (configuration des conteneurs, des réseaux, des liens, ...). Cela permet aux conteneurs d'être exécutés avec une commande simple:

 docker-compose up 

Il y a plus d'informations sur docker-compose sur le site web de Docker: référence de ligne de commande Compose et référence de fichier Compose .

Un seul conteneur est exécuté séparément des autres: c'est la base de données car il doit rester actif tout le temps. C'est pourquoi il ne figure pas dans le fichier de configuration docker-compose.

Infrastructure de serveur

Infrastructure

Pour le moment, le serveur est hébergé chez HES-SO en Suisse. Deux machines sont disponibles: une pour le développement (développement et tests) et une pour la production (la boîte à outils proprement dite , disponible sur www.hotmaps.eu ).

Les deux machines ont les mêmes spécifications:

  • CPU: Intel Xeon E5-2680 v4 (8) à 2,4 GHz)
  • RAM: 16 Go
  • Disque dur: 500 Go
  • OS: Ubutnu 16.04 LTS

Performance

Nous effectuons fréquemment des tests de performance sur le serveur de développement afin de garantir un certain nombre d'utilisateurs simultanés.

À titre d'exemple, voici les résultats de la première version bêta par rapport aux tests de la version future. La nouvelle version inclut des améliorations de performances.

Cet exemple montre les tests de performance d'utilisateurs simultanés utilisant la même fonction: "courbe de durée pour la sélection d'hectares". La ligne en gras indique la limite à partir de laquelle le serveur commence à générer des erreurs. La sélection d'hectares est un bon exemple car elle montre les requêtes qui nécessitent le plus de ressources.

Sortie bêta de mars 2019

| Nb d'utilisateurs simulés | Temps moyen | Médiane | Temps maximum | Min time | Pourcentage d'erreurs | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 1 | 2936 | 2936 | 2936 | 2936 | 0 | | 20 | 9329 | 9503 | 11778 | 6901 | 0 | | 50 | 22922 | 22713 | 33401 | 8661 | 0 | | 100 | 33302 | 32875 | 58257 | 4929 | 16 | | 200 | na | na | na | na | na | | 300 | na | na | na | na | na |

Prochaine sortie sur le DEV (mars 2019)

| Nb d'utilisateurs simulés | Temps moyen | Médiane | Temps maximum | Min time | Pourcentage d'erreurs | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 1 | 1802 | 1802 | 1802 | 1802 | 0 | | 20 | 5289 | 2677 | 6873 | 2149 | 0 | | 50 | 10775 | 11274 | 17081 | 2577 | 0 | | 100 | 19807 | 20280 | 35142 | 3156 | 0 | | 200 | 37302 | 37575 | 69930 | 3381 | 0 | | 300 | 49091 | 57536 | 83578 | 2447 | 26 |

To Top

Comment définir des indicateurs

Définition d'indicateur

To Top

Références

To Top

Comment citer

To Top

Auteurs et relecteurs

Auteurs:

  • Daniel Hunacek
  • Lucien Zuber
  • Matthieu Dayer

Relecteurs:

To Top

Reconnaissance

Nous souhaitons exprimer notre profonde gratitude au projet Horizon 2020 Hotmaps (accord de subvention n ° 723677), qui a fourni le financement nécessaire à la réalisation de la présente enquête.

To Top

This page was automatically translated. View in another language:

English (original) Bulgarian* Croatian* Czech* Danish* Dutch* Estonian* Finnish* German* Greek* Hungarian* Irish* Italian* Latvian* Lithuanian* Maltese* Polish* Portuguese (Portugal, Brazil)* Romanian* Slovak* Slovenian* Spanish* Swedish*

* machine translated