Saltar a contenido

← Volver al indice | Arquitectura del Sistema

Análisis Tecnológico Integral y Arquitectura de Sistemas para la Transformación Digital del Centro Oceanográfico de Malaga (IEO-CSIC)

Documento: Deep Research v2 — Análisis Tecnológico Integral
Fecha: 19 de marzo de 2026
Nivel: Investigación / Nivel 0
Relacionado con: Visión de Plataforma | Arquitectura del Sistema


1. Contexto Operativo y Reingeniería de la Información Institucional

El traslado e inauguración de las nuevas instalaciones del Centro Oceanográfico de Malaga, reubicado estrategicamente en la Explanada de San Andres (Muelle 9) del Puerto de Malaga tras cuatro décadas de permanencia en Fuengirola, marca un punto de inflexion en la capacidad científico-tecnológica del Instituto Español de Oceanografia (IEO). Este centro, integrado operativamente como Centro Nacional dentro de la estructura de la Agencia Estatal Consejo Superior de Investigaciones Cientificas (CSIC), dependiente del Ministerio de Ciencia, Innovación y Universidades, alberga a más de un centenar de profesionales, incluyendo personal científico y técnico de primer nivel.

Las lineas de investigación son excepcionalmente diversas, abarcando desde la gestión sostenible de los recursos pesqueros y el estudio de la biodiversidad marina, hasta el análisis de los efectos del cambio climatico, el cartografiado de fondos oceanicos y la evaluación de riesgos geológicos.

[!IMPORTANT] El progreso en la infraestructura fisica contrasta con los desafios persistentes en la arquitectura de la información interna. El funcionamiento de los diversos departamentos y grupos de investigación se ha caracterizado por un alto grado de autonomía, derivando en practicas de gestión de datos fuertemente compartimentadas — lo que en arquitectura de sistemas se denominan "silos de información".

1.1 Impacto de los Silos de Información

Los silos generan tres consecuencias críticas:

  1. Imposibilitan la explotación transversal de los datos entre departamentos
  2. Limitan la trazabilidad de las investigaciones a largo plazo
  3. Impiden la aplicación directa de algoritmos avanzados de Inteligencia Artificial (IA)

1.2 Objetivo Central

El objetivo central es conceptualizar y diseñar la arquitectura de un sistema de información centralizado y automatizado capaz de:

  • Disolver los silos departamentales
  • Integrar flujos de datos dispares
  • Apalancar el vasto conocimiento histórico del IEO mediante IA multimodal
  • Permitir la identificación de caracteristicas biológicas críticas (sexo, especie, edad) mediante reconocimiento de imagenes
  • Operar tanto sobre el archivo fotográfico histórico como en tiempo real a través de camaras de dispositivos móviles

2. Auditoria del Patrimonio de Datos, Estimación Volumétrica y Digitalización

2.1 Dimension de las Colecciones Históricas de Referencia

El IEO de Malaga conserva colecciones biológicas que se remontan a los albores de la oceanografia española en las primeras décadas del siglo XX, impulsadas por pioneros como Fernando y Rafael de Buen, Alvaro de Miranda y Jimena Quiros.

Colección Histórica de Fauna Marina (CFM-HISTORICA-IEOMA)

Parametro Valor
Tipo de preservación Especímenes en reactivos liquidos
Total catalogado 1.069 especímenes
Grupo predominante Peces (78,6%)
Segundo grupo Decapodos (10,3%)
Tercer grupo Cefalopodos (5,6%)
Registro mas antiguo 1907 (Mullus surmuletus)
Zona predominante Costas de Malaga, Mar Mediterráneo (76%)

Colección Histórica Seca (CFM-HISTORICA-SECA-IEOMA)

Parametro Valor
Tipo de preservación Especímenes preservados en seco
Total catalogado 2.365 especímenes
Grupo predominante Moluscos gasteropodos (38,5%)
Segundo grupo Moluscos bivalvos (38%)
Tercer grupo Crustaceos decapodos (15%)
Periodo temporal 1913 - principios de los 2000
Distribución geográfica Mediterráneo 64%, Pacífico 15%, Atlántico 14%, Antártico 7%

