Arquitectura de microservicios
A nivel de implementación de software, la Plataforma IREX puede considerarse una agregación de microservicios que interactúan entre sí de acuerdo con el esquema simplificado a continuación:

Aquí, se pueden delinear las dos sub-plataformas básicas:
- Nube Privada
- Smart City
La arquitectura nativa de la nube como esta aprovecha la flexibilidad, escalabilidad y resiliencia de la computación en la nube para permitir una implementación segura, resiliente y sencilla en cualquier centro de datos o ubicación local.
Nube segura
La Nube Segura ejecuta software 100% de código abierto para proveer los siguientes servicios a Smart City:
Cassandra
Una base de datos distribuida para almacenar datos de video sin procesar provenientes de sensores externos y devolverlos en respuesta a consultas del usuario para reproducción u otras acciones.
Redis
Un sistema de base de datos NoSQL residente que almacena pares Clave-Valor relevantes para los estados de los canales y sesiones de autenticación; utilizado como caché de acceso rápido.
Kafka
Intermediario de mensajes distribuido entre todos los demás microservicios.
S3
Almacenamiento de objetos para capturas y fragmentos de video.
PostgreSQL
Base de datos relacional dentro de Kubernetes para proveer diversa información a todos los demás componentes.
Smart City
La sub-plataforma Smart City implementa el procesamiento de datos basado en K8S (Kubernetes).
K8S (Kubernetes) es un sistema para desplegar y administrar (orquestar) contenedores docker, proporcionando mecanismos de auto-recuperación, verificación de rendimiento, re-planificación de tareas y balanceo de carga durante el procesamiento de datos. Su tarea principal es ejecutar el contenedor en hardware de servidor con recursos suficientes (CPU, RAM). Los recursos disponibles se cuentan en base a los recursos solicitados en el POD y la capacidad del servidor. Kubernetes reinicia automáticamente la aplicación cuando falla. Cuando una máquina de Kubernetes falla, los contenedores se migran a las máquinas disponibles.
Verificador channel-status
Verifica los estados de los canales para mostrarlos gráficamente en el mapa.
Entradas: lista de ID de canales.
Salidas: estado del canal (opcionalmente - razón del mismo, por ejemplo, estado = unhealthy, razón = FrameRateTooLow).
Administrador channel-processor
Provee PODs de Kubernetes a los canales, actualiza los canales y administra las cuotas de buckets de S3.
Entradas: solicitudes para actualizar los canales.
Salidas: la lista de canales actualizados.
API edge-api
Procesa las solicitudes HTTP de los usuarios enviadas a través de la interfaz web para responder con los resultados del procesamiento.
módulo de analítica kx-channel
Implementa la entrada de video, procesándolo con analítica de video para generar eventos, archivándolos y otras funciones principales.
Entradas: comandos del usuario, como "Establecer marco de referencia", "Recargar configuración de analítica de video", etc.
Salidas: eventos y capturas de eventos.
interfaz eventproxy
Envía mensajes de eventos a Kafka y registra fragmentos de video en Cassandra.
Entradas: eventos y capturas de eventos desde kx-channel.
Salidas: mensajes de eventos.
microservicio snapshots
Almacena capturas para proveerlas al usuario bajo solicitud.
Entradas: solicitudes de capturas.
Salidas: las capturas.
módulo facelists-matcher
Compara los descriptores de rostros calculados contra los inscritos en la base de datos.
Entradas: descriptores de rostros detectados.
Salidas: eventos "Coincidencia <...>".
módulo platelists-matcher
Compara los números de placa detectados contra los inscritos en la base de datos.
Entradas: números de placa detectados.
Salidas: eventos "Coincidencia <...>".
API eventsearch
Implementa la búsqueda de eventos definidos por el usuario en la base de datos.
Entradas: consulta de condiciones de eventos.
Salidas: los eventos.
microservicio kafka-cassandra-streamer
Despacha mensajes completos de eventos a Cassandra.
Entradas: mensajes de eventos desde Kafka.
Salidas: eventos guardados en Cassandra.
microservicio kafka-ignite-streamer
Despacha mensajes de metadatos de eventos a Ignite.
Entradas: mensajes de eventos desde Kafka.
Salidas: metadatos de eventos guardados en Ignite.
Extras
Adicionalmente, hay servicios y utilidades implementados en la sub-plataforma Smart City que no se muestran en el esquema. Los más importantes de ellos son:
alarm-monitor
El servicio para administrar monitores de alarma.
Archive-streamer5
Transmite los fragmentos de video solicitados en la interfaz de usuario.
authentication-server
Implementa la autenticación de usuarios para proveer acceso según sus roles.
descriptor-extractor
La red neuronal para calcular descriptores de rostros.
descriptor-updater
Actualiza un descriptor de rostro si se encuentra una coincidencia más similar en la base de datos.
downloader
Descarga fragmentos de video definidos por el usuario a archivos locales.
edge-to-cloud-connector, edge-from-cloud-connector
Puertas para comunicarse con kx-channel a través de edge-api.
ignite-cleaner
Limpia las entradas obsoletas en la base de datos Ignite
ignite-instance
La instancia de base de datos Ignite para almacenar metadatos de eventos.
Ignite-tools
Almacenamiento de scripts de administración de Ignite.
kafka-init
Crea temas de mensajes en Kafka.
license-postgres
Licencia para la base de datos de la plataforma.
license-server
El servidor para administrar licencias (emitir, actualizar, terminar).
ptz
Control de cámara PTZ (rotar, desplazar, hacer zoom).
raw-video-channel-processor
Crea un canal para un video subido desde un archivo externo.
seclog
Registro completo de los principales eventos de rendimiento del sistema, incluyendo quién hizo qué, en detalle completo para garantizar los principios de transparencia y responsabilidad según lo estipulan CJIS y GDPR.
stream-info
Proveedor de propiedades de transmisión de video (resolución, tasa de bits, etc.).
sql-migrations
La herramienta de migración de PostgreSQL.
sync-event-streamer
Pasa los mensajes de entrada de PostgreSQL a Kafka.
va-event-processor
La red neuronal para detectar características de apariencia, como barba, lentes, mascarilla o sin mascarilla.
Arquitectura de servidor edge
La arquitectura de servidor edge permite que los recursos de analítica de video se desplieguen en servidores edge ubicados cerca de las cámaras en un sitio remoto.

