Lasciate i vostri contatti, vi invieremo la nostra panoramica via email
Acconsento al trattamento dei miei dati personali per l'invio di materiale di marketing personalizzato in conformità con la normativa vigente. Informativa sulla privacy. Confermando l'invio, l'utente accetta di ricevere materiale di marketing
Grazie!

Il modulo è stato inviato con successo.
Ulteriori informazioni sono contenute nella vostra casella di posta elettronica.

Innowise è una società internazionale di sviluppo software a ciclo completo fondata nel 2007. Siamo un team di oltre 1800+ professionisti IT che sviluppano software per altri professionisti in tutto il mondo.
Chi siamo
Innowise è una società internazionale di sviluppo software a ciclo completo fondata nel 2007. Siamo un team di oltre 1600+ professionisti IT che sviluppano software per altri professionisti in tutto il mondo.

Miglioramento dell'applicazione web GDS: aumento di 2 volte della velocità di integrazione API

Innowise ha effettuato un refactoring completo del codice della piattaforma e ha semplificato in modo significativo il processo di integrazione di nuove API. 

Cliente

Industria

Viaggi

Regione

UE

Cliente da

2023

Il nostro cliente, un'importante azienda del settore viaggi, gestisce un sistema di distribuzione globale (GDS) per l'emissione di biglietti per traghetti e altri servizi di viaggio. Questa applicazione web è un unico punto di contatto per la gestione di varie prenotazioni di traghetti, tra cui viaggi a lunga e breve distanza, tipi di posti multipli e persino complessi itinerari multi-hop.

Le informazioni dettagliate sul cliente non possono essere divulgate in base ai termini NDA.

Sfida

Superare le limitazioni del mercato e le lacune della documentazione

Questo cliente si sentiva limitato dalle sue attuali dimensioni di mercato e voleva espandersi ulteriormente. Per raggiungere questa espansione, ha voluto creare integrazioni API con le agenzie di viaggio. 

Inoltre, l'assenza di una documentazione strutturata sull'architettura del software era un punto dolente significativo. Questa lacuna ha portato a diverse sfide, come l'aggiornamento dei membri del team appena assunti, il mantenimento di una comprensione comune del sistema tra i vari stakeholder e l'implementazione senza problemi di nuove funzionalità del prodotto. 

Di conseguenza, il cliente si è rivolto a noi per le integrazioni API e per la creazione di un'architettura di documentazione software completa.

Soluzione

Scalare l'efficienza delle applicazioni web e perfezionare le tecniche di integrazione delle API

Innowise ha fornito la modernizzazione dell'applicazione web e ha ottimizzato Integrazioni API con le agenzie di viaggio per migliorare l'esperienza dei traghetti in Europa.

Creare una documentazione sull'architettura del software

All'inizio abbiamo condotto colloqui approfonditi con il team di sviluppo del cliente e con le parti interessate. Questo approccio ci ha permesso di cogliere l'essenza delle loro esigenze. 

Con questa ricchezza di informazioni, abbiamo progettato una struttura di documentazione intuitiva e comprensibile. La documentazione copriva tutto, dalle panoramiche di alto livello del sistema ai dettagli del codice. Abbiamo incorporato diagrammi, diagrammi di flusso ed elementi interattivi per renderla informativa e coinvolgente.

Ma non si trattava solo di creare un documento statico. Secondo la nostra esperienza, la migliore documentazione è quella che vive, respira e si evolve con il sistema che descrive. Abbiamo quindi implementato un processo di documentazione dinamica, da aggiornare continuamente in base alla crescita e ai cambiamenti del sistema. Questo approccio al documento vivente ha garantito che la documentazione fosse sempre aggiornata.

Inoltre, ci siamo concentrati sul rendere la documentazione accessibile e comprensibile a tutte le parti coinvolte. Ciò significava evitare il gergo, usare un linguaggio chiaro e conciso e garantire che gli stakeholder tecnici e non tecnici potessero trovarvi valore.

