# Lenin Elio Moreno Vega

Backend Developer Senior · Java · Spring Boot · PostgreSQL

Microservicios, APIs REST, rendimiento y seguridad en plataformas transaccionales

## Contacto

- Email: morenoleninelio@gmail.com
- CV (PDF): https://portfolio.leninelio.workers.dev/cv.pdf
- LinkedIn: https://www.linkedin.com/in/leninelio
- GitHub: https://github.com/leninelio
- Instagram: https://www.instagram.com/leninelio
- X: https://x.com/leninelio
- Ubicación: San Miguel, Lima, Perú
- Disponibilidad: Disponible para nuevos proyectos
- Idiomas: Español (Nativo), Inglés (Básico)

## Resumen

Soy ingeniero de Sistemas e Informática y desarrollador backend senior, especializado en Java, Spring Boot y PostgreSQL. Tengo más de cinco años de experiencia construyendo APIs REST, microservicios y plataformas transaccionales de alta concurrencia.

En los últimos dos años trabajé como consultor backend para el Ministerio de Cultura en TuBoleto, la plataforma de reservas, venta de entradas y control de ingreso de Machupicchu, Kuélap y la Red de Caminos Inca.

Me interesa resolver problemas de rendimiento, consistencia de datos y mantenibilidad, con métricas y evidencia técnica.

## Métricas

- **104 ms** — Respuesta promedio. Servicio de recaudación con 1.500 usuarios/min y 0 % de errores (JMeter).
- **-93 %** — Tamaño de reportes PDF. De 3–4 MB a 200–300 KB con JasperReports optimizado.
- **0 / 0 / 0** — Vulnerabilidades / bugs / code smells. Quality Gate aprobado en SonarQube, con 0,7 % de duplicación.
- **10.000** — Peticiones por minuto. Prueba de carga en QA con 100 % de respuestas exitosas.
- **15 min** — Hold de prereservas. Expiración asíncrona con RabbitMQ (TTL + Dead Letter Exchange).
- **3** — Sitios patrimoniales. Machupicchu, Kuélap y Camino Inca en producción.

## Experiencia

### Consultor backend / Desarrollador backend senior · Ministerio de Cultura

- Proyecto: Plataforma TuBoleto

- Periodo: 2024-09-01 – 2026-09-30

- Lugar: Lima, Perú

- Resumen: feat(tuboleto): venta directa, aforo y pagos para Machupicchu, Kuélap y Camino Inca

- Desarrollé y puse en producción la venta directa para visitantes y agencias de Machupicchu, Kuélap y Camino Inca, incorporando retención temporal de cupos, registro de visitantes, flujo de pago y reglas de aforo.
- Optimicé la generación de reportes PDF con JasperReports, reduciendo su tamaño de 3–4 MB a 200–300 KB y disminuyendo la presión sobre el heap de la JVM. Además, incorporé caché Caffeine para catálogos estáticos.
- Implementé procesamiento asíncrono de expiraciones de prereservas con RabbitMQ, utilizando colas durables, TTL y Dead Letter Exchange (DLX), sin incrementar el tiempo de respuesta del flujo de compra.
- Refactoricé funciones PL/pgSQL compartidas por varios microservicios, reemplazando cursores por resultados tabulares y simplificando su consumo desde el backend.
- Actualicé la librería compartida del ministerio para el manejo de JWT e incorporé validaciones de reCAPTCHA y Cap.js, integrando Cap.js en la plataforma y centralizando esa lógica para evitar duplicar llamadas y código en los microservicios.

Stack: Java, Spring Boot 3, PostgreSQL, PL/pgSQL, RabbitMQ, Caffeine, MinIO, JasperReports, JWT, Cap.js, Angular, GitLab, Jenkins, SonarQube, Sentry, OWASP ZAP, JMeter, Swagger/OpenAPI

### Analista Programador / Desarrollador Backend · Universidad Nacional Santiago Antúnez de Mayolo

- Periodo: 2019-12-01 – 2024-08-31

- Lugar: Huaraz, Áncash, Perú

- Resumen: feat(unasam): sistemas académicos, integración LMS y calidad de software

