Entwickler

Entwickler

Inhaltsverzeichnis

Einführung

Diese Seite enthält alle Informationen, die Entwickler benötigen, um zur Hotmaps-Plattform beizutragen oder deren Funktionsweise zu verstehen.

To Top

Datensatzintegration

Die Integration neuer öffentlicher Datensätze erfolgt wie folgt:

  1. Datensätze müssen in ein Git-Repository verschoben werden ( Datensätze in GitLab hinzufügen )
  2. Jede Nacht integriert ein Skript die neuen / aktualisierten Datensätze in die DEV-Plattform
  3. Wenn alles gut funktioniert hat, ist der Datensatz jetzt auf der DEV-Plattform verfügbar, und Entwickler können ihn in ihren Code integrieren
  4. Sobald die Codierung abgeschlossen ist, werden die neuen Funktionen in einem neuen Release zur Produktionsplattform hinzugefügt

Datenintegration

Wenn ein Datensatz während der Integration fehlschlägt, wird ein Problem in Taiga (Projektverwaltungsplattform) erstellt. Das Problem zeigt, dass der Fehler aufgetreten ist und der Entwickler das Problem beheben und seine Arbeit erneut an Git senden sollte, damit das Skript versuchen kann, ihn am nächsten Abend erneut zu integrieren.

Der Quellcode des Integrationsskripts ist unter folgendem Link verfügbar: Datenintegration

To Top

Fügen Sie Ihre Datensätze in GitLab hinzu

Um Datensätze zur Liste der öffentlichen Datensätze hinzuzufügen, müssen sie in ein neues Git-Repository in GitLab verschoben werden. Hier ist die GitLab-Organisation, in die Datensätze übertragen werden sollen: Datensätze in GitLab .

Einmal am Tag werden die Repositories auf neue Commits überprüft und gegebenenfalls integriert. Der Integrationsprozess prüft, ob die Daten der Spezifikation entsprechen oder nicht.

Hier ist die Spezifikation: Hotmaps_Data-upload-on-Gitlab_2017-12-04_V4.pdf

To Top

Liste der wichtigsten Repositories

Der Code der Anwendung befindet sich auf GitHub unter der Hotmaps-Organisation . Diese Organisation besitzt mehrere Repositorys

To Top

Wie man Code beisteuert

Wenn Sie Hotmaps Code hinzufügen möchten, haben Sie zwei Möglichkeiten: Wenn Sie die Benutzeroberfläche oder das Backend direkt aktualisieren möchten, müssen Sie das Client- oder Service-Repository der Toolbox ändern. Wenn Sie Ihr eigenes Berechnungsmodul hinzufügen möchten, können Sie Ihr eigenes Repository erstellen, indem Sie der Readme-Datei des Repository base_calculation_module folgen

Wenn Sie Arbeiten am Git-Repository ausführen möchten, arbeiten Sie nicht direkt mit dem Master-Zweig. Erstellen Sie einen neuen Zweig aus dem Entwicklungszweig, bearbeiten Sie diesen Zweig, und wenn Ihre Funktion getestet wurde, können Sie Ihre Arbeit mit dem Entwicklungszweig zusammenführen, wie in der folgenden Grafik dargestellt.

git_workflow

Um etwas in ein Hotmaps-Repository zu pushen, müssen Sie Mitglied des Hotmaps-Teams sein. Andernfalls können Sie immer noch eine Abzweigung unseres Tools ausführen, um Ihr eigenes Tool zu entwickeln.

Weitere Informationen zum Arbeiten finden Sie in den folgenden Dokumenten:

To Top

Beschreibung der IT-Infrastruktur

ReverseProxy_architecture_latest

Alle Dienste und Komponenten werden über einen eigenen Docker-Container verwendet. Alle diese Container sind in einer einzigen Docker-Compose-Datei definiert. Das obige Bild zeigt die IT-Architektur von Hotmaps.

Einige Partnerorganisationen beschränkten die Kommunikation nur auf Port 80. Um die durch diese Einschränkung verursachten Probleme zu vermeiden, wurde ein Reverse-Proxy erstellt. Dieser Reverse-Proxy bietet einen einzelnen Eintrittspunkt und verteilt dann die vom Kunden gesendete Anfrage an den betreffenden Dienst. Der Reverse Proxy besteht aus drei Komponenten:

  1. Reverse-Proxy-Server: Er dient als eindeutiger Eintrittspunkt und verteilt Anforderungen an die richtigen Dienste.
  2. Proxy-Gen: Dies ist ein Dienst, der automatisch alle Dienste im Reverse-Proxy zuordnet. Daher ist es nicht erforderlich, der Proxy-Konfiguration manuell einen neuen Dienst hinzuzufügen
  3. lets-encrypt: Dies ist ein Dienst, der die Verwendung des SSL-Protokolls ermöglicht. Es ist notwendig, um das https-Protokoll zu aktivieren. Die SSL-Zertifikate werden von einer in diesem Dienst konfigurierten E-Mail-Adresse signiert.

