Tabla de contenido

Introducción

Esta página contiene toda la información necesaria para que los desarrolladores contribuyan a la plataforma Hotmaps o comprendan cómo está funcionando.

To Top

Integración de conjuntos de datos

La integración de nuevos conjuntos de datos públicos se maneja de la siguiente manera:

  1. los conjuntos de datos deben enviarse a un repositorio de git ( agregue sus conjuntos de datos en GitLab )
  2. cada noche, un script integra los conjuntos de datos nuevos / actualizados a la plataforma DEV
  3. si todo funcionó bien, el conjunto de datos ahora está disponible en la plataforma DEV y los desarrolladores pueden integrarlo en su código
  4. Una vez finalizada la codificación, las nuevas funciones se agregan a la plataforma de producción a través de una nueva versión.

Integración de datos

Si un conjunto de datos falla durante la integración, se crea un problema en Taiga (plataforma de gestión de proyectos). El problema muestra el error que se generó y el desarrollador debe solucionarlo y enviar nuevamente su trabajo a Git para que el script pueda intentar integrarlo nuevamente la noche siguiente.

El código fuente del script de integración está disponible en este enlace: Integración de datos

To Top

Agregue sus conjuntos de datos en GitLab

Para agregar conjuntos de datos a la lista de conjuntos de datos públicos, deben enviarse a un nuevo repositorio de Git en GitLab. Aquí está la Organización de GitLab donde se deben enviar los conjuntos de datos : Conjuntos de datos en GitLab .

Una vez al día, se comprueban los repositorios en busca de nuevas confirmaciones y, si es así, se integran. El proceso de integración comprueba si los datos se ajustan a la especificación o no.

Aquí está la especificación: Hotmaps_Data-upload-on-Gitlab_2017-12-04_V4.pdf

To Top

Lista de repositorios principales

El código de la aplicación se encuentra en GitHub bajo la organización Hotmaps . Esta organización posee varios repositorios

  • Hotmaps-toolbox-client contiene la interfaz de nuestra aplicación. Es un proyecto Angular (JavaScript)
  • Hotmaps-toolbox-service contiene la API para nuestra aplicación. Está basado en Flask (Python)
  • módulo-cálculo-base es la plantilla básica que puede utilizar para crear sus propios módulos de cálculo para Hotmaps
  • una lista de módulos de cálculo

To Top

Cómo contribuir código

Si desea agregar algún código a Hotmaps, tiene dos posibilidades: si desea actualizar la interfaz o el backend directamente, debe modificar el repositorio de cliente o servicio de la caja de herramientas. Si desea agregar su propio módulo de cálculo, puede crear su propio repositorio siguiendo el archivo Léame del repositorio base_calculation_module

Si desea realizar algún trabajo en el repositorio de Git, no trabaje directamente con la rama maestra. Cree una nueva rama desde la rama de desarrollo, haga su trabajo en esta rama y cuando se pruebe su característica, puede fusionar su trabajo con la rama de desarrollo como se muestra en el siguiente gráfico.

Git_workflow

Para enviar algo a algún repositorio de Hotmaps, debe ser miembro del equipo de Hotmaps, si no lo es, aún puede realizar una bifurcación de nuestra herramienta para desarrollar su propia herramienta.

Puede encontrar más información sobre cómo trabajar en estos documentos:

To Top

Descripción de la infraestructura de TI

ReverseProxy_architecture_latest

Todos los servicios y componentes se utilizan a través de su propio contenedor Docker. Todos estos contenedores se definen en un solo archivo docker-compose. La imagen de arriba representa la arquitectura de TI de Hotmaps.

Algunas organizaciones asociadas limitaron la comunicación al puerto 80 únicamente. Para evitar los problemas ocasionados por esta limitación, se realizó la creación de un proxy inverso. Este proxy inverso ofrece un único punto de entrada y luego distribuye la solicitud enviada por el cliente al servicio en cuestión. El proxy inverso se compone de tres componentes:

  1. Servidor proxy inverso: sirve como un punto de entrada único y distribuye las solicitudes a los servicios adecuados.
  2. Proxy-gen: es un servicio que mapea automáticamente todos los servicios en el proxy inverso. Por lo tanto, no es necesario agregar manualmente un nuevo servicio a la configuración del proxy.
  3. lets-encrypt: es un servicio que permite el uso del protocolo SSL. Es necesario para activar el protocolo https. Los certificados SSL están firmados por una dirección de correo electrónico configurada en este servicio.

