Il modulo è stato inviato con successo.
Ulteriori informazioni sono contenute nella vostra casella di posta elettronica.
Selezionare la lingua
Innowise ha effettuato un refactoring completo del codice della piattaforma e ha semplificato in modo significativo il processo di integrazione di nuove API.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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
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.
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.
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.
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à.
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à.
4
Ingegneri back-end
1
Ingegnere QA
1
Team Lead
1
Responsabile di progetto
1
Architetto software
1
Analista aziendale
1
Responsabile della consegna
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.
30%
aumento delle vendite
2x
aumento della velocità di integrazione delle API
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.
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.
Organizziamo un incontro con voi per discutere l'offerta e giungere a un accordo.
Firmiamo un contratto e iniziamo a lavorare sul vostro progetto il prima possibile.
© 2007-2024 Innowise. Tutti i diritti riservati.
Informativa sulla privacy. Politica sui cookie.
Innowise Sp. z o.o Ul. Rondo Ignacego Daszyńskiego, 2B-22P, 00-843 Varsavia, Polonia
Iscrivendosi si accetta il nostro Informativa sulla privacy, compreso l'uso dei cookie e il trasferimento dei vostri dati personali.
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.