L’ambito dello sviluppo di app mobile presenta delle peculiarità e delle problematiche specifiche rispetto allo sviluppo di altri applicativi. Molto spesso, nella definizione dei modelli e delle logiche di comunicazione con i sistemi back-end, le dinamiche del mobile non vengono gestite in modo ottimale, rendendo laborioso e impegnativo il lavoro per gli sviluppatori.
In Intesys abbiamo scelto di integrare nel nostro processo di sviluppo software la Specifica OpenAPI, soluzione efficace per semplificare, velocizzare e standardizzare lo sviluppo mobile. Vediamo assieme come funziona la soluzione che abbiamo adottato.
Le sfide dell’integrazione mobile con i sistemi back-end
La quasi totalità di applicazioni che troviamo sugli store interagisce con dei sistemi di back-end che operano secondo lo standard REST e comunicano tramite request e response, il cui contenuto è in formato JSON.
Chi si occupa di definire i modelli e le logiche di comunicazione dei sistemi back-end è talvolta all’oscuro delle problematiche di integrazione con il mobile, quali:
- Smartphone con processori o capacità di rete inferiori rispetto al mondo desktop;
- Connettività in 3G/4G con qualità altalenante o assenza improvvisa di essa;
- Necessità di id univoci per accesso puntuale alle informazioni senza la possibilità di scaricare grosse quantità di dati.
Oltre a queste problematiche, è importante ricordare che per il mobile è necessario implementare non solo i metodi per accedere ai servizi back-end, ma anche le strutture per immagazzinare i dati ottenuti per le diverse piattaforme. La definizione di questi modelli può essere realizzata diversamente a seconda delle piattaforme Android o iOS e in base ai diversi membri dei team.
Tutto ciò causa differenze di comportamento dell’app più o meno evidenti, ma in ogni caso indesiderate.
A causa delle complessità nella gestione dello sviluppo mobile, in passato ci siamo ritrovati spesso ad utilizzare servizi non ottimali che ci hanno portato a ricorrere alla progettazione di API strutturate e standardizzate, che non cambiano al variare della tecnologia e dei componenti utilizzati e permettono di favorire il dialogo tra gli applicativi e i sistemi back-end, consentendo il loro riutilizzo per scopi diversi.
La progettazione strategica delle API abilita la creazione di valore nei progetti mobile grazie alla scalabilità e alla manutenibilità garantita da risorse standardizzate e riutilizzabili.
OpenAPI per la standardizzazione delle API
Per velocizzare lo sviluppo mobile e la qualità dei nostri progetti, abbiamo scelto di integrare la Specifica OpenAPI, soluzione efficace e immediata che consente di standardizzare le API generando automaticamente la documentazione di metodi, parametri e modelli.
OpenAPI è un format di descrizione di API per servizi RESTful, che opera tramite il seguente processo:
- si definiscono le API per l’accesso ai servizi tramite un linguaggio di mark-up specializzato per le comunicazioni REST, astraendo quindi da un linguaggio di programmazione specifico,
- il software OpenAPIGenerator legge tale definizione e ne genera una implementazione specifica.
Seguendo questa specifica, viene generata una libreria di comunicazione per i linguaggi tra i numerosi disponibili come Swift, Kotlin, C, C++, C#, Dart, Java, JavaScript, Objective-C e tanti altri. Queste librerie contengono inoltre i framework standard per la comunicazione di rete di iOS (Alamofire) e di Android (Retrofit) e riducono le procedure di comunicazione con il back-end a una semplice invocazione di un metodo, senza necessariamente richiedere una conoscenza approfondita dei framework o dello standard REST.
Il risultato sono delle librerie di progetti Android e iOS liberamente modificabili, generate tramite OpenAPI Generator grazie ad una serie di modelli anch’essi editabili. Personalizzando tali modelli, il nostro team mobile è riuscito ad ottenere alcune caratteristiche desiderate, tra cui:
- per quanto riguarda Android, sono stati creati dei template specifici in modo che venissero utilizzate Coroutines (un sistema per trattare in maniera asincrona delle invocazioni a metodi asincroni) al posto di ReactiveX;
- relativamente a iOS, sono stati creati dei template specifici tali da consentire l’inserimento e l’utilizzo di dati fittizi per simulare le risposte del sistema di back-end anche se lo sviluppo di questo non è ancora stato completato.
OpenAPI nel caso Dolomiti SuperSki
L’efficacia di questo approccio è confermata dai nostri più recenti progetti mobile, in particolare quello realizzato per l’App di Dolomiti SuperSki (MyDolomiti), realizzata secondo la seguente procedura:
- Definizione delle API da parte del team mobile e back-end,
- Condivisione e versionamento delle API tramite un sistema di merge review su GitLab per assicurarsi che su tutte le piattaforme non vi siano cambiamenti che possano causare comportamenti non attesi o indesiderati,
- Dopo l’approvazione del merge review, viene avviato il generatore che implementa una libreria iOS e una libreria Android. A questo punto le due piattaforme hanno i metodi di comunicazione e i modelli allineati, evitando comportamenti difformi o disallineamento tra piattaforme.
L’esperienza ha mostrato la capacità di OpenAPI di portare ottimi benefici, rendendolo uno strumento efficace e indispensabile nei nostri progetti mobile per ottenere una maggiore standardizzazione dello sviluppo delle API e per l’aumento della qualità del software.