Innehållsförteckning

Introduktion

Den här sidan innehåller all information som krävs för utvecklare att bidra till Hotmaps-plattformen eller för att förstå hur den fungerar.

To Top

Dataset integration

Integrering av nya offentliga datamängder hanteras enligt följande:

  1. datauppsättningar måste skickas till ett git-arkiv ( lägg till dina datauppsättningar på GitLab )
  2. varje natt integrerar ett skript de nya / uppdaterade datamängderna till DEV-plattformen
  3. om allt fungerade bra är datamängden nu tillgänglig på DEV-plattformen och utvecklare kan integrera den i sin kod
  4. När kodningen är klar läggs de nya funktionerna till i produktionsplattformen genom en ny version

Dataintegration

Om en dataset misslyckas under integrationen skapas ett problem på Taiga (projekthanteringsplattform). Problemet visar det uppkomna felet och utvecklaren bör fixa det och trycka igen sitt arbete till Git så att manuset kan försöka integrera det igen nästa kväll.

Källkoden för integrationsskriptet finns tillgänglig på den här länken: Dataintegration

To Top

Lägg till dina datamängder på GitLab

För att lägga till datamängder i listan över offentliga datamängder måste de skjutas till ett nytt Git-arkiv på GitLab. Här är GitLab-organisationen där datauppsättningar ska tryckas: Datamängder på GitLab .

En gång om dagen kontrolleras förvaren för nya åtaganden och integreras i så fall. Integrationsprocessen kontrollerar om data överensstämmer med specifikationen eller inte.

Här är specifikationen: Hotmaps_Data-upload-on-Gitlab_2017-12-04_V4.pdf

To Top

Lista över huvudförvar

Applikationens kod finns på GitHub under Hotmaps-organisationen . Denna organisation äger flera förvar

  • Hotmaps-toolbox-client innehåller frontend på vår applikation. Det är ett vinklat projekt (JavaScript)
  • Hotmaps-toolbox-service innehåller API för vår applikation. Den är baserad på Flask (Python)
  • bas-beräkningsmodul är den grundläggande mallen du kan använda för att skapa dina egna beräkningsmoduler för Hotmaps
  • en lista över beräkningsmoduler

To Top

Hur man bidrar med kod

Om du vill lägga till lite kod i Hotmaps har du två möjligheter: om du vill uppdatera gränssnittet eller backend direkt måste du ändra klient- eller serviceförvaret för verktygslådan. Om du vill lägga till din egen beräkningsmodul kan du skapa din egen databas genom att följa readme till bas_calculation_module repository

Om du vill utföra lite arbete på Git-arkivet, vänligen arbeta inte direkt med huvudgrenen. Skapa en ny gren från utvecklingsgrenen, gör ditt arbete med den här grenen och när din funktion testas kan du slå samman ditt arbete med utvecklingsgrenen som visas i följande graf.

Git_workflow

För att driva något till Hotmaps-förvaret måste du vara medlem i Hotmaps-teamet, om du inte är det kan du fortfarande utföra en gaffel med vårt verktyg för att utveckla ditt eget verktyg.

Du hittar mer information om hur du arbetar i dessa dokument:

To Top

Beskrivning av IT-infrastruktur

ReverseProxy_architecture_latest

Alla tjänster och komponenter används via sin egen Docker-container. Alla dessa behållare definieras i en enda docker-komponeringsfil. Bilden ovan representerar Hotmaps IT-arkitektur.

Vissa partnerorganisationer begränsade endast kommunikationen till port 80. För att undvika problemen orsakade av denna begränsning skapades en omvänd proxy. Denna omvända proxy erbjuder en enda ingångspunkt och distribuerar sedan begäran som skickats av kunden till den berörda tjänsten. Den omvända proxyen består av tre komponenter:

  1. Omvänd proxyserver: den fungerar som en unik ingångspunkt och distribuerar förfrågningar till rätt tjänster.
  2. Proxy-gen: det är en tjänst som automatiskt kartlägger alla tjänster i omvänd proxy. Det är således inte nödvändigt att manuellt lägga till en ny tjänst i proxykonfigurationen
  3. lets-encrypt: det är en tjänst som tillåter användning av SSL-protokollet. Det är nödvändigt för att aktivera https-protokollet. SSL-certifikaten signeras av en e-postadress som är konfigurerad i den här tjänsten.

