SYS//SOFI-CORE-V2 APM//CLUSTER-TOPOLOGY
APM INVERSIONES
/ SOFI Platform
Consultoría Técnica de Arquitectura
Ciclo 2026 / Big Data

Arquitectura de Big Data
y Analítica de Negocios

Modernización, desacoplamiento de cargas analíticas en 4 capas y modelos predictivos sobre el ecosistema SOFI para la empresa APM Inversiones S.A.C.

HDFS 3.2 (128 MB, R=3) Scikit-Learn ML Inferencia MongoDB Aggregation Docker Distribuido
Storage Distribuido HDFS Alta Tolerancia

Replicación R=3 en 3 DataNodes con tolerancia a fallas de disco.

Ingesta & Telemetría NoSQL MongoDB Pipeline

Staging desacoplado de eventos Discord sin saturar PostgreSQL.

Analítica OLAP & ML Scikit-Learn

Inferencia de deserción en tiempo real y dashboards ejecutivos.

Consultor 1: Jhefry Cabanillas
Consultor 2: Carlos Gago
Consultora 3: Damaris Gutiérrez
Consultor 4: Diego Estilo
Organización: APM Inversiones
Ecosistema Base: SOFI Core
Contexto & Arquitectura Planteada

Ecosistema SOFI y Flujo Integral en 4 Fases de Big Data

APM Inversiones S.A.C. 128 Practicantes
SOFI Core V2

Modelo formativo 100% remoto que audita asistencia, telemetría Git y evaluaciones modulares.

🐙 GitHub Org 🎧 Bot Discord ⚡ NestJS Core ▲ Next.js
Auditoría: 7,111 Asistencias 1,515 Commits · 6 Stacks
Colisión OLTP/OLAP

Consultas analíticas pesadas sobre 7,111 filas degradan inserciones de marcación en PostgreSQL.

➔ HDFS Desacoplado
JOINs Masivos

Auditar a un practicante exige cruzar 5 tablas relacionales con latencias críticas en producción.

➔ NoSQL Aggregation
Ingesta Sin Buffer

Picos sincrónicos de eventos desde Discord (salas a las 9:00 AM) saturan la base sin colas.

➔ Buffer en Capa 1
Solución Planteada para el Proyecto: Pipeline Distribuido de 4 Fases
Arquitectura de Consultoría Big Data · Flujo End-to-End
FASE 1 Capa Ingestión
Ingesta & Data Prep
  • Extracción: Postgres, Discord y Git.
  • Profiling e imputación de nulos.
  • Normalización UTC y horas asistidas.
  • Enriquecimiento SUNAT/RENIEC.
Handoff: telemetria_2025.csv (384 MB)
FASE 2 Capa Storage
Clúster Hadoop HDFS
  • NameNode Master (Metadatos IPC :8020).
  • 3 DataNodes (dn-01, dn-02, dn-03).
  • Bloques de 128 MB (3 particiones).
  • Replicación R=3 (tolerancia a fallas).
Destino: hdfs:///data/sofi/
FASE 3 Capa Analítica
NoSQL & Machine Learning
  • MongoDB Pipeline ($unwind, $group).
  • Cálculo de 2 Tablas OLAP masivas.
  • Scikit-Learn ML (Random Forest).
  • Predicción de Deserción en tiempo real.
Resultados: 2 Tablas OLAP + Scoring
FASE 4 Capa Explotación
Dashboards & Negocio
  • 4 Gráficos interactivos Chart.js.
  • Monitoreo de horas asistidas vs req.
  • Severidad de fallos por tecnología.
  • Alertas para mitigación SUNAFIL.
Impacto: -25% Deserción Formativa
Fase 1: Ingesta

Capa de Ingesta y Preparación de Datos

Fuentes Internas Operacionales
4 Sistemas
PostgreSQL SOFI Core 128 p. / 7,111 filas

Maestro de practicantes, convenios, sedes, asistencias y solicitudes de recuperación.

