Indholdsfortegnelse

Introduktion

Denne side indeholder alle de oplysninger, der kræves for udviklere at bidrage til Hotmaps-platformen eller forstå, hvordan den fungerer.

To Top

Integration af datasæt

Integration af nye offentlige datasæt håndteres som følger:

  1. datasæt skal skubbes til et git-arkiv ( Tilføj dine datasæt på GitLab )
  2. hver nat integrerer et script de nye / opdaterede datasæt til DEV-platformen
  3. hvis alt fungerede godt, er datasættet nu tilgængeligt på DEV-platformen, og udviklere kan integrere det i deres kode
  4. Når kodningen er afsluttet, tilføjes de nye funktioner til produktionsplatformen gennem en ny udgivelse

Dataintegration

Hvis et datasæt mislykkes under integrationen, oprettes et problem på Taiga (projektstyringsplatform). Problemet viser den rejste fejl, og udvikleren skal rette den og skubbe sit arbejde til Git igen, så scriptet kan forsøge at integrere det igen næste aften.

Kildekoden til integrationsskriptet er tilgængelig på dette link: Dataintegration

To Top

Tilføj dine datasæt på GitLab

For at tilføje datasæt på listen over offentlige datasæt skal de skubbes til et nyt Git-arkiv på GitLab. Her er GitLab-organisationen, hvor datasæt skal skubbes: Datasæt på GitLab .

En gang om dagen kontrolleres opbevaringsstederne for nye forpligtelser og integreres i så fald. Integrationsprocessen kontrollerer, om dataene stemmer overens med specifikationen eller ej.

Her er specifikationen: Hotmaps_Data-upload-on-Gitlab_2017-12-04_V4.pdf

To Top

Liste over hovedlagre

Koden til applikationen findes på GitHub under Hotmaps-organisationen . Denne organisation ejer flere arkiver

  • Hotmaps-toolbox-client indeholder frontend på vores applikation. Det er et kantet projekt (JavaScript)
  • Hotmaps-toolbox-service indeholder API til vores applikation. Det er baseret på Flask (Python)
  • base-beregningsmodul er den grundlæggende skabelon, du kan bruge til at oprette dine egne beregningsmoduler til Hotmaps
  • en liste over beregningsmoduler

To Top

Sådan bidrager du med kode

Hvis du vil tilføje noget kode til Hotmaps, har du to muligheder: Hvis du vil opdatere grænsefladen eller backend direkte, skal du ændre klient- eller servicelageret i værktøjskassen. Hvis du vil tilføje dit eget beregningsmodul, kan du oprette dit eget lager ved at følge readme til base_calculation_module repository

Hvis du vil udføre noget arbejde på Git-arkivet, skal du ikke arbejde direkte med mastergrenen. Opret en ny gren fra udviklingsgrenen, gør dit arbejde med denne gren, og når din funktion er testet, kan du flette dit arbejde med udviklingsgrenen som vist i følgende graf.

Git_workflow

For at skubbe noget til et Hotmaps-lager skal du være medlem af Hotmaps-teamet. Hvis du ikke er det, er du stadig i stand til at udføre en fork af vores værktøj til at udvikle dit eget værktøj.

Du kan finde flere oplysninger om, hvordan du arbejder i disse dokumenter:

To Top

Beskrivelse af it-infrastruktur

ReverseProxy_architecture_latest

Alle tjenester og komponenter bruges gennem deres egen Docker-container. Alle disse containere er defineret i en enkelt docker-compose-fil. Ovenstående billede repræsenterer it-arkitekturen for Hotmaps.

Nogle partnerorganisationer begrænsede kun kommunikationen til havn 80. For at undgå problemer forårsaget af denne begrænsning blev oprettelsen af en omvendt proxy foretaget. Denne omvendte proxy tilbyder et enkelt indgangspunkt og distribuerer derefter den anmodning, der sendes af kunden, til den pågældende tjeneste. Den omvendte proxy består af tre komponenter:

  1. Reverse proxyserver: den fungerer som et unikt indgangspunkt og distribuerer anmodninger til de rigtige tjenester.
  2. Proxy-gen: det er en tjeneste, der automatisk kortlægger alle tjenester i den omvendte proxy. Det er således ikke nødvendigt manuelt at tilføje en ny tjeneste til proxy-konfigurationen
  3. lets-encrypt: det er en tjeneste, der tillader brug af SSL-protokollen. Det er nødvendigt for at aktivere https-protokollen. SSL-certifikaterne er underskrevet af en e-mail-adresse, der er konfigureret i denne tjeneste.

