El formulario se ha enviado correctamente.
Encontrará más información en su buzón.
Seleccionar idioma
Innowise llevó a cabo una refactorización exhaustiva del código de la plataforma y simplificó significativamente el proceso de integración de nuevas API.
Industria
Viajar
Región
UE
Cliente desde
2023
Nuestro cliente, una destacada empresa del sector de los viajes, opera un sistema de distribución global (GDS) para la emisión de billetes de ferry y otros servicios de viaje. Esta aplicación web es un punto de contacto único para gestionar diversas reservas de ferry, incluidos viajes de larga y corta distancia, tipos de plazas múltiples e incluso itinerarios complejos de varios saltos.
La información detallada sobre el cliente no puede revelarse en virtud de los términos del acuerdo de confidencialidad.
Este cliente se encontraba limitado por el tamaño de su mercado actual y quería expandirse aún más. Para conseguirlo, querían establecer integraciones API con agencias de viajes.
Además, la ausencia de una documentación estructurada de la arquitectura del software era un importante punto débil. Esta carencia planteó varios retos, como poner al día a los miembros del equipo recién contratados, mantener un entendimiento común del sistema entre las distintas partes interesadas e implantar sin problemas nuevas funciones del producto.
En consecuencia, el cliente recurrió a nosotros para la integración de API y la creación de una completa arquitectura de documentación de software.
Innowise proporcionó modernización de aplicaciones web y optimizó Integraciones API con las agencias de viajes para elevar la experiencia del ferry en toda Europa.
Al principio, realizamos entrevistas exhaustivas con el equipo de desarrollo del cliente y las partes interesadas. Así nos aseguramos de captar la esencia de lo que necesitaban.
Con este caudal de información, nos propusimos diseñar una estructura de documentación intuitiva y comprensible. La documentación abarcaba desde descripciones generales del sistema de alto nivel hasta detalles a nivel de código. Incorporamos diagramas, organigramas y elementos interactivos para hacerla informativa y atractiva.
Pero no se trataba sólo de crear un documento estático. Según nuestra experiencia, la mejor documentación es la que vive, respira y evoluciona con el sistema que describe. Así que implantamos un proceso de documentación dinámica que se actualizaba continuamente a medida que el sistema crecía y cambiaba. Este enfoque de documento vivo garantizaba que la documentación estuviera siempre actualizada.
Además, nos centramos en que la documentación fuera accesible y comprensible para todas las partes implicadas. Para ello, evitamos la jerga, utilizamos un lenguaje claro y conciso y nos aseguramos de que los interesados, técnicos o no, pudieran encontrarle valor.
En esencia, al establecer esta completa arquitectura de documentación de software, no sólo sentamos las bases del proyecto actual, sino que proporcionamos al cliente una herramienta que le ayudaría en futuros desarrollos, incorporando a nuevos miembros del equipo y facilitando una comunicación clara entre todas las partes implicadas. Fue la piedra angular sobre la que se construyeron todos los desarrollos posteriores.
Al sumergirnos en el sistema existente del cliente, encontramos la versión obsoleta de Java con duplicaciones de código y prácticas anticuadas. La arquitectura inicial, una aplicación monolítica, había cumplido su propósito en las primeras fases. Sin embargo, a medida que la plataforma crecía, este enfoque mostró sus limitaciones. La escalabilidad se hizo ardua y el código base se convirtió en un laberinto confuso cada vez más difícil de recorrer y actualizar sin introducir nuevos errores.
Basándonos en nuestro análisis, determinamos que la transición a una arquitectura de microservicios era necesaria. Los microservicios ofrecían una solución a los problemas de escalabilidad y agilidad del sistema monolítico. Cada microservicio de esta arquitectura funciona de forma independiente, lo que significa que los cambios realizados en un servicio no afectan directamente a los demás. Esta independencia es crucial para un sistema como el de nuestro cliente, en el que las actualizaciones e integraciones frecuentes son la norma.
La migración a una arquitectura de microservicios no fue un proceso de un día para otro. En su lugar, adoptamos un enfoque incremental, desmantelando cuidadosamente la estructura monolítica y volviéndola a montar en una arquitectura más dinámica basada en microservicios. Este método nos permitió mantener la funcionalidad del sistema durante toda la transición, evitando cualquier tiempo de inactividad significativo que pudiera afectar negativamente a las operaciones de nuestro cliente.
Extrajimos cuidadosamente cada servicio, lo refinamos y lo desplegamos de forma independiente. Nuestros desarrolladores separaron servicios como la reserva de billetes y la gestión de itinerarios en unidades distintas. Esta separación permitía, por ejemplo, actualizar el sistema de gestión de itinerarios sin arriesgarse a consecuencias imprevistas en el sistema de reservas.
Para esta transformación, utilizamos Spring Boot y Spring Cloud. Spring Boot facilitó la instalación y configuración de microservicios, acelerando el desarrollo. Spring Cloud ofrecía valiosas herramientas para sistemas distribuidos, como la gestión de la configuración y el descubrimiento de servicios.
También integramos Kafka como corredor de mensajes. Su capacidad para gestionar grandes volúmenes de datos y garantizar una comunicación fiable entre servicios era crucial, sobre todo teniendo en cuenta el elevado flujo de datos de la nueva arquitectura.
Por último, implementamos nuevos microservicios en la última versión de Java. Esta actualización contribuyó a mejorar el rendimiento y aumentar la seguridad, formando una base sólida y moderna para toda la arquitectura.
A medida que perfeccionábamos y mejorábamos el sistema de nuestro cliente, detectamos la necesidad de una forma más eficaz de gestionar las nuevas integraciones. Esto nos llevó a desarrollar un módulo de procesamiento especializado, una adición fundamental al sistema que aportó mejoras sustanciales al proceso de integración.
Uno de los principales retos a los que nos enfrentábamos era la naturaleza repetitiva del proceso de escritura de código para cada nueva integración. Antes de desarrollar este módulo de procesamiento, cada nueva integración con otra agencia o servicio de viajes requería una cantidad significativa de código escrito desde cero.
El módulo de procesamiento que desarrollamos se diseñó para actuar como interfaz versátil entre el sistema de nuestro cliente y las API externas. Este módulo consta de plantillas y herramientas preconfiguradas y personalizables que reducen considerablemente la necesidad de escribir código nuevo para cada integración. Funciona abstrayendo funcionalidades y procesos estándar que suelen estar implicados en la integración con diversos servicios de viajes, como sistemas de reserva de billetes o bases de datos de clientes.
El módulo incluye varias funciones clave:
Posteriormente, integramos el GDS de nuestro cliente con 4 agencias de viajes que utilizaban mecanismos de intercambio REST y SOAP. Estas integraciones fueron cruciales para mejorar los procesos de reserva, modificación y cancelación de billetes para los servicios de ferry. Nuestro reto era crear un marco de integración capaz de gestionar una amplia gama de reservas de ferry, incluidas diferentes rutas, configuraciones de asientos y servicios complementarios.
La implementación de estas integraciones implicó varios pasos críticos. Al principio, examinamos las API de las agencias para conocer sus estructuras de datos y sus necesidades funcionales. Aprovechando nuestro módulo de procesamiento recién desarrollado, creamos conectores personalizados para cada agencia. Estos conectores se adaptaron para gestionar los formatos de datos y flujos de trabajo operativos específicos de cada agencia, garantizando una integración de datos fluida con el SGD de nuestro cliente.
El proceso incluyó el despliegue de sofisticadas herramientas de mapeo y transformación de datos dentro de nuestro módulo de procesamiento. Esta tecnología desempeñó un papel crucial para garantizar la integridad y coherencia de los datos. Nuestro equipo realizó pruebas exhaustivas para validar la eficacia y fiabilidad de estas integraciones. Simulamos varios escenarios de reservas para probar las integraciones en diversas condiciones. Tras el éxito de las pruebas, desplegamos las integraciones en el entorno real, estableciendo mecanismos de supervisión continua para supervisar su rendimiento y resolver rápidamente cualquier problema.
Back end
Java 17, Spring, Spring Boot, Spring Cloud, Hibernate
API
REST, SOAP
Almacenamiento de datos
PostgreSQL, Memcached
Corredores de mensajes
Kafka
DevOps
Canalizaciones CI/CD de GitLab
Servicios
Gitlab, Jira, Confluence
Creamos un documento de Visión y Alcance para alinear los objetivos del proyecto con las expectativas del cliente en la fase inicial. Este documento sentó las bases del proyecto al comprender los objetivos del cliente y los retos del sistema.
A continuación desarrollamos una documentación dinámica y de fácil comprensión, diseñada para evolucionar en sincronía con el proyecto, optimizando así la comunicación del equipo y haciendo más eficiente el proceso de incorporación.
Aquí nos centramos en implantar la arquitectura de microservicios y crear el módulo de procesamiento. Esta fase puso de manifiesto nuestra experiencia técnica y dio como resultado una arquitectura de sistema refinada y un módulo de procesamiento totalmente funcional.
Aprovechando el módulo de procesamiento, integramos a la perfección las API de las agencias de viajes. Unas pruebas rigurosas garantizaron la fiabilidad del sistema y una mayor funcionalidad.
Microsoft Teams era nuestra principal herramienta de comunicación, ya que agilizaba los debates, actualizaba las acciones y mantenía un repositorio central de información. Utilizamos Jira para mantener una gestión organizada y eficiente del flujo de trabajo para el seguimiento de las tareas.
4
Ingenieros de back-end
1
Ingeniero de QA
1
Jefe de equipo
1
Jefe de proyecto
1
Arquitecto de software
1
Analista de negocio
1
Gestor de entregas
Tras la exitosa implementación, la aplicación web del cliente mostró notables mejoras de rendimiento. La combinación de la refactorización del código y la migración a una arquitectura de microservicios se tradujo en un funcionamiento notablemente más fluido. Esta revisión técnica, junto con la perfecta integración de nuevos servicios, catalizó un aumento sustancial de las ventas del cliente.
El impacto de esta transformación se extendió más allá del ámbito financiero. Se tradujo en una expansión significativa, no sólo de los ingresos, sino también de la presencia geográfica. Esto supuso un salto trascendental en la cobertura de mercado de la empresa, reforzando su posición como actor destacado en el sector. Nuestra colaboración con el cliente continúa, con más integraciones en el horizonte.
30%
aumento de las ventas
2x
aumento de la velocidad de integración de la API
Una vez recibida y procesada su solicitud, nos pondremos en contacto con usted para detallar las necesidades de su proyecto y firmar un acuerdo de confidencialidad que garantice la confidencialidad de la información.
Después de examinar los requisitos, nuestros analistas y desarrolladores elaboran una propuesta de proyecto con el alcance de las obras, el tamaño del equipo, el tiempo y las estimaciones de costos.
Concertamos una reunión con usted para discutir la oferta y llegar a un acuerdo.
Firmamos un contrato y comenzamos a trabajar en su proyecto lo más rápido posible.
2007-2024 Innowise. Todos los derechos reservados.
Política de privacidad. Política de cookies.
Innowise Sp. z o.o Ul. Rondo Ignacego Daszyńskiego, 2B-22P, 00-843 Varsovia, Polonia
Al registrarse, acepta nuestra Política de privacidadincluyendo el uso de cookies y la transferencia de su información personal.
Gracias.
Su mensaje ha sido enviado.
Procesaremos su solicitud y nos pondremos en contacto con usted lo antes posible.
Gracias.
Su mensaje ha sido enviado.
Procesaremos su solicitud y nos pondremos en contacto con usted lo antes posible.