Table des matières

introduction

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

To Top

Intégration des ensembles de données

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

  1. les ensembles de données doivent être poussés vers un référentiel git ( ajoutez vos ensembles de données sur GitLab )
  2. chaque nuit, un script intègre les ensembles de données nouveaux / mis à jour à la plateforme DEV
  3. si tout a bien fonctionné, le jeu de données est désormais disponible sur la plateforme 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 ensemble de données échoue lors de l'intégration, un problème est créé sur Taiga (plateforme de gestion de projet). Le problème montre l'erreur soulevée et le développeur doit la corriger et pousser à nouveau son travail vers Git afin que le script puisse essayer de l'intégrer à nouveau le soir suivant.

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

To Top

Ajoutez vos ensembles de données sur GitLab

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

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

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

To Top

Liste des principaux référentiels

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 le frontend de notre application. C'est un projet angulaire (JavaScript)
  • Hotmaps-toolbox-service contient l'API de notre application. Il est basé sur Flask (Python)
  • base-calcul-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 directement l'interface ou le backend, 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 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 master. Créez une nouvelle branche à partir de la branche de développement, faites votre travail sur cette branche et lorsque votre fonctionnalité est testée, vous pouvez fusionner votre travail avec la branche de développement comme indiqué dans le graphique suivant.

Git_workflow

Afin de pousser quelque chose vers un référentiel Hotmaps, vous devez être membre de l'équipe Hotmaps, si vous ne l'êtes pas, vous pouvez toujours effectuer une fourchette 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 point d'entrée unique puis distribue la requête 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. lets-encrypt: c'est un service qui permet l'utilisation du protocole SSL. Il est nécessaire pour activer le protocole https. Les certificats SSL sont signés par une adresse e-mail configurée dans ce service.

Trois réseaux existent:

  • hotmaps_nginx permet au proxy inverse de communiquer avec l'API, le frontend et le GeoServer. Il permet principalement de distribuer une demande au bon service parmi 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.

To Top

Exécuter avec Docker

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

 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 .

Il n'y a qu'un seul conteneur qui est exécuté séparément des autres: c'est la base de données car elle doit rester active tout le temps. C'est pourquoi ce n'est pas dans le fichier de configuration docker-compose.

To Top

Infrastructure serveur

Infrastructure

Pour le moment, le serveur est hébergé à la HES-SO en Suisse. Il y a 2 machines disponibles: une pour le développement (développement et test) 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:

  • Processeur: Intel Xeon E5-2680 v4 (8) à 2,4 GHz)
  • Mémoire RAM: 16 Go
  • Disque dur: 500 Go
  • Système d'exploitation: Ubutnu 16.04 LTS

Performance

Nous effectuons fréquemment des tests de performances 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 versions futures. La nouvelle version inclut des améliorations de performances.

Cet exemple montre les tests de performance des 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 à laquelle le serveur commence à générer des erreurs. La sélection d'hectare 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 max | Temps min | Pourcentage d'erreurs | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 1 | 1042 | 1042 | 1042 | 1042 | 0 | | 20 | 3608 | 3858 | 4475 | 2156 | 0 | | 50 | 7337 | 7595 | 11791 | 1568 | 0 | | 100 | 13897 | 13644 | 24492 | 1875 | 0 | | 200 | 27135 | 26380 | 51967 | 3045 | 0 | | 300 | 41237 | 43083 | 73245 | 3223 | 10,67 |

Version finale (août 2020)

| Nb d'utilisateurs simulés | Temps moyen | Médiane | Temps max | Temps min | Pourcentage d'erreurs | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 1 | 1025 | 970 | 1151 | 956 | 0 | | 20 | 1671 | 1732 | 2085 | 1113 | 0 | | 50 | 3527 | 3622 | 5593 | 982 | 0 | | 100 | 6648 | 6764 | 11854 | 1118 | 0 | | 200 | 12904 | 12801 | 24163 | 1192 | 0 | | 300 | 19521 | 19382 | 38116 | 1060 | 0 |

To Top

LISEZ-MOI

Read.ME

To Top

Comment définir les indicateurs

Définition de l'indicateur

To Top

Comment citer

Daniel Hunacek, Lucien Zuber, Matthieu Dayer, dans Hotmaps Wiki, Section développeurs (septembre 2020)

To Top

Auteurs et relecteurs

Cette page a été rédigée par Daniel Hunacek, Lucien Zuber et Matthieu Dayer ( HES-SO ).

☑ Cette page a été révisée par Mostafa Fallahnejad ( EEG - TU Wien ).

To Top

Licence

Copyright © 2016-2020: Daniel Hunacek, Lucien Zuber et Matthieu Dayer

Licence internationale Creative Commons Attribution 4.0

Ce travail est concédé sous une licence internationale Creative Commons CC BY 4.0.

Identificateur de licence SPDX: CC-BY-4.0

Texte de la licence: https://spdx.org/licenses/CC-BY-4.0.html

To Top

Reconnaissance

Nous tenons à exprimer notre profonde gratitude au projet Horizon 2020 Hotmaps (accord de subvention numéro 723677), qui a fourni le financement pour mener à bien la présente enquête.

To Top

This page was automatically translated. View in another language:

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

* machine translated