Bot Discord (Presencia en Vivo) Stream Continuo

Eventos de check-in/out, horas en salas de voz (9:00 AM) y alertas de inactividad.

Módulo LMS Academia Event-Driven

Horas efectivas de estudio por módulo, estados de avance (planned/finished) y notas.

GitHub Org (Repositorios) 1,515 Commits

Volumen de commits, diffs de líneas agregadas/eliminadas, ramas activas y PRs.

Fuentes Externas (Enriquecimiento)
2 APIs REST
API RENIEC

Validación de DNI único, verificación de nombres oficiales y saneamiento de duplicados.

API Feriados PE

Calendario oficial de días no laborables para evitar penalizaciones erróneas en horas.

Pipeline de Data Preparation
Cadena Conexa
1
Descubrir Profiling
Auditoría de esquemas heterogéneos, tipos de datos y cardinalidad.
2
Limpiar Sanitización
Imputación de nulos, detección de anomalías y supresión de duplicados.
3
Normalizar UTC & Schema
Estandarización temporal UTC, escala horaria y hashing de privacidad.
4
Enriquecer Feature Eng.
Cruce con DNI de RENIEC, feriados nacionales y cálculo de horas efectivas.
Destino Handoff
Hacia Fase 2
telemetria_2025.csv 384 MB (Unificado) 128 practicantes · 7,111 registros
Particionado en HDFS (R=3) 3 Bloques
• Blk 1 (128 MB): DN-01, 02, 03
• Blk 2 (128 MB): DN-02, 03, 01
• Blk 3 (128 MB): DN-03, 01, 02
• Ruta: hdfs:///data/sofi/
• Validación: Checksum CRC-32
• Replicación: R=3 Tolerante a Fallas
✔ Handoff Listo para Ingesta en Clúster HDFS
Fase 2: HDFS 3.2

Topología Distribuida y Flujo de Tránsito

Etapa 0 de 4
1. Orígenes (6 Fuentes)
PostgreSQL Core
128 p. / 7,111 asist. (OLTP)
Bot Discord
Eventos de voz y streaming
LMS Capacitación
Lecciones, tareas y notas
Telemetría GitHub
Commits y Pull Requests
API RENIEC EXT
Validación de DNI y nombres
API Feriados PE EXT
Normalización calendario
Multi-Source Ingest Gateway
2. Dataset Crudo
telemetria_2025.csv 384 MB Amortizado en HDFS
• Bloque: 128 MB
• Partes: 3 Bloques
• I/O Overhead: <0.78%
HDFS Chunking
3. NameNodes (HA)
NameNode 1 ACTIVO
• RAM fsimage (450 B)
• Mapeo B1, B2, B3
• Heartbeat Monitor (3s)
IPC :9000 Master
⇅ QJM Journal Sync
NameNode 2 STANDBY
• QJM EditLogs Sync
• Checkpoint fsimage
• Failover Automático
Hot-Standby Quorum
4. DataNodes (Racks)
Rack 1 dn-01 :10.11
LIVE
Bloques: B1, B2, B3 (128 MB)
Streaming TCP: :9866
Heartbeat: 3s DC-Rack1
Rack 1 dn-02 :10.12
LIVE
Bloques: B1, B2, B3 (128 MB)
Streaming TCP: :9866
Heartbeat: 3s Simulación Falla
Rack 2 dn-03 :20.13
LIVE
Bloques: B1, B2, B3 (128 MB)
Streaming TCP: :9866
Rack Distante DC-Rack2
Rack 2 dn-04 :20.14
HOT-SPARE
Bloques: Standby (0 B)
Streaming TCP: :9866
Rack Distante Reserva Activa
5. Réplicas Físicas (R=3)
Bloque 1 (128 MB) R=3
Nodos: dn-01, dn-02, dn-03
Integridad: CRC-32 Verificado
Distribución Rack 1 + Rack 2 ✔
Bloque 2 (128 MB) R=3
Nodos: dn-01, dn-02, dn-03
Integridad: CRC-32 Verificado
Distribución Rack 1 + Rack 2 ✔
Bloque 3 (128 MB) R=3
Nodos: dn-01, dn-02, dn-03
Integridad: CRC-32 Verificado
Distribución Rack 1 + Rack 2 ✔
EN VIVO
Listo para iniciar el tránsito de datos o simular falla de nodo.
Saltar Directo a Etapa:
Fase 3-A: ML