La idea básica es que, con la analítica de video ejecutada directamente en el sitio remoto, no hay necesidad de transmitir toda la transmisión de video sin procesar desde las cámaras hacia la nube a través de un enlace TCP-IP de banda ancha; solo se pueden transmitir los productos analíticos - eventos, que son de mayor interés para el usuario final - haciendo que el tráfico sea mucho menor y facilitando los requisitos de ancho de banda. Por supuesto, siempre que se consulte, el video se puede transmitir al centro de datos; sin embargo, las transmisiones bajo demanda consumen mucho menos tráfico que la continua.
La tabla a continuación ofrece un resumen de la analítica basada en la nube versus la basada en servidor edge para demostrar que la solución de servidor edge consume menos recursos en cuanto a ancho de banda y hardware, pero es más robusta ante interrupciones en Internet y condiciones externas difíciles (humedad, pureza del aire en las salas de servidores).
| Característica | Analítica basada en la nube | Analítica basada en servidor edge |
|---|---|---|
| Alertas en tiempo real para salas de control y centros de fusión | SÍ | SÍ |
| Searchveillance™ multi-sitio | SÍ | SÍ |
| Ancho de banda reducido | NO | SÍ |
| Analítica de video y grabación sin conexión | NO | SÍ |
| Sincronización automática de eventos al recuperar la red | NO | SÍ |
| Administración centralizada | SÍ | SÍ |
| Alta disponibilidad, balanceo de carga, conmutación por error | Incluido | Costo adicional por hardware local |
| Encriptación de video y eventos | SÍ (VPN requerida) | SÍ (VPN automática) |
| Actualizaciones automáticas de software | SÍ | SÍ |
| Descubrimiento automático de cámaras | NO | SÍ |
La solución puede recomendarse donde sea que un menor ancho de banda importe, las interrupciones de Internet parezcan probables y/o las condiciones externas sean difíciles. Si este es el caso, solicite un cálculo al representante de la Plataforma sobre qué hardware necesita la solución basada en servidor edge, y una estimación de costos.
Si se implementa, los servidores edge se pueden luego administrar.