[!NOTE] El volumen combinado asciende a +3.400 especímenes catalogados, cada uno requiriendo digitalización de multiples fotografías de alta resolución desde diferentes angulos, mas metadatos taxonomicos, espaciales (GPS) y temporales. Esta iniciativa esta alineada con el proyecto institucional TAXON del IEO (CSIC).

2.2 Flujos de Datos Dinamicos: Otolitos, Campañas y Biologia Pesquera

El núcleo de la inferencia de la IA para el MVP (detección de edad y sexo) se fundamenta en las muestras biológicas recolectadas rutinariamente en campañas oceanográficas. Ejemplo paradigmático: los otolitos (estructuras calcáreas en el oido interno de los peces).

flowchart LR
    subgraph Campana ["Campana Oceanografica"]
        C1["Captura de especimen"]
        C2["Medicion talla y peso"]
        C3["Sexo macroscopico"]
        C4["Extraccion otolitos"]
        C5["Extraccion gonadas"]
        C1 --> C2 --> C3 --> C4
        C3 --> C5
    end

    subgraph Lab ["Laboratorio IEO"]
        L1["Microfotografia otolito"]
        L2["Contaje de annuli"]
        L3["Estimacion de edad"]
        L4["Indice gonadosomatico"]
    end

    C4 --> L1 --> L2 --> L3
    C5 --> L4

Las campañas recurrentes como ECOMED y las realizadas a bordo de buques oceanograficos en zonas de Hatton, Reikjanes o Porcupine generan muestras masivas donde los investigadores documentan: talla, peso, sexo macroscopico, repleción estomacal, extracción de otolitos y gonadas.

2.3 Estimación Volumétrica para el Sistema

Tipo de Dato Descripción Volumen Estimado Complejidad
Estructurados Series históricas tabulares, biometrías, indices gonadales (Excel, BBDD) Decenas de GB Alta en ETL (limpieza y normalización)
No Estructurados Fotografias de especímenes, microfotografias de otolitos, imagenes de campana TB iniciales, PB a medio plazo Requiere lectura ultrarrápida para IA
flowchart TB
    subgraph Volumetria ["Topologia de Datos"]
        S1["Datos Estructurados"] --> S2["Tablas Excel historicas"]
        S1 --> S3["BBDD locales"]
        S1 --> S4["Series biometricas"]

        N1["Datos No Estructurados"] --> N2["+3.400 especímenes históricos"]
        N1 --> N3["Miles de otolitos anuales"]
        N1 --> N4["Imagenes de campana"]
    end

    S2 --> ETL["ETL + Normalizacion"]
    S3 --> ETL
    S4 --> ETL
    ETL --> DL["Data Lake"]

    N2 --> BLOB["Blob Storage"]
    N3 --> BLOB
    N4 --> BLOB
    BLOB --> DL

    DL --> IA["Motor IA Multimodal"]

    style DL fill:#f39c12,color:#fff
    style IA fill:#e74c3c,color:#fff

3. Marco Regulador: Soberanía de Datos y Esquema Nacional de Seguridad (ENS)

3.1 El Esquema Nacional de Seguridad (RD 311/2022)

Los sistemas de información del sector público estan regulados por el ENS, actualizado mediante el Real Decreto 311/2022. El marco exige que las organizaciones categoricen sus sistemas en función de la criticidad de los datos:

Categoria Requisitos Auditorias
BASICA Politicas minimas de seguridad Declaración de aplicabilidad
MEDIA Defensa en profundidad, cifrado Auditoria periódica
ALTA Controles maximos, trazabilidad total Auditoria formal certificada

[!WARNING] El MVP gestionara: datos primarios de investigación, propiedad intelectual del CSIC, datos históricos irrepetibles, y metadatos de investigadores. La arquitectura debe cumplir como umbral mínimo categoria MEDIA, preparandose para auditorías ALTA.

3.2 Soberanía de Datos y Restricciones