Es gibt drei Netzwerke:

  • hotmaps_nginx ermöglicht dem Reverse-Proxy die Kommunikation mit der API, dem Frontend und dem Geoserver. Es erlaubt hauptsächlich, eine Anfrage an den richtigen Dienst unter den drei zu verteilen.
  • hotmaps_backend ermöglicht die Kommunikation zwischen allen Komponenten des Backends: API, Frontend, Geoserver und der PostgreSQL-Datenbank.
  • hotmaps_cm-net ermöglicht die Kommunikation zwischen den einzelnen Berechnungsmodulen und der API.

Jedes Berechnungsmodul verfügt über einen eigenen Docker-Container.

Führen Sie mit Docker aus

Hotmaps verwendet Docker- Software und Docker-Compose- Tool zum Verwalten von Containern. Eine docker-compose.yml-Datei enthält die gesamte Konfiguration der Docker-Architektur (Konfiguration von Containern, Netzwerken, Links, ...). Dies ermöglicht die Ausführung von Containern mit einem einfachen Befehl:

 docker-compose up 

Weitere Informationen zu Docker- Compose finden Sie auf der Docker-Website: Compose-Befehlszeilenreferenz und Compose- Dateireferenz.

Es gibt nur einen Container, der separat von anderen ausgeführt wird: Es handelt sich um die Datenbank, da diese die ganze Zeit aktiv sein muss. Aus diesem Grund ist es nicht in der Docker-Compose-Konfigurationsdatei enthalten.

Serverinfrastruktur

Infrastruktur

Der Server wird vorerst bei der HES-SO in der Schweiz gehostet. Es stehen 2 Maschinen zur Verfügung: eine für die Entwicklung (Entwicklung und Prüfung) und eine für die Produktion (die aktuelle Toolbox, verfügbar unter www.hotmaps.eu ).

Beide Maschinen haben die gleiche Spezifikation:

  • CPU: Intel Xeon E5-2680 v4 (8) bei 2,4 GHz
  • RAM: 16 GB
  • Festplatte: 500 GB
  • OS: Ubutnu 16.04 LTS

Performance

Wir führen häufig Leistungstests auf dem Entwicklungsserver durch, um eine bestimmte Anzahl gleichzeitiger Benutzer zu gewährleisten.

Im Folgenden sind beispielhaft die Ergebnisse der ersten Beta-Version im Vergleich zu den zukünftigen Release-Tests aufgeführt. Die neue Version enthält einige Leistungsverbesserungen.

Dieses Beispiel zeigt die Leistungstests von gleichzeitigen Benutzern, die dieselbe Funktion verwenden: "Dauer-Kurve für Hektar-Auswahl". Die fette Linie zeigt die Grenze, an der der Server Fehler auslöst. Die Hektarauswahl ist ein gutes Beispiel, da sie die Abfragen zeigt, die die meisten Ressourcen erfordern.

Beta-Version von März 2019

| Anzahl der simulierten Benutzer Durchschnittliche Zeit | Median | Maximale Zeit | Min Zeit | Prozentsatz der Fehler | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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 |

Zukünftige Veröffentlichung auf der DEV (März 2019)

| Anzahl der simulierten Benutzer Durchschnittliche Zeit | Median | Maximale Zeit | Min Zeit | Prozentsatz der Fehler | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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

Indikatoren definieren

Indikatordefinition

To Top

Verweise

To Top

Wie man zitiert

To Top

Autoren und Gutachter

Autoren:

  • Daniel Hunacek
  • Lucien Zuber
  • Matthieu Dayer

Rezensenten:

To Top

Wissen

Wir möchten dem Horizon 2020 Hotmaps-Projekt (Finanzhilfevereinbarung Nr. 723677), das die Mittel für die Durchführung dieser Untersuchung zur Verfügung stellte, unsere tiefste Anerkennung aussprechen

To Top

This page was automatically translated. View in another language:

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

* machine translated