Existen tres redes:

  • hotmaps_nginx permite que el proxy inverso se comunique con la API, la interfaz y el GeoServer. Principalmente permite distribuir una solicitud al servicio correcto entre los tres.
  • hotmaps_backend permite la comunicación entre todos los componentes del backend: API, frontend, GeoServer y la base de datos PostgreSQL.
  • hotmaps_cm-net permite la comunicación entre cada módulo de cálculo y la API.

Cada módulo de cálculo tiene su propio contenedor Docker.

To Top

Ejecutar con Docker

Hotmaps utiliza acoplable software y estibador-Componer herramienta para manejar contenedores. Un archivo docker-compose.yml contiene toda la configuración de la arquitectura Docker (configuración de contenedores, redes, enlaces, ...). Esto permite que los contenedores se ejecuten con un simple comando:

 docker-compose up

Hay más información sobre docker-compose en el sitio web de Docker: Redactar referencia de línea de comandos y Redactar referencia de archivo .

Solo hay un contenedor que se ejecuta por separado de los demás: es la base de datos porque necesita estar activa todo el tiempo. Es por eso que no está en el archivo de configuración de docker-compose.

To Top

Infraestructura del servidor

Infraestructura

Por el momento, el servidor está alojado en HES-SO en Suiza. Hay 2 máquinas disponibles: una para desarrollo (desarrollo y pruebas) y otra para producción (la caja de herramientas real, disponible en www.hotmaps.eu ).

Ambas máquinas tienen la misma especificación:

  • CPU: Intel Xeon E5-2680 v4 (8) a 2,4 GHz)
  • RAM: 16 GB
  • Disco duro: 500 GB
  • SO: Ubutnu 16.04 LTS

Actuación

Con frecuencia realizamos pruebas de rendimiento en el servidor de desarrollo para garantizar una cierta cantidad de usuarios concurrentes.

Como ejemplo, a continuación se muestran los resultados de la primera versión beta frente a las pruebas de versiones futuras. La nueva versión incluye algunas mejoras de rendimiento.

Este ejemplo muestra las pruebas de rendimiento de usuarios concurrentes utilizando la misma función: "curva de duración para la selección de hectáreas". La línea en negrita muestra el límite donde el servidor comienza a generar errores. La selección de hectáreas es un buen ejemplo, ya que muestra las consultas que requieren más recursos.

Versión beta de marzo de 2019

| Número de usuarios simulados | Tiempo medio | Mediana | Tiempo máximo | Tiempo mínimo | Porcentaje de errores | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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 |

Versión final (agosto de 2020)

| Número de usuarios simulados | Tiempo medio | Mediana | Tiempo máximo | Tiempo mínimo | Porcentaje de errores | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 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

Read.ME

To Top

Cómo definir indicadores

Definición del indicador

To Top

Cómo citar

Daniel Hunacek, Lucien Zuber, Matthieu Dayer, en Hotmaps Wiki, Sección de desarrolladores (septiembre de 2020)

To Top

Autores y revisores

Esta página fue escrita por Daniel Hunacek, Lucien Zuber y Matthieu Dayer ( HES-SO ).

☑ Esta página fue revisada por Mostafa Fallahnejad ( EEG - TU Wien ).

To Top

Licencia

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

Licencia internacional Creative Commons Attribution 4.0

Este trabajo está autorizado bajo una licencia internacional Creative Commons CC BY 4.0.

Identificador de licencia SPDX: CC-BY-4.0

Texto de licencia: https://spdx.org/licenses/CC-BY-4.0.html

To Top

Reconocimiento

Queremos transmitir nuestro más profundo agradecimiento al Proyecto Hotmaps Horizonte 2020 (Acuerdo de subvención número 723677), que proporcionó los fondos para llevar a cabo la presente investigación.

To Top

This page was automatically translated. View in another language:

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

* machine translated