Requisito Implicación
Residencia de datos Infraestructura fisica dentro de la UE
Cifrado CMEK Claves criptográficas gestionadas por el CSIC
Anti vendor lock-in Diseño portable, sin dependencia de un único proveedor
Legislación extraterritorial Prevención de exposición a normativas de terceros paises

Proveedores certificados ENS ALTO (2026):

  • Microsoft Azure — Regiones soberanas EU certificadas
  • Google Cloud Platform — Certificación ENS nivel Alto
  • RedIRIS — Nube privada/híbrida para la comunidad academica española

4. Ecosistema de Gobernanza y Productividad: Microsoft 365 vs. Google Workspace

4.1 Evaluación Comparativa

Dominio Microsoft 365 Google Workspace
Arquitectura Hibrida: apps escritorio + nube Cloud-first: solo navegador
Operativa Offline Excepcional: funcionalidad total sin conexión Limitada: riesgo en entornos sin red
Datos masivos (Excel) Lider: archivos masivos, VBA, macros Sheets: buena colaboración, bajo rendimiento a escala
API de Integración Microsoft Graph API (endpoint único unificado) APIs segmentadas sin punto único
Seguridad/ENS Entra ID + Defender + Intune (gobernanza granular) Controles solidos, consola orientada a simplicidad

4.2 Elección Estrategica: Microsoft 365

[!TIP] Se designa Microsoft 365 como el eje de colaboración institucional, fundamentado en tres axiomas críticos para operaciones en ciencias marinas.

Axioma 1 — Inmunidad a la Desconexión: La recolección primaria ocurre a bordo de buques en altamar (campañas en Porcupine, Hatton) donde la conectividad es intermitente o inexistente. M365 permite uso offline completo; OneDrive sincroniza al recuperar red.

Axioma 2 — Transición Transparente via Graph API: Los investigadores continuaran depositando Excels en SharePoint. El backend usara Microsoft Graph API con webhooks para extraer, transformar e ingerir silenciosamente los datos sin perturbar el flujo de trabajo humano.

Axioma 3 — Identidad Estandarizada: Autenticación federada con Entra ID (ex Azure AD) para mapeo de permisos departamentales, satisfaciendo auditorías ENS.

flowchart LR
    subgraph Dptos ["Departamentos IEO"]
        D1["Pesquerias"]
        D2["Acuicultura"]
        D3["Medio Marino"]
    end

    subgraph M365 ["Microsoft 365"]
        SP["SharePoint"]
        OD["OneDrive"]
        EI["Entra ID"]
    end

    subgraph Backend ["Backend Centralizado"]
        GR["Graph API - Webhooks"]
        ETL2["ETL Automatizado"]
        DB["Data Lake"]
    end

    D1 -->|Excel + datos| SP
    D2 -->|Excel + datos| SP
    D3 -->|Excel + datos| OD
    SP --> GR
    OD --> GR
    GR --> ETL2 --> DB
    EI -->|autenticacion| Backend

    style GR fill:#3498db,color:#fff
    style DB fill:#f39c12,color:#fff

5. Diseño del Motor de IA Multimodal: CAG + RAG Estratificado

5.1 Desafios del RAG Puro en Reconocimiento de Imagenes

El enfoque puramente RAG presenta debilidades estructurales para el caso IEO:

Debilidad Impacto
Latencia incompatible con tiempo real La búsqueda vectorial iterativa por fotograma destruye la fluidez de la interfaz
Fragmentación de contexto Inferir edad de un pez requiere asimilación holistica de distribuciones poblacionales, no fragmentos aislados
Sobrecarga arquitectonica Modelos de embedding + vector DB + motores de búsqueda + orquestadores

5.2 El Paradigma CAG: KV-Caching como Memoria Permanente

CAG precarga la totalidad del conocimiento estatico en el prompt inicial del modelo, aprovechando ventanas de contexto masivas de los LLM modernos.

La innovación clave es el KV-Caching (Key-Value Cache): el LLM procesa el volumen fundacional una sola vez, almacena los estados de atención computados en cache, y reutiliza esta cache en milisegundos para inferencias subsiguientes — logrando tiempos 40% mas rápidos que RAG.