Modelado Predictivo de Machine Learning (2 Modelos Analíticos)

Modelo 1: Riesgo de Deuda de Horas

Random Forest AUC 0.99
1. Problema: Postergación sistemática de turnos de recuperación de horas, llegando al fin del convenio con saldos deudores críticos (40-60h) que colapsan RRHH.
2. Objetivo: Reducir en 35% la tasa de convenios finalizados con saldo deudor mediante intervención proactiva a mitad de ciclo.
3. Predicción: Probabilidad de que el practicante incumpla la liquidación total de horas antes del vencimiento (P(Default) > 0.65).
Rol Nombre del Campo Tipo en Machine Learning Descripción y Dominio
Y riesgo_incumplimiento Cualitativa Binaria Target: 1 = Deuda Crítica / Default, 0 = Cumple
X₁ total_horas_adeudadas Cuantitativa Continua Saldo neto acumulado por inasistencias (ej. 42.5 hrs)
X₂ cantidad_faltas_injustificadas Cuantitativa Discreta Conteo entero de inasistencias sin justificar (ej. 4)
X₃ tipo_convenio Cualitativa Nominal Preprofesional (36h/sem) / Profesional (48h/sem) / Voluntario
X₄ tiene_plan_recuperacion Cualitativa Binaria 1 = Plan activo en curso, 0 = Sin solicitud activa
5. Justificación & Plan de Acción Preventivo Protege horas de proyectos y convenios
Riesgo > 75%: Congela tickets Jira/GitHub y cita a reunión de reprogramación sabatina obligatoria.
Riesgo 50%-75%: Alerta automática Discord con fechas límite y turnos de compensación disponibles.

Modelo 2: Detección Temprana de Bloqueo

Regresión Logística Acc 100%
1. Problema: Practicantes remotos con parálisis técnica en módulos complejos demoran 3-4 días en pedir auxilio, arriesgando sprints y deserción.
2. Objetivo: Detectar parálisis técnica en < 48 horas y reducir la deserción formativa en un 40%.
3. Predicción: Predecir parálisis formativa crítica antes del vencimiento del módulo (P(Stuck) > 0.80).
Rol Nombre del Campo Tipo en Machine Learning Descripción y Dominio
Y estado_bloqueado Cualitativa Binaria Target: 1 = Bloqueado / Requiere rescate, 0 = Normal
X₁ tiempo_modulo_horas Cuantitativa Continua Horas acumuladas dedicadas al módulo actual (ej. 18.5 hrs)
X₂ dias_sin_commits Cuantitativa Discreta Días laborables consecutivos sin actividad Git (ej. 3 días)
X₃ curso_tecnologico Cualitativa Nominal Ruta formativa (SpringBoot, React, TypeScript, Git)
X₄ solicito_ayuda_mentor Cualitativa Binaria 1 = Solicitó ticket en SOFI ayuda_puntos, 0 = No solicitó
5. Justificación & Plan de Acción Preventivo Reduce costos de rescate y deserción
Riesgo > 80%: Bot Discord agenda automáticamente Pair Programming (30 min) con mentor senior.
Riesgo 50%-80%: Envío de cápsulas didácticas en LMS y check-in proactivo del líder técnico.
Widget 2: Live ML

Simulador Interactivo de Inferencia en Tiempo Real

Modelo 1: Deuda de Horas (Default Risk)