Der findes tre netværk:

  • hotmaps_nginx gør det muligt for den omvendte proxy at kommunikere med API, frontend og GeoServer. Det giver primært mulighed for at distribuere en anmodning til den korrekte tjeneste blandt de tre.
  • hotmaps_backend tillader kommunikation mellem alle komponenter i backend: API, frontend, GeoServer og PostgreSQL-databasen.
  • hotmaps_cm-net tillader kommunikation mellem hvert beregningsmodul og API.

Hvert beregningsmodul har sin egen Docker-container.

To Top

Kør med Docker

Hotmaps bruger Docker- software og Docker-Compose- værktøj til at styre containere. En docker-compose.yml-fil indeholder hele konfigurationen af Docker-arkitekturen (konfiguration af containere, netværk, links osv.). Dette gør det muligt at køre containere med en enkelt kommando:

 docker-compose up

Der er mere om docker-compose på webstedet for Docker: Compose kommandolinjereference og Compose-filreference .

Der er kun en container, der køres adskilt fra andre: det er databasen, fordi den skal være oppe hele tiden. Derfor er det ikke i docker-compose-konfigurationsfilen.

To Top

Serverinfrastruktur

Infrastruktur

For øjeblikket er serveren hostet på HES-SO i Schweiz. Der er 2 maskiner til rådighed: en til udvikling (udvikling og test) og en til produktion (den faktiske værktøjskasse, tilgængelig på www.hotmaps.eu ).

Begge maskiner har samme specifikation:

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

Ydeevne

Vi kører ofte præstationstest på udviklingsserveren for at garantere en vis mængde samtidige brugere.

Som et eksempel nedenfor er resultaterne af den første beta-release versus fremtidige release-tests. Den nye udgave indeholder nogle forbedringer af ydeevnen.

Dette eksempel viser præstationstest for samtidige brugere, der bruger den samme funktion: "varighedskurve for hektarvalg". Den fedeste linje viser grænsen, hvor serveren begynder at rejse fejl. Hektarvalg er et godt eksempel, da det viser de forespørgsler, der kræver mest ressourcer.

Beta frigivelse af marts 2019

| Antal simulerede brugere Gennemsnitlig tid | Median | Maks. Tid | Min tid | Procentdel af fejl | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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 |

Endelig frigivelse (august 2020)

| Antal simulerede brugere Gennemsnitlig tid | Median | Maks. Tid | Min tid | Procentdel af fejl | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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

Sådan defineres indikatorer

Indikator Definition

To Top

Hvordan man citerer

Daniel Hunacek, Lucien Zuber, Matthieu Dayer, i Hotmaps Wiki, afdeling for udviklere (september 2020)

To Top

Forfattere og korrekturlæsere

Denne side blev skrevet af Daniel Hunacek, Lucien Zuber og Matthieu Dayer ( HES-SO ).

☑ Denne side blev gennemgået af Mostafa Fallahnejad ( EEG - TU Wien ).

To Top

Licens

Ophavsret © 2016-2020: Daniel Hunacek, Lucien Zuber og Matthieu Dayer

Creative Commons Attribution 4.0 International licens

Dette arbejde er licenseret under en Creative Commons CC BY 4.0 International licens.

SPDX-licensidentifikator: CC-BY-4.0

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

To Top

Anerkendelse

Vi vil gerne formidle vores dybeste påskønnelse til Horizon 2020 Hotmaps-projektet (tilskudsaftale nummer 723677), som gav finansieringen til at gennemføre den nuværende undersøgelse

To Top

This page was automatically translated. View in another language:

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

* machine translated