Il primo passo è stato la conversione delle chiamate API REST esistenti dell'app in chiamate API GraphQL.Passando a GraphQL, l'applicazione client deve solo sapere come effettuare una chiamata GraphQL e richiedere i dati di cui ha bisogno: non è necessario sapere da dove provengono. La standardizzazione su GraphQL per questa applicazione consentirebbe all'azienda di aggiungere nuove origini dei dati e cambiarle senza influire sull'applicazione. Le query GraphQL rimarranno invariate.
Tuttavia, in genere ciò significherebbe scrivere un server GraphQL e molti codici resolver per mappare le API ai dati. Meno codice da scrivere e mantenere c'è, meglio è. Come server GraphQL ospitato dichiarativo e basato sulla configurazione, StepZen ha semplificato la configurazione dei resolver, eliminando la necessità di gran parte del codice.
Nemanja Niciforovic, MD e Engineering Lead di Work & Co, spiega: "Con l'API GraphQL su Mavenlink siamo in grado di creare in poche settimane un'app interna che ci permette di visualizzare e pianificare la nostra gestione delle risorse in modo rapido, accurato e semplice. Le prestazioni di questa app sono fondamentali, poiché le informazioni che riunisce sono tante. Il parallelismo automatico di StepZen ci ha aiutato molto. Ci aiuta anche a essere a prova di futuro e a crescere man mano che aggiungiamo servizi back-end e creiamo nuove app sulla singola API GraphQL."
Mavenlink ha un'API REST completa per gestire l'accesso a un'ampia varietà di dati HR e di gestione delle risorse. Utilizzando la direttiva GraphQL di StepZen —@rest—, Work & Co è riuscita a ottimizzare i dati disponibili per l'app di directory dei dipendenti. Ad esempio, il team ha rinominato facilmente i campi nell'API Mavenlink in modo che corrispondessero ai nomi utilizzati nell'applicazione, eliminando il carico cognitivo per lo sviluppatore front-end e riducendo il numero di modifiche al codice necessarie nell'applicazione.
Inoltre, il team è riuscito a semplificare l'API Mavenlink utilizzando la direttiva @materializer di StepZen. Ciò ha consentito loro di definire tipi che includono dati provenienti da più chiamate API. Ad esempio, hanno aggiunto un tipo "progetti" al tipo "utente", che ha consentito allo sviluppatore dell'applicazione di recuperare i progetti attivi di un utente e, contemporaneamente, i dettagli dell'utente, come la foto del profilo e l'indirizzo e-mail.
Pagamento: l'API di Mavenlink limita il numero di record restituiti da qualsiasi singola chiamata applicando la paginazione. L'app Work & Co non è stata creata per supportare la gestione dei dati in questo modo, e rielaborarla per utilizzare la paginazione non era uno sforzo che volevano intraprendere. Utilizzando la direttiva @sequence di StepZen, il team è riuscito a parallelizzare molte chiamate API REST all'API Mavenlink e recuperare tutte le pagine di un set di risultati con una singola richiesta di query GraphQL.
Ottimizzazione delle prestazioni: un vantaggio imprevisto di questo approccio è stato l'ottimizzazione delle prestazioni. Il recupero di pagine di dimensioni inferiori con l'API REST comporta tempi di risposta più rapidi. Pertanto, 10 richieste parallele per 200 record ciascuna richiedono più di 20 richieste parallele per 100 record ciascuna. Definendo le query StepZen in modo appropriato, lo sviluppatore dell'applicazione Work & Co è stato in grado di ottimizzare le prestazioni delle query GraphQL.
Sicurezza e memorizzazione nella cache: oltre a tutti questi dettagli di implementazione specifici, Work & Co ha tratto vantaggio dall'approccio generale di StepZen alla sicurezza e alla memorizzazione nella cache. Configurazioni di sicurezza flessibili hanno consentito di definire query che utilizzano un contesto di sicurezza a livello di applicazione, insieme a quelle che utilizzano un contesto di sicurezza specifico dell'utente. Un controllo così dettagliato è molto difficile da gestire quando si utilizza direttamente un'API REST: in genere è necessario fare una scelta. La memorizzazione nella cache automatica di StepZen significa che gli utenti della loro applicazione vedono prestazioni migliorate con zero sforzi di sviluppo.