Programando una Aplicación con Requisitos Estrictos de Rendimiento

Ordenadores, seguros médicos y dinero

Al entrar, vimos a más de cincuenta personas trabajando en esa amplia sala. Eran el personal de soporte telefónico del sistema de autorizaciones. Cada vez que un paciente pasaba la tarjeta de su seguro médico en una consulta, hospital, o incluso ambulancia en marcha, los ordenadores consultarían las condiciones de dicha póliza, cruzándolas con los detalles del tratamiento solicitado, autorizándolo.

50 pantallas

Era una estructura que funcionaba a la perfección, y que le costaba a nuestro cliente cientos de miles de euros cada año, puesto que la plataforma que estaban utilizando para procesar tantas consultas era un sistema alquilado, con pagos grandes y recurrentes.

Nuestro equipo de desarrollo recibió la importante tarea de reemplazar un sistema que funcionaba correctamente, por un nuevo sistema mejorado, que sería propiedad de nuestro cliente. Esta estructura mejorada sería capaz de tratar incluso con un número mayor de transacciones, mientras que nuestro cliente ahorraría una cantidad significativa de dinero al no tener que pagar cuotas recurrentes

Cuando el rendimiento es un factor crítico

Uno de los puntos clave del sistema que desarrollamos es que tenía que ser capaz de funcionar con picos de demanda de varios miles de conexiones por segundo. Y las decenas de miles de conexiones pueden ser un número bastante considerable en un contexto como éste, máxime cuando los retrasos o errores de servicio son inadmisibles – ya que, después de todo, la aplicación funcionaba con servicios de salud, y tanto el tratamiento como la propia salud de los pacientes también estaban en juego.

10000 conexiones

Sometimos al sistema a una batería de pruebas exhaustivas, para verificar que soportaría este nivel de carga. Y de hecho, funcionó a la perfección. Esencialmente, conseguimos estos resultados gracias a una base de datos de PostgreSQL, trabajando con Hibernate, en un entorno configurado a la perfección, haciendo uso intensivo del caché de datos, y recibiendo consultas de búsqueda optimizadas.

Cómo lo hicimos

Programamos este nuevo sistema utilizando un proceso de desarrollo ágil. Desde el punto de vista técnico, estaba basado en Java con Struts, en un servidor Linux dedicado que ejecutaba Apache. Nuestra elección para el motor de bases de datos fue PostgreSQL, conectado con el núcleo de la aplicación utilizando Hibernate.

estructura de la aplicación

Mis contribuciones principales a este proyecto fueron las siguientes:

  • Programación de parte de la lógica de aplicación en Java EE.
  • Desarrollo de parte del nuevo modelo de datos, y de consultas de datos, utilizando la base de datos PostgreSQL y Java / Hibernate.
  • Creación de una batería exhaustiva de casos de prueba (en general usando JUnit) para soportar las fases de verificación y de validación.
  • Programación en Java del software que hacía funcionar un lector de tarjetas USB como módulo de entrada de datos.
  • Diseño e implementación de una parte significativa de la interfaz web de la aplicación (HTML, CSS y Javascript).

El resultado fue un proyecto extremadamente exitoso, completado acorde con los plazos definidos, y que funcionaba con un rendimiento increíble. Gracias a nuestro trabajo, la empresa de nuestro cliente pudo expandirse hacia nuevos mercados, implementar un sistema de trabajo más eficiente, y ahorrar una cantidad de dinero significativa en costes operacionales.