In sostanza, stabilendo questa architettura di documentazione software completa, non ci siamo limitati a gettare le basi per il progetto in corso, ma abbiamo fornito al cliente uno strumento che avrebbe aiutato nello sviluppo futuro, nell'inserimento di nuovi membri del team e nel facilitare una comunicazione chiara tra tutte le parti coinvolte. È stata la pietra angolare su cui sono stati costruiti tutti gli sviluppi successivi.

Rifattorizzazione del codice e migrazione a microservizi

Quando ci siamo addentrati nel sistema esistente del cliente, abbiamo trovato una versione deprecata di Java con duplicazioni di codice e pratiche obsolete. L'architettura iniziale, un'applicazione monolitica, era servita allo scopo nelle prime fasi. Tuttavia, con la crescita della piattaforma, questo approccio ha mostrato i suoi limiti. La scalabilità è diventata ardua e la base di codice si è trasformata in un labirinto confuso, sempre più difficile da navigare e aggiornare senza introdurre nuovi bug.

Sulla base della nostra analisi, abbiamo stabilito che era necessario passare a un'architettura a microservizi. I microservizi offrono una soluzione ai problemi di scalabilità e agilità del sistema monolitico. Ogni microservizio di questa architettura opera in modo indipendente, il che significa che le modifiche apportate a un servizio non hanno un impatto diretto sugli altri. Questa indipendenza è fondamentale per un sistema come quello del nostro cliente, in cui aggiornamenti e integrazioni frequenti sono lo standard.

La migrazione a un'architettura a microservizi non è stata un processo che si è svolto in una sola notte. Abbiamo invece adottato un approccio incrementale, smantellando con cura la struttura monolitica e riassemblandola in un'architettura più dinamica, basata sui microservizi. Questo metodo ci ha permesso di mantenere la funzionalità del sistema durante tutta la transizione, evitando tempi di inattività significativi che avrebbero potuto influire negativamente sulle operazioni del nostro cliente.

Abbiamo estratto con cura ogni servizio, lo abbiamo perfezionato e distribuito in modo indipendente. I nostri sviluppatori hanno separato servizi come la prenotazione dei biglietti e la gestione degli itinerari in unità distinte. Questa separazione ha permesso di aggiornare il sistema di gestione degli itinerari, ad esempio, senza rischiare conseguenze indesiderate nel sistema di prenotazione.

Per questa trasformazione abbiamo utilizzato Spring Boot e Spring Cloud. Spring Boot ha facilitato l'impostazione e la configurazione dei microservizi, accelerando lo sviluppo. Spring Cloud ha offerto strumenti preziosi per i sistemi distribuiti, come la gestione della configurazione e la scoperta dei servizi.

Abbiamo anche integrato Kafka come message broker. La sua capacità di gestire grandi volumi di dati e di garantire una comunicazione affidabile tra i servizi era fondamentale, soprattutto in considerazione dell'elevato flusso di dati della nuova architettura.

Infine, abbiamo implementato i nuovi microservizi sull'ultima versione di Java. Questo aggiornamento ha contribuito a migliorare le prestazioni e la sicurezza, costituendo una base solida e moderna per l'intera architettura.

Elaborazione dello sviluppo di un nuovo modulo di elaborazione

Nel perfezionare e migliorare il sistema del nostro cliente, abbiamo individuato la necessità di un modo più efficiente per gestire le nuove integrazioni. Ciò ha portato allo sviluppo di un modulo di elaborazione specializzato, un'aggiunta fondamentale al sistema che ha portato a miglioramenti sostanziali nel processo di integrazione.

Affrontare le sfide della ridondanza

Una delle sfide principali che abbiamo dovuto affrontare è stata la natura ripetitiva del processo di scrittura del codice per ogni nuova integrazione. Prima dello sviluppo di questo modulo di elaborazione, ogni nuova integrazione con un altro agenzia o servizio di viaggio ha richiesto una quantità significativa di codice scritto da zero.

Progettazione del modulo di elaborazione