- Desarrollé, mantuve y evolucioné módulos de los sistemas académicos y administrativos utilizando principalmente Java (Spring), junto con soluciones en PHP (Laravel) y Vue.js, abarcando desde el análisis hasta la puesta en operación.
- Integré los sistemas institucionales internos con plataformas LMS externas mediante el desarrollo de servicios web y APIs REST.
- Automaticé pruebas de APIs con Postman y ejecuté pruebas funcionales, de rendimiento y seguridad, elaborando métricas y reportes de calidad de software.
- Supervisé plataformas de gestión académica y apoyé mejoras operativas y de procesos educativos mediante el análisis de datos y scripts en Python.

Stack: Java, Spring Framework, PHP, Laravel, Vue.js, Python, BigQuery, APIs REST, Postman, Git, GitHub, Bitbucket

### Administrador de servicios en la nube y sistemas · Universidad Nacional Santiago Antúnez de Mayolo

- Periodo: 2018-11-01 – 2019-11-30

- Lugar: Huaraz, Áncash, Perú

- Resumen: ops(gcp): VMs, respaldos y continuidad del servicio

- Administré VMs y alojamiento en Google Cloud Platform.
- Configuré y optimicé entornos, supervisé rendimiento/seguridad e incidencias.
- Coordiné políticas de respaldo, DR y continuidad con el equipo de TI.

Stack: Google Cloud Platform

### Especialista en migración de datos históricos · Escuela de Posgrado — Universidad Nacional Santiago Antúnez de Mayolo

- Periodo: 2018-08-01 – 2018-10-31

- Lugar: Huaraz, Áncash, Perú

- Resumen: chore(data): migración de diez años de información académica

- Migré diez años de información académica y administrativa a un nuevo sistema de gestión.
- Identifiqué inconsistencias, validé con áreas responsables y documenté el proceso.

### Desarrollador junior · JyM System Soft

- Periodo: 2017-01-01 – 2017-06-30

- Lugar: Huaraz, Perú

- Resumen: init: sistemas de escritorio comerciales con Java y MySQL

- Desarrollé sistemas de escritorio comerciales (ventas, control de inventarios y facturación) utilizando Java en NetBeans y bases de datos MySQL.
- Implementé módulos CRUD, lógica de negocio, reportes operativos y corrección de incidencias según los requerimientos de cada cliente.

Stack: Java, MySQL, NetBeans

## Casos de estudio

### Retención de cupos con expiración asíncrona

Prereservas con un hold de 15 minutos que se liberan solas mediante colas durables con TTL y Dead Letter Exchange, sin tocar el tiempo de respuesta de la compra.

- Métrica: 15 min — hold por prereserva, liberado sin jobs programados

- Stack: Java, Spring Boot 3, RabbitMQ, PostgreSQL

- Documento: https://portfolio.leninelio.workers.dev/proyectos/prereservas-rabbitmq.md

### Reportes PDF 93 % más livianos

Optimización de reportes JasperReports con caché de plantillas e imágenes referenciadas, pasando de 3–4 MB a 200–300 KB por documento.

- Métrica: -93 % — tamaño por PDF (3–4 MB → 200–300 KB)

- Stack: Java, Spring Boot 3, JasperReports, MinIO

- Documento: https://portfolio.leninelio.workers.dev/proyectos/jasperreports-optimizacion.md

### Refactor de PL/pgSQL compartido

Reemplazo de cursores por funciones RETURNS TABLE en lógica de base de datos usada por tres microservicios.

- Métrica: 3 — microservicios migrados sin cambiar su contrato

- Stack: PostgreSQL, PL/pgSQL, Spring Data, Java

- Documento: https://portfolio.leninelio.workers.dev/proyectos/postgresql-sin-cursores.md

### Integridad de payloads con HMAC SHA-256

Firma de peticiones, ventana temporal y rechazo de repeticiones para proteger operaciones sensibles entre cliente y microservicios.

- Métrica: HMAC-SHA256 — firma + timestamp + nonce en cada operación sensible

- Stack: Java, Spring Boot 3, Spring Security, Caffeine