Random Forest RIESGO BAJO
Total Horas Adeudadas (X₁): 15.0 hrs
0 hrs (Normal) Tolerancia (15h) 60 hrs (Límite)
Faltas Injustificadas (X₂): 1 faltas
0 (Asistencia 100%) Alerta (3 faltas) 8 faltas (Máx)
Días Restantes (X₅): 45 días
5 d 45 d 90 d
Tipo Convenio (X₃): Carga contractual
Probabilidad Estimada de Incumplimiento:
18% P(Default)
0% Normal 40% Riesgo Medio 65% Crítico 100%
Acción Recomendada: Habilitado para horas formativas regulares. Felicitación automática en canal de Discord.

Modelo 2: Detección de Bloqueo (Stuck Intern)

Regresión Logística NORMAL
Horas en Módulo Actual (X₁): 20.0 hrs
0 hrs Estándar (20h) 80 hrs (Alerta)
Días Consecutivos sin Commits (X₂): 2 días
0 días (Activo) Umbral Alerta (3d) 14 días (Deserción)
Fallos Rúbrica (X₅): 0 intentos
0 2 fallos 5
Ruta Formativa (X₃): Complejidad técnica
Probabilidad Estimada de Parálisis:
12% P(Stuck)
0% En Ritmo 40% Fricción Leve 65% Parálisis 100%
✅ Desempeño y Velocidad Óptimos (12% riesgo):
El practicante avanza con commits continuos y evaluaciones dentro del margen pedagógico regular.
Fase 3-B: OLAP

Modelado Descriptivo OLAP y Data Marts en PostgreSQL

Database: sofi_postgres

dm_balance_asistencia_practicante

9 Campos
Propósito Operacional: Consolidado mensual para liquidación de horas formativas (144h meta / 36h sem), cálculo de pasivo por inasistencias y categorización del riesgo laboral para auditorías formativas.
Nombre del Campo Tipo Descripción Corta Origen
practicante_id Integer Identificador único del practicante en SOFI PostgreSQL (usuarios)
periodo_mes Varchar Mes y año del balance analizado (ej. "2026-08") PostgreSQL (asistencias)
horas_requeridas Float Meta mensual de convenio (144h / 36h sem) PostgreSQL (convenios)
horas_asistidas_reales Float Horas netas registradas en conexión y formación Bot Discord / Logs
total_tardanzas Integer Registros con ingreso posterior a la tolerancia PostgreSQL (asistencias)
total_inasistencias Integer Días laborables sin registro ni justificación PostgreSQL (asistencias)
horas_recuperadas Float Horas compensadas en turnos extraordinarios PostgreSQL (recuperaciones)
balance_horas Float Saldo neto (reales + recuperadas - requeridas) Cálculo OLAP ETL
estado_laboral Varchar Cumplimiento formativo (Regular / Alerta / Observado) Regla de Negocio

dm_rendimiento_capacitacion_telemetria

11 Campos
Propósito Operacional: Cruce analítico entre evaluaciones técnicas de mentores en LMS y telemetría objetiva de repositorios (commits, PRs en GitHub) para detectar fricción formativa temprana.
Nombre del Campo Tipo Descripción Corta Origen
practicante_id Integer Identificador único del practicante evaluado PostgreSQL (usuarios)
curso_nombre Varchar Denominación de la ruta técnica (SpringBoot, Git) LMS / cursos
modulo_tema_actual Varchar Módulo formativo en desarrollo actualmente LMS / modulos
estado_progreso Varchar Situación curricular (finished, in_progress, planned) Telemetría LMS
nota_evaluacion_mentor Float Calificación en rúbrica técnica (escala 0 - 20) Rúbricas Mentor SOFI
tuvo_reevaluacion Boolean Indica si requirió segundo intento tras reprobación Rúbricas Mentor SOFI
commits_totales Integer Cantidad de commits registrados en el módulo API GitHub
lineas_codigo_agregadas Integer Volumen neto de líneas añadidas en repositorios API GitHub
pull_requests_aprobados Integer PRs revisados, aprobados y fusionados API GitHub
tiempo_estudio_horas Float Horas invertidas en plataforma formativa Telemetría LMS
nivel_dominio_tecnico Varchar Segmentación analítica (Básico, Intermedio, Avanzado) Clasificación OLAP
Fase 3-C: NoSQL