Il modulo di elaborazione che abbiamo sviluppato è stato progettato per fungere da interfaccia versatile tra il sistema del nostro cliente e le API esterne. Questo modulo consiste in modelli e strumenti precostituiti e personalizzabili che riducono significativamente la necessità di scrivere nuovo codice per ogni integrazione. Funziona astraendo le funzionalità e i processi standard tipicamente coinvolti nell'integrazione con vari servizi di viaggio, come i sistemi di prenotazione dei biglietti o i database dei clienti.

Il modulo include diverse caratteristiche chiave:

  • Gestori di comunicazione API: sono progettati per gestire le richieste API in entrata e in uscita delle agenzie di viaggio. Gestiscono la complessità dei diversi protocolli API e dei formati di dati, facilitando la connessione con i sistemi esterni.
  • Strumenti di mappatura e trasformazione dei dati: Spesso le strutture dei dati variano da un sistema all'altro. Il nostro modulo include strumenti che mappano e trasformano automaticamente i dati da e verso il formato richiesto dal sistema del cliente e dai fornitori di servizi esterni. Questo facilita lo scambio e l'integrazione dei dati.
  • Interfaccia di configurazione e personalizzazione: Riconoscendo l'esigenza di flessibilità, il modulo è dotato di un'interfaccia che consente agli sviluppatori di configurare e personalizzare facilmente le integrazioni senza addentrarsi nel codice principale. Ciò consente un rapido adattamento ai requisiti specifici di ogni nuova agenzia o servizio di viaggio.

Integrazioni API con agenzie di viaggio

In seguito, abbiamo integrato il GDS del nostro cliente con 4 agenzie di viaggio che utilizzavano meccanismi di scambio REST e SOAP. Queste integrazioni sono state fondamentali per migliorare i processi di prenotazione, modifica e cancellazione dei biglietti per i servizi di traghetto. La nostra sfida è stata quella di creare un framework di integrazione in grado di gestire una vasta gamma di prenotazioni di traghetti, tra cui diverse rotte, configurazioni di posti e servizi supplementari.

L'implementazione di queste integrazioni ha comportato diverse fasi critiche. Inizialmente, abbiamo passato al setaccio le API delle agenzie per capire le loro strutture di dati e le loro richieste funzionali. Sfruttando il nostro modulo di elaborazione appena sviluppato, abbiamo creato connettori personalizzati per ogni agenzia. Questi connettori sono stati adattati per gestire i formati di dati e i flussi di lavoro operativi specifici di ciascuna agenzia, garantendo un'integrazione fluida dei dati con il GDS del nostro cliente.

Il processo ha incluso l'implementazione di sofisticati strumenti di mappatura e trasformazione dei dati all'interno del nostro modulo di elaborazione. Questa tecnologia ha svolto un ruolo cruciale nel garantire l'integrità e la coerenza dei dati. Il nostro team ha intrapreso test approfonditi per convalidare l'efficacia e l'affidabilità di queste integrazioni. Abbiamo simulato vari scenari di prenotazione per testare le integrazioni in diverse condizioni. Dopo l'esito positivo dei test, abbiamo implementato le integrazioni nell'ambiente live, impostando meccanismi di monitoraggio continuo per controllarne le prestazioni e risolvere rapidamente eventuali problemi.

Tecnologie

Back end

Java 17, Spring, Spring Boot, Spring Cloud, Hibernate

API

REST, SOAP

Memorizzazione dei dati

PostgreSQL, Memcached

Intermediari di messaggi

Kafka

DevOps

Pipeline GitLab CI/CD

Servizi

Gitlab, Jira, Confluence

Processo

Scoperta e analisi

Abbiamo creato un documento Vision & Scope per allineare gli obiettivi del progetto alle aspettative del cliente nella fase iniziale. Questo documento ha posto le basi del progetto comprendendo gli obiettivi del cliente e le sfide del sistema.

Sviluppo della documentazione dell'architettura software

Abbiamo quindi sviluppato una documentazione dinamica e facilmente comprensibile, progettata per evolversi in sincronia con il progetto, ottimizzando così la comunicazione tra i team e rendendo più efficiente il processo di onboarding.