Det finns tre nätverk:

  • hotmaps_nginx tillåter omvänd proxy att kommunicera med API: et, frontend och GeoServer. Det gör det främst möjligt att distribuera en begäran till rätt tjänst bland de tre.
  • hotmaps_backend tillåter kommunikation mellan alla komponenter i backend: API, frontend, GeoServer och PostgreSQL-databasen.
  • hotmaps_cm-net tillåter kommunikation mellan varje beräkningsmodul och API.

Varje beräkningsmodul har sin egen Docker-behållare.

To Top

Kör med Docker

Hotmaps använder Docker- programvara och Docker-Compose- verktyg för att hantera behållare. En docker-compose.yml-fil innehåller hela konfigurationen av Docker-arkitekturen (konfiguration av behållare, nätverk, länkar, ...). Detta gör att containrar kan köras med ett enkelt kommando:

 docker-compose up

Det finns mer om docker-compose på webbplatsen för Docker: Skriv kommandoradsreferens och Skriv filreferens .

Det finns bara en container som körs separat från andra: det är databasen eftersom den måste vara uppe hela tiden. Det är därför det inte finns i docker-compose-konfigurationsfilen.

To Top

Serverinfrastruktur

Infrastruktur

För närvarande är servern värd för HES-SO i Schweiz. Det finns två maskiner tillgängliga: en för utveckling (utveckling och testning) och en för produktion (den faktiska verktygslådan, tillgänglig på www.hotmaps.eu ).

Båda maskinerna har samma specifikation:

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

Prestanda

Vi kör ofta prestandatester på utvecklingsservern för att garantera en viss mängd samtidiga användare.

Som ett exempel nedan är resultaten av den första betaversionen jämfört med framtida release-test. Den nya versionen innehåller några förbättringar av prestanda.

Detta exempel visar prestandatesterna för samtidiga användare som använder samma funktion: "varaktighetskurva för hektarval". Den djärva raden visar gränsen där servern börjar ta upp fel. Hektarval är ett bra exempel eftersom det visar de frågor som kräver mest resurser.

Beta släpps från mars 2019

| Antal simulerade användare | Genomsnittlig tid | Median | Max tid | Min tid | Procentandel av fel | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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 |

Slutlig release (augusti 2020)

| Antal simulerade användare | Genomsnittlig tid | Median | Max tid | Min tid | Procentandel av fel | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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

LÄS.ME

Läs.ME

To Top

Hur man definierar indikatorer

Indikator Definition

To Top

Hur man citerar

Daniel Hunacek, Lucien Zuber, Matthieu Dayer, i Hotmaps Wiki, utvecklaravdelningen (september 2020)

To Top

Författare och granskare

Denna sida skrevs av Daniel Hunacek, Lucien Zuber och Matthieu Dayer ( HES-SO ).

☑ Denna sida granskades av Mostafa Fallahnejad ( EEG - TU Wien ).

To Top

Licens

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

Creative Commons Attribution 4.0 internationell licens

Detta arbete är licensierat under en Creative Commons CC BY 4.0 International License.

SPDX-licensidentifierare: CC-BY-4.0

Licenstext: https://spdx.org/licenses/CC-BY-4.0.html

To Top

Bekräftelse

Vi vill förmedla vår djupaste uppskattning till Horizon 2020 Hotmaps-projektet (bidragsöverenskommelse nummer 723677), som gav finansieringen för att genomföra denna undersökning

To Top

This page was automatically translated. View in another language:

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

* machine translated