Pipeline de Agregación NoSQL en MongoDB (5 Etapas)

Etapa 1: $match (Filtrado de Universo Documental) | Colección: sofi_bigdata.practicantes_analytics

Filtra perfiles de software activos (Backend y Frontend).

Operador MQL:
DOCUMENTO DE ENTRADA (INPUT JSON) Colección Origen (128 Docs)

            
DOCUMENTO RESULTANTE (OUTPUT TRAS TRANSFORMACIÓN) Filtro Software (94 Docs)

            
Fase 4: Visualización & Dashboards

Tableros Ejecutivos & Visualización Analítica (Fase 4)

1. RRHH: Asistencia & Balance Horario
dm_balance_asistencia
Serie Temporal: Horas Reales vs Saldo Deudor Meta 144h (36h/sem)
Justificación Técnica: Serie de tiempo multieje que desacopla magnitudes dispares (Horas trabajadas 60-160h vs Saldo deudor 0-50h). Permite auditar la convergencia mensual hacia la meta legal de 144h/mes.
Asistencia Neta 92.4% (≥90%)
Pasivo Acumulado 42.0h global
Compensación 88.5% recup.
Verde (< 5h): Regular / Acreditado para certificación y renovación de convenio.
Amarillo (5h - 15h): Alerta / Programación automática de turno compensatorio (sábados).
Rojo (> 15h): Observado / Bloqueo preventivo de convenio laboral (Blindaje SUNAFIL).
2. Tech Lead: Rendimiento & Fricción
dm_rendimiento & NoSQL
Comparativa: Calificación vs Tasa de Atascamiento Fricción Técnica
Justificación Técnica: Barras agrupadas ordenadas por severidad. Permite contrastar la métrica académica (0-20 pts) frente a la tasa de parálisis técnica (0-100%) para focalizar refactorizaciones curriculares.
Retención Total 81.5% egreso
Commits / PR 6.2 (4-8)
Resolución Fricción 18.4h media
[48h]
Inactividad Git: Notificación automática de bot de seguimiento y reasignación.
[72h]
Parálisis en Módulo: Sesión mandatoria de Pair Programming con mentor senior.
[CSI]
SpringBoot / React: Módulos con mayor severidad de atascamiento (>58%).
Despliegue & Cierre

Orquestación en Docker y Cierre de Consultoría

Docker Compose
Entornos de Acceso
Multi-Host
Local (Fedora Linux) Nginx Reverse Proxy & Vite HMR
:80/:3000
Nube (Azure Cloud) Instancia Linux Standard B2s
48.216.216.91
HDFS NameNode WebUI Monitoreo de bloques y réplicas
:9870
API & Inferencia ML FastAPI Swagger & Endpoints
:8000
Red bigdata_net
6 Contenedores
postgres_db Data Marts dm_balance & dm_rendimiento
:5432
mongodb_sofi Colección BSON practicantes_analytics
:27017
namenode + datanodes 3 DataNodes, bloques 128MB y R=3
:9870
sofi-presentation Servidor Nginx + Reveal.js + Widgets
:80
Rúbrica Académica
100% Cumplida
Fase 1: Ingesta & Data Prep 4 internas + 2 externas (RENIEC / Feriados)
PASS
Fase 2: HDFS 128 MB & R=3 3 bloques, 9 réplicas y Rack Awareness
PASS
Fase 3: ML + OLAP + MongoDB 2 modelos ML, 2 Data Marts y pipeline 5 etapas
PASS
Fase 4: Tableros & Justificación Serie multieje + barras comparativas + alertas
PASS
Sustentación de Consultoría Big Data — APM Inversiones S.A.C.
Plataforma SOFI Core • Telemetría y Formación de Interns • 2026
Jhefry Cabanillas • Carlos Gago • Damaris Gutiérrez • Diego Estilo
Listo para Sustentación