Spis treści

Wprowadzenie

Ta strona zawiera wszystkie informacje potrzebne programistom do współtworzenia platformy Hotmaps lub do zrozumienia, jak ona działa.

To Top

Integracja zbioru danych

Integracja nowych publicznych zbiorów danych przebiega w następujący sposób:

  1. zestawy danych muszą zostać przesłane do repozytorium git ( dodaj swoje zestawy danych w GitLab )
  2. każdej nocy skrypt integruje nowe / zaktualizowane zbiory danych z platformą DEV
  3. jeśli wszystko działało dobrze, zestaw danych jest teraz dostępny na platformie DEV i programiści mogą zintegrować go ze swoim kodem
  4. Po zakończeniu kodowania nowe funkcje są dodawane do platformy produkcyjnej w nowej wersji

Integracja danych

Jeśli zestaw danych ulegnie awarii podczas integracji, problem zostanie utworzony na platformie Taiga (platforma do zarządzania projektami). Problem pokazuje zgłoszony błąd, a programista powinien go naprawić i ponownie przesłać swoją pracę do Git, aby skrypt mógł spróbować zintegrować go ponownie następnego wieczoru.

Kod źródłowy skryptu integracji jest dostępny pod tym linkiem: Integracja danych

To Top

Dodaj swoje zbiory danych do GitLab

Aby dodać zbiory danych do listy publicznych zbiorów danych, należy je wypchnąć do nowego repozytorium Git w GitLab. Oto organizacja GitLab, do której należy przekazywać zestawy danych : Zestawy danych w GitLab .

Raz dziennie repozytoria są sprawdzane pod kątem nowych zatwierdzeń i integrowane, jeśli tak. Proces integracji sprawdza, czy dane są zgodne ze specyfikacją, czy nie.

Oto specyfikacja: Hotmaps_Data-upload-on-Gitlab_2017-12-04_V4.pdf

To Top

Lista głównych repozytoriów

Kod aplikacji znajduje się na GitHubie w ramach organizacji Hotmaps . Ta organizacja posiada kilka repozytoriów

To Top

Jak współtworzyć kod

Jeśli chcesz dodać kod do Hotmaps, masz dwie możliwości: jeśli chcesz bezpośrednio zaktualizować interfejs lub backend, musisz zmodyfikować repozytorium klienta lub usługi w zestawie narzędzi. Jeśli chcesz dodać własny moduł obliczeniowy, możesz utworzyć własne repozytorium, postępując zgodnie z plikiem readme repozytorium base_calculation_module

Jeśli chcesz wykonać jakąś pracę na repozytorium Git, nie pracuj bezpośrednio z gałęzią master. Utwórz nową gałąź z gałęzi deweloperskiej, wykonaj pracę na tej gałęzi, a po przetestowaniu funkcji możesz połączyć swoją pracę z gałęzią deweloperską, jak pokazano na poniższym wykresie.

Git_workflow

Aby wrzucić coś do jakiegoś repozytorium Hotmaps, musisz być członkiem zespołu Hotmaps, a jeśli nie, nadal możesz wykonać rozwidlenie naszego narzędzia, aby opracować własne narzędzie.

Więcej informacji na temat pracy można znaleźć w tych dokumentach:

To Top

Opis infrastruktury IT

ReverseProxy_architecture_latest

Wszystkie usługi i składniki są używane za pośrednictwem własnego kontenera Docker. Wszystkie te kontenery są zdefiniowane w jednym pliku Docker-Compose. Powyższy obrazek przedstawia architekturę IT Hotmaps.

Niektóre organizacje partnerskie ograniczyły komunikację tylko do portu 80. Aby uniknąć problemów spowodowanych tym ograniczeniem, utworzono odwrotne proxy. Ten zwrotny serwer proxy oferuje pojedynczy punkt wejścia, a następnie rozsyła żądanie wysłane przez klienta do danej usługi. Odwrotny proxy składa się z trzech elementów:

  1. Odwrotny serwer proxy: służy jako unikalny punkt wejścia i rozsyła żądania do odpowiednich usług.
  2. Proxy-gen: jest to usługa, która automatycznie mapuje wszystkie usługi w odwrotnym proxy. Dlatego nie jest konieczne ręczne dodawanie nowej usługi do konfiguracji proxy
  3. Let-encrypt: jest to usługa, która umożliwia korzystanie z protokołu SSL. Jest to konieczne, aby aktywować protokół https. Certyfikaty SSL są podpisywane przez adres e-mail skonfigurowany w tej usłudze.