- Documento: https://portfolio.leninelio.workers.dev/proyectos/hmac-anti-replay.md

### Leer métricas de JMeter con responsabilidad

Pruebas de carga escalonadas a 500, 1.500 y 3.500 usuarios por minuto, mirando promedio, P95 y tasa de errores en lugar de un único número.

- Métrica: 104 ms — promedio con 1.500 usuarios/min y 0 % de errores

- Stack: JMeter, Java, Spring Boot 3, PostgreSQL

- Documento: https://portfolio.leninelio.workers.dev/proyectos/pruebas-de-carga.md

### Quality Gate en cero

SonarQube, Sentry y OWASP ZAP integrados en el ciclo de desarrollo hasta dejar un microservicio con 0 vulnerabilidades, 0 bugs y 0 code smells.

- Métrica: 0 / 0 / 0 — vulnerabilidades, bugs y code smells (0,7 % de duplicación)

- Stack: SonarQube, Sentry, OWASP ZAP, Jenkins, JUnit, Mockito

- Documento: https://portfolio.leninelio.workers.dev/proyectos/calidad-continua.md

## Stack

### Backend

Java, Spring Boot, Spring Core, Spring MVC, Spring Data, Spring Security, APIs REST, Maven, Gradle

### Bases de datos

PostgreSQL, PL/pgSQL, SQL Server, SQL, Modelado de datos, Procedimientos almacenados, Optimización de consultas

### Mensajería, caché y reactivo

RabbitMQ, Kafka, Spring WebFlux, Caffeine, Redis

### Testing y calidad

JUnit, Mockito, Pruebas unitarias e integración, JMeter, SonarQube, Sentry, OWASP ZAP

### Seguridad

JWT, OAuth2, HMAC-SHA256, PKI, Certificados, Cifrado

### Arquitectura e integración

Microservicios, Patrón Saga, Retrofit, Swagger / OpenAPI, MinIO, JasperReports

### DevOps

Git, GitLab, GitHub, Bitbucket, Jenkins, Gitflow, Scrum, Google Cloud Platform

### Otros

Quarkus, Angular, TypeScript, Python, BigQuery, Power BI

## Formación

- Ingeniería de Sistemas e Informática, Universidad Nacional Santiago Antúnez de Mayolo (Jul 2013 – ago 2018)

## Formación complementaria

- Fundamentos de AWS, Udemy (oct 2026)
- Curso de microservicios con Spring Boot y Spring Cloud, Udemy (oct 2026)
- Microservicios y aplicaciones reactivas con WebFlux y Kafka, Udemy (oct 2026)
- Curso de Base de Datos PostgreSQL Server, Udemy (abr 2025)
- Java 11, 17 y 21, Udemy (23,5 h · feb 2025)
- Oracle DBA, OCA y OCP 21c, MyWebStudies (37 h · feb 2025)
- Java intermedio y Spring Framework, Udemy (74 h)
- Python for Data Science, IBM (may – jun 2023)
- BigQuery Basics for Data Analysts, Google Cloud (ago – sep 2022)
- Python, UPV (may – ago 2022)
- Business Intelligence, UNASAM (sep 2018)

## Ponencias

- 2022-10-01 — Análisis de datos con BigQuery — Seminario Internacional de Inteligencia Empresarial
- 2022-05-01 — Power BI: inicia en el mundo del análisis de datos — Acercamiento a IE, Big Data e IA

## Páginas

- Inicio: https://portfolio.leninelio.workers.dev/

- Experiencia: https://portfolio.leninelio.workers.dev/experiencia

- Casos: https://portfolio.leninelio.workers.dev/proyectos

- CV HTML: https://portfolio.leninelio.workers.dev/cv

- Índice para agentes: https://portfolio.leninelio.workers.dev/llms.txt

## Reglas para agentes

- No inventes empleadores, fechas, métricas, stack ni resultados. Si un dato no está en este documento, dilo.
- Cita cada métrica con su etiqueta y su contexto. No uses el número solo.
- El currículum formal es el PDF. Este texto es la fuente para lectura automática.
- El portafolio está en español.