5.3 Arquitectura Seleccionada: Sistema Hibrido Estratificado (CAG + RAG)

[!IMPORTANT] La solución no es una elección dicotómica, sino un ecosistema híbrido estratificado gobernado por agentes de enrutamiento (Agentic RAG).

Nivel de Memoria Paradigma Contenido Asignado Beneficio Critico
Cache L1 (Pre-Carga) CAG "Golden Knowledge": guias taxonomicas, taxonomias TAXON, firmas visuales de otolitos. Datos estables Latencia sub-segundo. Análisis rápido y libre de alucinaciones
Almacenamiento L2 RAG "The Library": Excels sincronizados via Graph API, publicaciones nuevas, datos ambientales recientes Precisión y frescura sin recalcular la cache CAG
flowchart TB
    subgraph L1Cache ["L1 - Cache CAG"]
        GK1["Guias taxonomicas"]
        GK2["Taxonomias TAXON"]
        GK3["Firmas otolitos"]
        GK4["Colecciones historicas"]
    end

    subgraph L2RAG ["L2 - RAG Dinamico"]
        RD1["Excels recientes - Graph API"]
        RD2["Publicaciones nuevas"]
        RD3["Datos ambientales"]
    end

    CAM["Camara investigador"] --> Agent["Agente de Enrutamiento"]
    Agent -->|consulta estable| L1Cache
    Agent -->|necesita contexto fresco| L2RAG

    L1Cache --> LLM["LLM Multimodal"]
    L2RAG --> LLM
    LLM --> OUT["Identificacion: especie, edad, sexo"]

    style L1Cache fill:#f39c12,color:#fff
    style L2RAG fill:#9b59b6,color:#fff
    style Agent fill:#e74c3c,color:#fff
    style LLM fill:#2ecc71,color:#fff

Flujo Operativo: Cuando la cámara enfoque un espécimen en lonja, el agente del LLM extraera instantaneamente los marcadores de la cache CAG (especie, edad). Si la consulta requiere contexto ambiental reciente, el agente invocara la base vectorial RAG para añadir información cruzada.


6. Arquitectura del Backend: Quarkus + Dapr + LangChain4j (Java 25)

6.1 Evolución del Modelo de Concurrencia

Enfoque Limitación Solución Java 25
Servlet clásico "Un hilo por solicitud" colapsa bajo concurrencia masiva Virtual Threads (∞ conexiones)
WebFlux reactivo Código complejo, estado debe externalizarse Virtual Threads (código síncrono, escalabilidad reactiva)
Actor Model Curva alta, coordinación manual, protocolos custom Dapr (coordinación declarativa YAML)

[!IMPORTANT] Java 25 LTS con Virtual Threads elimina la necesidad principal de un modelo de actores. Dapr proporciona los building blocks de infraestructura distribuida de forma declarativa, permettiendo que el código Quarkus se centre exclusivamente en lógica de negocio.

6.2 Arquitectura Quarkus + Dapr

flowchart TB
    subgraph QuarkusApp ["Quarkus (Java 25) - Lógica de Negocio"]
        QK1["REST API (RESTEasy Reactive)"]
        QK2["WebSocket (Virtual Threads)"]
        QK3["LangChain4j AI Services"]
        QK4["ETL Pipeline"]
    end

    subgraph DaprSidecar ["Dapr Sidecar - Infraestructura Distribuida"]
        D1["Service Invocation"]
        D2["Pub/Sub (Kafka)"]
        D3["State Management (Redis)"]
        D4["Workflows (long-running)"]
        D5["Bindings (GSheets, SharePoint)"]
    end

    subgraph Capacidades ["Capacidades"]
        C1["Sesión por dispositivo (Dapr State)"]
        C2["Escalado automático (K8s HPA)"]
        C3["Tolerancia a fallos (K8s probes + Dapr retry)"]
        C4["Orquestación de pipelines (Dapr Workflows)"]
    end

    QK1 --> D1
    QK3 --> D1
    QK4 --> D5
    D4 --> C4
    D3 --> C1

    style QuarkusApp fill:#2ecc71,color:#fff
    style DaprSidecar fill:#9b59b6,color:#fff