Progettazione e sviluppo

Qui ci siamo concentrati sull'implementazione dell'architettura a microservizi e sulla realizzazione del modulo di elaborazione. Questa fase ha messo in luce le nostre competenze tecniche, dando vita a un'architettura di sistema raffinata e a un modulo di elaborazione completamente funzionale.

Integrazione e test

Sfruttando il modulo di elaborazione, abbiamo integrato senza problemi le API delle agenzie di viaggio. Test rigorosi hanno garantito l'affidabilità del sistema e il miglioramento delle funzionalità.

Comunicazione e tracciamento dei compiti

Microsoft Teams è stato il nostro principale strumento di comunicazione, per ottimizzare le discussioni, aggiornare le condivisioni e mantenere un archivio centrale di informazioni. Abbiamo utilizzato Jira per mantenere una gestione organizzata ed efficiente del flusso di lavoro per il tracciamento delle attività.

Team

4

Ingegneri back-end

1

Ingegnere QA

1

Team Lead

1

Responsabile di progetto

1

Architetto software

1

Analista aziendale

1

Responsabile della consegna

Risultati

Ottenere risultati trasformativi con un'impennata delle vendite e una maggiore presenza sul mercato

Dopo il successo dell'implementazione, l'applicazione web del cliente ha registrato notevoli miglioramenti delle prestazioni. La combinazione tra il refactoring del codice e la migrazione a un'architettura a microservizi ha portato a un funzionamento notevolmente più fluido. Questa revisione tecnica, unita alla perfetta integrazione di nuovi servizi, ha catalizzato un aumento sostanziale delle vendite del cliente.

L'impatto di questa trasformazione si è esteso oltre l'ambito finanziario. Ha portato a un'espansione significativa, non solo in termini di fatturato ma anche di presenza geografica. Ciò ha segnato un salto epocale nella copertura del mercato dell'azienda, rafforzando la sua posizione di attore di primo piano nel settore. La nostra collaborazione con il cliente è in corso, con ulteriori integrazioni all'orizzonte.

Durata del progetto
  • Marzo 2023 - In corso

30%

aumento delle vendite

2x

aumento della velocità di integrazione delle API

Contattateci!

Prenota una chiamata oppure compilate il modulo sottostante e sarete ricontattati una volta elaborata la vostra richiesta.

    Si prega di includere i dettagli del progetto, la durata, lo stack tecnologico, i professionisti IT necessari e altre informazioni pertinenti
    Registra un messaggio vocale sul tuo
    progetto per aiutarci a capirlo meglio
    Allega ulteriori documenti se necessario
    Caricare il file

    È possibile allegare fino a 1 file di 2 MB complessivi. File validi: pdf, jpg, jpeg, png

    Vi informiamo che cliccando sul pulsante Invia, Innowise tratterà i vostri dati personali in conformità con la nostra Informativa sulla privacy allo scopo di fornirvi informazioni adeguate.

    Cosa succede dopo?

    1

    Dopo aver ricevuto ed elaborato la vostra richiesta, vi ricontatteremo a breve per illustrare le esigenze del progetto e firmare un NDA per garantire la riservatezza delle informazioni.

    2

    Dopo aver esaminato i requisiti, i nostri analisti e sviluppatori elaborano una proposta di progetto con l'ambito di lavoro, le dimensioni del team, i tempi e i costi stimati.

    3

    Organizziamo un incontro con voi per discutere l'offerta e giungere a un accordo.

    4

    Firmiamo un contratto e iniziamo a lavorare sul vostro progetto il prima possibile.

    Спасибо!

    Cобщение отправлено.
    Мы обработаем ваш запрос и свяжемся с вами в кратчайшие сроки.

    Grazie!

    Il tuo messaggio è stato inviato.
    Elaboreremo la vostra richiesta e vi ricontatteremo al più presto.

    Grazie!

    Il tuo messaggio è stato inviato. 

    Elaboreremo la vostra richiesta e vi ricontatteremo al più presto.

    freccia