Le formulaire a été soumis avec succès.
Vous trouverez de plus amples informations dans votre boîte aux lettres.
Sélection de la langue
Innowise a procédé à une refonte complète du code de la plateforme et a considérablement simplifié le processus de intégration API.
Industrie
Voyage
Région
UE
Client depuis
2023
Notre client, un acteur majeur de l'industrie du voyage, exploite un système de distribution mondial (GDS) pour l'émission de billets de ferry et d'autres services de voyage. Cette application web est un point de contact unique pour la gestion des différentes réservations de ferry, y compris les voyages de longue et de courte distance, les types de sièges multiples et même les itinéraires complexes à sauts multiples.
Les informations détaillées concernant le client ne peuvent pas être divulguées dans le cadre de l'accord de confidentialité.
Ce client s'est trouvé limité par la taille de son marché actuel et souhaitait se développer davantage. Pour ce faire, il souhaitait mettre en place des intégrations API avec des agences de voyage.
En outre, l'absence d'une documentation structurée sur l'architecture logicielle constituait un point sensible. Cette lacune a entraîné plusieurs défis, tels que la mise à niveau des membres de l'équipe nouvellement embauchés, le maintien d'une compréhension commune du système parmi les différentes parties prenantes et la mise en œuvre sans heurts de nouvelles fonctionnalités du produit.
Le client s'est donc tourné vers nous pour les intégrations API et la création d'une architecture complète de documentation logicielle.
Innowise a modernisé et optimisé l'application web. Intégrations API avec les agences de voyage pour améliorer l'expérience du ferry à travers l'Europe.
Nous avons commencé par mener des entretiens approfondis avec l'équipe de développement du client et les parties prenantes. Cette approche nous a permis de saisir l'essence de leurs besoins.
Forts de cette mine d'informations, nous avons entrepris de concevoir une structure de documentation intuitive et compréhensible. La documentation couvre tous les aspects, de la vue d'ensemble du système aux détails du code. Nous avons incorporé des diagrammes, des organigrammes et des éléments interactifs pour la rendre informative et attrayante.
Mais il ne s'agissait pas seulement de créer un document statique. D'après notre expérience, la meilleure documentation est celle qui vit, respire et évolue avec le système qu'elle décrit. Nous avons donc mis en place un processus de documentation dynamique qui serait continuellement mis à jour au fur et à mesure que le système se développait et évoluait. Cette approche de document vivant a permis de garantir que la documentation était toujours mise à jour.
En outre, nous nous sommes attachés à rendre la documentation accessible et compréhensible pour toutes les parties concernées. Il s'agissait d'éviter le jargon, d'utiliser un langage clair et concis et de veiller à ce que les parties prenantes techniques et non techniques puissent y trouver leur compte.
En établissant cette architecture complète de documentation logicielle, nous n'avons pas seulement jeté les bases du projet en cours, nous avons fourni au client un outil qui l'aiderait dans ses développements futurs, dans l'intégration des nouveaux membres de l'équipe et dans la facilitation d'une communication claire entre toutes les parties impliquées. Il s'agit de la pierre angulaire sur laquelle tous les développements ultérieurs ont été construits.
En nous plongeant dans le système existant du client, nous avons trouvé la version obsolète de Java avec des duplications de code et des pratiques dépassées. L'architecture initiale, une application monolithique, avait fait ses preuves dans les premiers temps. Cependant, au fur et à mesure que la plateforme se développait, cette approche a montré ses limites. L'évolutivité est devenue difficile, et la base de code s'est transformée en un labyrinthe confus dans lequel il était de plus en plus difficile de naviguer et de faire des mises à jour sans introduire de nouveaux bogues.
Sur la base de notre analyse, nous avons déterminé qu'il était nécessaire de passer à une architecture de microservices. Les microservices offrent une solution aux problèmes d'évolutivité et d'agilité du système monolithique. Chaque microservice de cette architecture fonctionne de manière indépendante, ce qui signifie que les changements apportés à un service n'ont pas d'impact direct sur les autres. Cette indépendance est cruciale pour un système comme celui de notre client, où les mises à jour et les intégrations fréquentes sont la norme.
La migration vers une architecture de microservices ne s'est pas faite du jour au lendemain. Nous avons adopté une approche incrémentale, en démantelant soigneusement la structure monolithique et en la réassemblant dans une architecture plus dynamique, basée sur les microservices. Cette méthode nous a permis de maintenir la fonctionnalité du système tout au long de la transition, en évitant tout temps d'arrêt important susceptible de nuire aux opérations de notre client.
Nous avons soigneusement extrait chaque service, l'avons affiné et l'avons déployé de manière indépendante. Nos développeurs ont séparé des services tels que la réservation de billets et la gestion d'itinéraires en unités distinctes. Cette séparation signifie que les mises à jour du système de gestion des itinéraires, par exemple, peuvent être effectuées sans risquer d'avoir des conséquences imprévues sur le système de réservation.
Pour cette transformation, nous avons utilisé Spring Boot et Spring Cloud. Spring Boot a facilité la mise en place et la configuration des microservices, accélérant ainsi le développement. Spring Cloud offre des outils précieux pour les systèmes distribués, tels que la gestion de la configuration et la découverte de services.
Nous avons également intégré Kafka en tant que courtier de messages. Sa capacité à gérer de gros volumes de données et à assurer une communication fiable entre les services était cruciale, en particulier compte tenu du flux de données important de la nouvelle architecture.
Enfin, nous avons mis en œuvre de nouveaux microservices sur la dernière version de Java. Cette mise à niveau a contribué à améliorer les performances et à renforcer la sécurité, constituant ainsi une base solide et moderne pour l'ensemble de l'architecture.
Au fur et à mesure que nous affinions et améliorions le système de notre client, nous avons constaté qu'il fallait trouver un moyen plus efficace de traiter les nouvelles intégrations. Cela a conduit au développement d'un module de traitement spécialisé, un ajout essentiel au système qui a apporté des améliorations substantielles au processus d'intégration.
L'un des principaux défis auxquels nous avons été confrontés était la nature répétitive du processus d'écriture du code pour chaque nouvelle intégration. Avant le développement de ce module de traitement, chaque nouvelle intégration avec un autre système d agence ou service de voyage a nécessité une quantité importante de code écrit à partir de zéro.
Le module de traitement que nous avons développé a été conçu pour servir d'interface polyvalente entre le système de notre client et les API externes. Ce module se compose de modèles et d'outils préconstruits et personnalisables qui réduisent considérablement la nécessité d'écrire un nouveau code pour chaque intégration. Il fonctionne en abstrayant les fonctionnalités et les processus standard généralement impliqués dans l'intégration avec divers services de voyage, tels que les systèmes de réservation de billets ou les bases de données de clients.
Le module comprend plusieurs caractéristiques essentielles:
Par la suite, nous avons intégré le GDS de notre client avec 4 agences de voyage qui utilisaient des mécanismes d'échange REST et SOAP. Ces intégrations étaient cruciales pour améliorer les processus de réservation, de modification et d'annulation des billets pour les services de ferry. Notre défi était de créer un cadre d'intégration capable de gérer une gamme variée de réservations de ferry, y compris différents itinéraires, configurations de sièges et services supplémentaires.
La mise en œuvre des intégrations API a nécessité plusieurs étapes critiques. Dans un premier temps, nous avons passé au crible les API des agences pour comprendre leurs structures de données et leurs exigences fonctionnelles. En nous appuyant sur notre nouveau module de traitement, nous avons créé des connecteurs personnalisés pour chaque agence. Ces connecteurs ont été conçus pour gérer les formats de données et les flux de travail opérationnels spécifiques de chaque agence, garantissant ainsi une intégration fluide des données avec le GDS de notre client.
Le processus comprenait le déploiement d'outils sophistiqués de mappage et de transformation des données au sein de notre module de traitement. Cette technologie a joué un rôle crucial en garantissant l'intégrité et la cohérence des données. Notre équipe a entrepris des tests approfondis pour valider l'efficacité et la fiabilité de ces intégrations. Nous avons simulé différents scénarios de réservation afin de tester les intégrations dans diverses conditions. Une fois les tests réussis, nous avons déployé les intégrations dans l'environnement réel, en mettant en place des mécanismes de contrôle continu pour superviser leurs performances et résoudre rapidement tout problème.
Back end
Java 17, Spring, Spring Boot, Spring Cloud, Hibernate
API
REST, SOAP
Stockage des data
PostgreSQL, Memcached
Courtiers en messages
Kafka
DevOps
Pipelines CI/CD GitLab
Services
Gitlab, Jira, Confluence
Nous avons créé un document de vision et de portée afin d'aligner les objectifs du projet sur les attentes du client lors de la phase initiale. Ce document a permis de poser les bases du projet en comprenant les objectifs du client et les défis posés par le système.
Nous avons ensuite élaboré une documentation dynamique et facilement compréhensible, conçue pour évoluer en phase avec le projet, afin d'optimiser la communication au sein de l'équipe et de rendre le processus d'intégration plus efficace.
Ici, nous nous sommes concentrés sur la mise en œuvre de l'architecture des microservices et sur l'élaboration du module de traitement. Cette phase a mis en évidence notre expertise technique, ce qui a permis d'affiner l'architecture du système et de mettre au point un module de traitement entièrement fonctionnel.
En nous appuyant sur le module de traitement, nous avons intégré de manière transparente les API des agences de voyage. Des tests rigoureux ont garanti la fiabilité du système et l'amélioration des fonctionnalités.
Microsoft Teams était notre principal outil de communication, rationalisant les discussions, mettant à jour les partages et maintenant un référentiel d'informations central. Nous avons utilisé Jira pour organiser et gérer efficacement le flux de travail pour le suivi des tâches.
4
Ingénieurs back-end
1
Ingénieur QA
1
Chef d'équipe
1
Chef de projet
1
Architecte logiciel
1
Analyste commercial
1
Gestionnaire des livraisons
Après une mise en œuvre réussie, l'application web du client a présenté des améliorations remarquables en termes de performances. La combinaison du remaniement du code et de la migration vers une architecture de microservices a permis un fonctionnement nettement plus fluide. Cette refonte technique, associée à l'intégration transparente de nouveaux services, a catalysé une augmentation substantielle des ventes du client.
L'impact de cette transformation s'est étendu au-delà du domaine financier. Elle a conduit à une expansion significative, non seulement en termes de revenus, mais aussi de présence géographique. L'entreprise a ainsi fait un bond en avant dans sa couverture du marché, renforçant sa position en tant qu'acteur de premier plan dans le secteur. Notre partenariat avec le client se poursuit, avec d'autres intégrations à l'horizon.
30%
augmentation des ventes
2x
intégrations API 2x plus rapide
Après avoir reçu et traité votre demande, nous reviendrons vers vous pour détailler les besoins de votre projet et signer un accord de non-divulgation pour assurer la confidentialité des informations.
Après avoir examiné les exigences, nos analystes et nos développeurs élaborent une proposition de projet avec l'étendue des travaux, le nombre de membre de l'équipe, les délais et les coûts des coûts.
Nous organisons une réunion avec vous pour discuter de l'offre et parvenir à un accord.
Nous signons un contrat et commençons à travailler sur votre projet le plus rapidement possible.
2007-2024 Innowise. Tous droits réservés.
Politique de confidentialité. Politique en matière de cookies.
Innowise Sp. z o.o Ul. Rondo Ignacego Daszyńskiego, 2B-22P, 00-843 Varsovie, Pologne
En vous inscrivant, vous acceptez notre Politique de confidentialitéy compris l'utilisation de cookies et le transfert de vos informations personnelles.
Merci !
Votre message a été envoyé.
Nous traiterons votre demande et vous recontacterons dès que possible.
Merci !
Votre message a été envoyé.
Nous traiterons votre demande et vous contacterons dès que possible.