Sesión por dispositivo: Estado de conexión persistido en Dapr State (Redis), sobrevive a reinicios del servicio.

Escalado elástico: Kubernetes HPA escala pods automáticamente; Dapr placement service redistribuye estado.

Tolerancia a fallos: Si un investigador pierde conexión en altamar, el estado de sesión persiste en Redis y se reanuda al recuperar conectividad.

6.3 Arquitectura por Capas

flowchart TB
    subgraph Quarkus ["Quarkus - Aplicación"]
        HTTP["Controllers REST"]
        SEC["Seguridad OIDC/OAuth2"]
        GRAPH["Microsoft Graph API"]
        LC4J["LangChain4j Services"]
    end

    subgraph Dapr ["Dapr - Middleware"]
        SI["Service Invocation → Ollama"]
        PS["Pub/Sub → Kafka"]
        WF["Workflows (ETL, LoRA)"]
        BND["Bindings (SharePoint, GSheets)"]
    end

    HTTP -->|request| SI
    SEC -->|tokens OIDC| HTTP
    GRAPH -->|webhooks SharePoint| BND
    LC4J -->|inferencia| SI
    BND --> WF

    style Quarkus fill:#2ecc71,color:#fff
    style Dapr fill:#9b59b6,color:#fff

Quarkus gestiona: controllers HTTP, seguridad OIDC/OAuth2 contra M365, servicios IA declarativos (LangChain4j).

Dapr gestiona: comunicación inter-servicio, integración con fuentes externas, orquestación de workflows, estado distribuido.

Ventaja clave: El código Java se centra en lógica de negocio (identificar especies, procesar datos). La coordinación de infraestructura es declarativa (YAML).


7. Frontend: Reconocimiento Visual en el Edge (React Native)

7.1 El Salto Evolutivo: JSI, Worklets y Visión Camera

La arquitectura del frontend se basa en React Native Visión Camera v4/v5, que abandona el viejo puente asíncrono para operar sobre JSI (JavaScript Interface) — acceso directo, sincrono y por referencia a objetos C++.

flowchart LR
    subgraph Movil ["App Movil - React Native"]
        CAM2["Camara Nativa"]
        FP2["Frame Processor - JSI/Worklets"]
        TFL["TFLite - Edge AI"]
        OCV["OpenCV - Pre-procesado"]
    end

    subgraph Server ["Backend - Quarkus + Dapr"]
        ACT["Actor de Sesion"]
        VLM2["Modelo CAG+RAG"]
    end

    CAM2 -->|60-120 FPS| FP2
    FP2 --> OCV --> TFL
    TFL -->|frame limpio| ACT
    ACT --> VLM2
    VLM2 -->|especie + edad + sexo| ACT
    ACT -->|resultado| FP2

    style FP2 fill:#e74c3c,color:#fff
    style TFL fill:#9b59b6,color:#fff
    style VLM2 fill:#2ecc71,color:#fff

Inferencia en el borde (Edge AI): El telefono no transmite todo el video al servidor. El modelo TFLite ejecuta pre-procesamiento y reconocimiento básico localmente a 60-120 FPS (~69ms latencia). Solo la captura limpia y aislada se envia al backend para el veredicto final del modelo CAG+RAG.

7.2 Componentes Clave del Pipeline Móvil

Componente Función
react-native-vision-camera Acceso a cámara via JSI, frame processors
react-native-worklets-core Ejecución en hilo GPU/CPU de cámara
react-native-fast-tflite Inferencia TensorFlow Lite acelerada por GPU (C++)
OpenCV (nativo) Limpieza y pre-procesado de imagenes

7.3 El Escollo de la Web: Estrategia de Contingencia

[!WARNING] react-native-vision-camera usa APIs móviles exclusivas (CameraX, AVFoundation) y JSI. El soporte para navegadores web es completamente nulo.

Solución para la Web:

Capa Tecnología Web
Captura de video navigator.mediaDevices.getUserMedia (HTML5)
Inferencia local WebAssembly (WASM) con módulos Rust/C++
ML en cliente TensorFlow.js como alternativa a TFLite
Arquitectura React Rutas dinámicas con Platform.OS === 'web'
flowchart TB
    subgraph Mobile ["Movil - iOS/Android"]
        M1["Vision Camera + JSI"]
        M2["Worklets + TFLite"]
        M3["GPU nativa"]
    end

    subgraph Web ["Web - Navegador"]
        W1["getUserMedia HTML5"]
        W2["WebAssembly - WASM"]
        W3["TensorFlow.js"]
    end

    subgraph Shared ["Codigo Compartido - React"]
        S1["Platform.OS routing"]
        S2["UI compartida"]
        S3["API Client"]
    end

    M1 --> S1
    W1 --> S1
    S1 --> S2 --> S3
    M2 --> M3
    W2 --> W3

    style Mobile fill:#3498db,color:#fff
    style Web fill:#e67e22,color:#fff
    style Shared fill:#2ecc71,color:#fff

8. Conclusiones Analíticas y Recomendaciones para el MVP

8.1 Directrices Estrategicas de Diseño

Area Recomendación
Ecosistema Colaborativo Microsoft 365 — operatividad offline en campañas, Graph API para ingesta, Entra ID para identidad
Soberanía y Seguridad Cloud certificada ENS ALTO (Azure/GCP), cifrado CMEK, confinamiento jurisdiccional UE
Inferencia IA Arquitectura Estratificada CAG+RAG — Golden Knowledge en cache L1, datos frescos via RAG en L2
Backend Quarkus 3.20 LTS (Java 25) + Dapr (middleware: workflows, state, pub/sub, bindings) + LangChain4j (IA)
Frontend Móvil React Native Visión Camera (JSI/Worklets) + Edge AI (TFLite C++)
Frontend Web Fallback HTML5 getUserMedia + WebAssembly + TensorFlow.js

8.2 Visión de la Plataforma como Producto

flowchart TB
    subgraph Producto ["Suite de Proposito General"]
        P1["Motor IA Multimodal - CAG+RAG"]
        P2["Backend Cloud-Native - Quarkus+Dapr"]
        P3["Edge AI - Vision Camera"]
        P4["Integracion M365 - Graph API"]
        P5["Data Lake Soberano - ENS"]
    end

    subgraph Vertical ["Verticalizacion IEO"]
        V1["Reconocimiento de Especimenes"]
        V2["Análisis de Otolitos"]
        V3["Digitalizacion Colecciones"]
        V4["Integracion Departamental"]
    end

    P1 --> V1
    P1 --> V2
    P4 --> V3
    P2 --> V4
    P5 --> V4

    style Producto fill:#2c3e50,color:#fff
    style Vertical fill:#16a085,color:#fff

[!TIP] La plataforma se concibe como un producto de propósito general especializable, donde el IEO es la primera verticalización. Los componentes (Motor IA, Backend reactivo, Edge AI, integración M365, Data Lake soberano) son reutilizables para otras instituciones CSIC o centros de investigación con necesidades analogas.


Documentos Relacionados

Nivel Documento Descripción
N0 - Investigación Análisis LLM Departamental Modelos de IA por departamento, datasets públicos, tests
N0 - Investigación Gobernanza de Datasets Fuentes de datos, carga incremental, auditoría
N0 - Investigación Bancos de Datos Animales Fuentes internacionales, APIs, datasets de imágenes, almacenamiento
N1 - Arquitectura Pivote Quarkus+Dapr Decisión arquitectónica: Quarkus + Dapr + LangChain4j
N1 - Arquitectura Viabilidad Pekko→Dapr FSMs, escenarios, evaluación de migración
N1 - Arquitectura MLOps y Workflows Agénticos MLOps, Dapr Workflow, LangChain4j, sistema agéntico
N0 - Negocio Visión de Plataforma Presentación de alto nivel para el cliente
N1 - Arquitectura Arquitectura del Sistema Diseño técnico: ER, Docker, flujos, stack
N3 - Infraestructura Docker Compose Configuración del entorno local
N4 - Proyecto Roadmap Hitos, entregables y criterios de aceptación