Istnieją trzy sieci:

  • hotmaps_nginx umożliwia zwrotnemu serwerowi proxy komunikację z interfejsem API, frontendem i serwerem GeoServer. Umożliwia głównie dystrybucję żądania do właściwej usługi wśród trzech.
  • hotmaps_backend umożliwia komunikację pomiędzy wszystkimi komponentami backendu: API, frontendem, GeoServer i bazą danych PostgreSQL.
  • hotmaps_cm-net umożliwia komunikację pomiędzy każdym modułem obliczeniowym a API.

Każdy moduł obliczeniowy ma swój własny kontener Docker.

To Top

Uruchom z Dockerem

Hotmaps wykorzystuje Docker oprogramowanie i Docker-Compose narzędzie do zarządzania pojemników. Plik docker-compose.yml zawiera całą konfigurację architektury Dockera (konfigurację kontenerów, sieci, linków, ...). Umożliwia to uruchamianie kontenerów za pomocą jednego prostego polecenia:

 docker-compose up

Więcej informacji na temat Docker-Compose można znaleźć w witrynie Docker: Dokumentacja wiersza polecenia tworzenia wiadomości i Dokumentacja tworzenia pliku .

Jest tylko jeden kontener, który jest uruchamiany niezależnie od innych: jest to baza danych, ponieważ musi być cały czas aktywna. Dlatego nie ma go w pliku konfiguracyjnym Docker-Compose.

To Top

Infrastruktura serwerowa

Infrastruktura

W tej chwili serwer jest hostowany w HES-SO w Szwajcarii. Dostępne są 2 maszyny: jedna do rozwoju (rozwój i testowanie) i jedna do produkcji (rzeczywisty zestaw narzędzi, dostępny na www.hotmaps.eu ).

Obie maszyny mają tę samą specyfikację:

  • CPU: Intel Xeon E5-2680 v4 (8) przy 2,4 GHz)
  • RAM: 16 GB
  • Dysk twardy: 500 GB
  • System operacyjny: Ubutnu 16.04 LTS

Wydajność

Często przeprowadzamy testy wydajności na serwerze programistycznym, aby zagwarantować określoną liczbę jednoczesnych użytkowników.

Jako przykład poniżej przedstawiono wyniki testów pierwszej wersji beta w porównaniu z przyszłymi wersjami. Nowa wersja zawiera pewne ulepszenia wydajności.

Ten przykład pokazuje testy wydajności jednoczesnych użytkowników korzystających z tej samej funkcji: „krzywa czasu trwania dla wyboru hektarów”. Pogrubiona linia pokazuje limit, przy którym serwer zaczyna zgłaszać błędy. Dobrym przykładem jest selekcja hektarów, która pokazuje zapytania wymagające największej ilości zasobów.

Wydanie beta z marca 2019 r

| Liczba symulowanych użytkowników | Średni czas | Mediana | Maksymalny czas | Min czas | Procent błędów | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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 |

Ostateczna wersja (sierpień 2020 r.)

| Liczba symulowanych użytkowników | Średni czas | Mediana | Maksymalny czas | Min czas | Procent błędów | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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

READ.ME

Przeczytaj ME

To Top

Jak zdefiniować wskaźniki

Definicja wskaźnika

To Top

Jak cytować

Daniel Hunacek, Lucien Zuber, Matthieu Dayer, w Hotmaps Wiki, sekcja Developers (wrzesień 2020)

To Top

Autorzy i recenzenci

Ta strona została napisana przez Daniela Hunacka, Luciena Zubera i Matthieu Dayera ( HES-SO ).

☑ Ta strona została sprawdzona przez Mostafa Fallahnejad ( EEG - TU Wien ).

To Top

Licencja

Prawa autorskie © 2016-2020: Daniel Hunacek, Lucien Zuber i Matthieu Dayer

Licencja międzynarodowa Creative Commons Attribution 4.0

Ta praca jest objęta licencją Creative Commons CC BY 4.0 International License.

Identyfikator licencji SPDX: CC-BY-4.0

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

To Top

Potwierdzenie

Chcielibyśmy wyrazić nasze najgłębsze uznanie dla projektu Hotmaps programu Horyzont 2020 (umowa o udzielenie dotacji nr 723677), który zapewnił finansowanie na przeprowadzenie obecnego dochodzenia

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* Portuguese (Portugal, Brazil)* Romanian* Slovak* Slovenian* Swedish*

* machine translated