← Inicio
Success Story · Kotlin · Java · Spring Boot · AWS

Sustituir un monolito sin poner en riesgo la operación

En una empresa energética, la comunicación de mercado – altas, bajas, lecturas de contadores – pasa por un monolito PHP que se considera imposible de mantener. Hay que sustituirlo sin que la operación se detenga.

Tarea

Sacar del monolito el envío y el procesamiento de los datos de mercado – paso a paso y con el sistema en marcha.

Solución

Nuevas aplicaciones y librerías en Kotlin y Java con Spring Boot sobre AWS, construidas con arquitectura hexagonal.

Resultado

Todo el envío de datos de mercado pasa ya por las nuevas aplicaciones. En la prueba de carga, la agregación procesó 70.000 datos en menos de un minuto, y el monolito funciona de forma más estable.

70.000
datos de mercado agregados en menos de un minuto en la prueba de carga
≈ 10 %
del monolito sustituido
6
librerías y aplicaciones construidas
Punto de partida

Un sistema que nadie quiere tocar

El monolito envía mensajes de mercado a otros participantes del mercado y agrega datos de mercado. Se considera imposible de mantener, y agregar grandes volúmenes de datos era para él una tarea casi imposible.

Sustituirlo de una sola vez habría sido demasiado arriesgado. Por eso se sustituye pieza a pieza: cada nueva aplicación asume una parte claramente delimitada.

Arquitectura

Hexagonal – y una plantilla para el departamento

Construí las nuevas aplicaciones con arquitectura hexagonal: la lógica de negocio no sabe nada de bases de datos ni de mensajería. Los adaptadores para AWS, PostgreSQL e interfaces son intercambiables y se pueden probar por separado.

Hoy el departamento usa esta estructura como plantilla para otras aplicaciones.

  • 6 librerías y aplicaciones en Kotlin y Java
  • Mensajería con SQS y SNS, datos en S3 y Aurora PostgreSQL
  • Tests con Testcontainers, WireMock y LocalStack
Resultado

Más rápido y más estable

Todo el envío de datos de mercado pasa hoy por las nuevas aplicaciones, que también se encargan de su agregación y resumen. Alrededor del 10 % del monolito está sustituido, y la parte restante funciona desde entonces de forma más estable.

En la primera prueba de carga, la nueva agregación procesó 70.000 datos de mercado en menos de un minuto. Para el sistema antiguo, eso era prácticamente inalcanzable.

Mantenibilidad

Para que lo nuevo no se convierta en el próximo sistema heredado

Actualicé las nuevas aplicaciones de Java 21 a Java 25 y de Spring Boot 3 a Spring Boot 4, e introduje Renovate. Desde entonces, las dependencias se mantienen al día de forma automática.

  • Kotlin
  • Java 25
  • Spring Boot 4
  • AWS S3
  • SQS
  • SNS
  • EKS
  • Aurora PostgreSQL
  • Terraform
  • Kubernetes
  • Flyway
  • Testcontainers
  • WireMock
  • LocalStack
Contacto

Hablemos de su backend.

Escríbame brevemente de qué se trata. Le responderé personalmente y veremos juntos si puedo ayudarle y cómo.

Retrato de Christoph Sens
Christoph SensSu contacto directo