Contribución:
Carlos Salinas, Tecnología IDECOR
Javier Scantamburlo y Marcelo Paris, Holon Software
10 de noviembre 2021.
Entre los múltiples desafíos que representa brindar servicios de información geográfica de calidad y alto rendimiento, uno de los más críticos tiene relación con los componentes tecnológicos que dan soporte a la Infraestructura de Datos Espaciales (IDE).
Durante los últimos meses el equipo de tecnología de IDECOR ha estado trabajando en la renovación e implementación de diferentes herramientas y mejoras para dar respuesta al sostenido crecimiento en el uso de mapas y geoservicios que se brindan a través de MapasCordoba. Una vez más, te mostramos la “cocina” de IDECOR y el detrás de escena de los mapas, esta vez con importantes actualizaciones y novedades.
Los principales desafíos (y permanentes!) son:
- Disponibilidad del servicio.
- Menor tiempo de respuesta posible.
- Escalabilidad ante la demanda.
- Agilidad en el despliegue de desarrollos y diseños.
- Observabilidad del servicio.
- Mejor relación posible costo/beneficio.
La arquitectura de IDECOR
El corazón del servicio está formado, como habitualmente se conoce, por el stack open source GeoNode – GeoServer – PostGIS.
GeoNode actúa como visualizador de la información geográfica, permitiendo su navegación, paneo, selección de capas, etc.; GeoServer como el músculo que entrega los contenidos de cada sector del mapa, transformándolos en formato de imagen para ser presentados directamente por el navegador. PostGIS, la extensión espacial de PostgreSQL, es el repositorio de los datos geoespaciales que soportan los mapas y servicios que presta la IDE (Imagen 1).
Escalamiento vertical vs. horizontal
La configuración descrita resulta suficiente para entregar contenidos en una red privada o con muy bajo nivel de demanda. Pero cuando el consumo crece, como compartimos en el 10º Webinar IDECOR «La cocina de IDECOR ¿Qué hay detrás de cada mapa?», existen dos caminos posibles, que son casi un dilema filosófico en la historia de la informática ¿Escalar vertical u horizontalmente?
Aun cuando hace algunos años la demanda de servicios y la disponibilidad de hardware en la nube hubieran permitido un escalamiento vertical, desde IDECOR optamos por un escalamiento horizontal. Y con el desafío adicional que debía implementarse sobre tecnología Docker, lo que representaba, sino una innovación en el ámbito de los geoservicios, al menos una decisión no adoptada en la mayoría de los casos. El tiempo mostraría que fue una decisión muy conveniente.
El proceso de mejoras requirió implementar, además, una herramienta que distribuyera la carga entre cada uno de los nodos. En este rol se trabaja con Traefik Proxy, un producto en su momento emergente, pero con grandes expectativas de rendimiento e integración con la plataforma Docker; este balanceador tiene la capacidad de detectar en forma dinámica la presencia de un nuevo contenedor GeoServer y balancear el tráfico proveniente de Internet (Imagen 2).
La configuración permite, además, disponer de ciertos contenedores especializados en determinados mapas o capas de alta demanda, como el mapa Inmobiliario Cumplidor, que publica la Dirección General de Rentas, evitando la competencia con el resto de la infraestructura.
Crecimiento lineal vs. caché de contenidos
Si bien el escalamiento horizontal pareciera resolver los límites impuestos por el hardware (siempre es posible crecer agregando nuevos nodos) cuando la demanda sigue creciendo, rápidamente aparece el problema de la economía de los recursos; es decir, si nuestra demanda crece exponencialmente, la necesidad de más recursos seguirá la misma suerte.
La solución es preservar los contenidos ya generados en un almacenamiento intermedio, evitando que GeoServer tenga que volver a generarlos cada vez que alguien los requiera. En este contexto existen principalmente tres opciones:
- El servicio GeoWebCache, prestado por la propia infraestructura de GeoServer.
- Componentes genéricos de Caché HTTP (caché de contenidos Web), servicios de borde brindados por las redes CDN (Content Delivery Network), como Cloudflare, Amazon Cloudfront, Akamai, etc.
- Caché local ofrecido por los navegadores cliente.
Luego de diversos análisis y pruebas, desde IDECOR se optó por Varnish Caché, un componente de caché de contenidos web multipropósito, de muy alto rendimiento y gran versatilidad en el manejo de los contenidos que transitan o se almacenan en el servicio de caché.
Varnish Cache es el último elemento que completa y da estabilidad y escalabilidad a la IDE de la Provincia de Córdoba, que registra niveles de demanda importante y de manera creciente. En lo que va de 2021, el promedio de consumo de todos los mapas se ubica en 160.000 accesos por mes.
Ambientes de edición y puesta en producción
Otro desafío en la infraestructura es cómo dar soporte al flujo o proceso de diseño, desarrollo y publicación de los diversos mapas y servicios que ofrece el geoportal, siendo necesario proveer ambientes de edición y un proceso de integración y despliegue, que traslade de manera confiable y controlada los productos diseñados al ambiente de producción. En este punto, IDECOR implementa todo el ciclo de integración y despliegue, mediante un automatismo que utiliza GitLab como repositorio de gestión de configuraciones.
Observabilidad
En toda infraestructura interesa, igualmente, conocer la calidad de los servicios brindados y contar con información de los niveles de uso y demanda de cada servicio ofrecido. Por tratarse de información cuyo acceso se definió en forma libre y abierta, no es posible lograr la identificación de los usuarios, pero sí puede contarse con indicadores genéricos de uso y niveles de servicio.
Para gestionar esta información IDECOR usa Grafana, una plataforma de visualización de indicadores sencilla, muy potente, visualmente atractiva y bajo costo de operación y configuración (Imágenes 3 y 4).
Uniendo las partes
El siguiente esquema muestra todas las piezas trabajando en conjunto, lo que conforma la infraestructura de IDECOR actual (Imagen 5).
Las ventajas de la actualización
La tecnología Docker ha sido un acelerador muy importante en la actualización de todos los componentes de la infraestructura, permitiendo acceder de manera ágil a las funcionalidades ofrecidas por las nuevas versiones de los diferentes productos.
En cuanto a GeoServer, se migró de una versión inicial 2.15 a una versión estable 2.19. Con esta versión aún no se superan las limitaciones de ser una plataforma monolítica y poder pasar a una arquitectura tendiente a servicios en contenedores, tipo microservicios, pero presenta muchas mejoras en su estabilidad y performance en arquitectura de contenedores Swarm. Entre las nuevas características o mejoras, pueden citarse:
- Mejora de la interfaz de usuario de WMS.
- Borrado masivo para caché de GWC.
- Consumo de las CPU a la inicialización del servicio de GWC.
- Pestaña de permisos y roles en las secciones de Capas, Grupo de Capas y Espacios de Trabajo.
- Agregado de fecha de creación y fecha de modificación en distintas secciones.
Contacto
Por consultas, escribirnos a [email protected]. Y para mantenerte informado de novedades de la comunidad IDECOR, seguinos en Instagram idecor.ok y por el canal de YouTube de IDECOR.