AppQuality
Il Cloud Native Journey di una piattaforma online ha inizio!
L’obiettivo
AppQuality è la soluzione che aiuta le aziende a creare prodotti e servizi user-centrici coinvolgendo la sua community (il Crowd) di persone reali in tutte le fasi del processo, dal design allo sviluppo fino al testing. Il servizio offerto ha l’obiettivo di portare sul mercato prodotti e servizi con un’esperienza d’uso memorabile per gli utenti reali.
La piattaforma proprietaria che ospita e alimenta la community e permette di organizzare l’esecuzione dei test e la raccolta del feedback è evidentemente un elemento mission-critical per l’attività di AppQuality: la sua architettura e l’infrastruttura che ne permette il funzionamento devono garantire il massimo livello di affidabilità e prestazioni ottimali.
Nel 2020, AppQuality ha scelto SparkFabrik per avviare il percorso della trasformazione Cloud Native della piattaforma, tramite l’acquisizione delle conoscenze e delle best practice pertinenti alle tecnologie del panorama Cloud Native.
La Sfida
La prima esigenza emersa è stata quella di uniformare l’ambiente di sviluppo in modo che fosse utilizzabile da membri del team che lavorano su piattaforme eterogenee, sia come sistemi operativi che come IDE. Questo è stato il focus della prima fase del Cloud Native Journey, orientata a completare la containerizzazione dell’applicazione principale e a rendere l’implementazione basata sui container compatibile con le piattaforme utilizzate dal team di sviluppo. Al termine di questa fase l’ambiente basato sui container è disponibile per essere utilizzato per le attività di sviluppo e debug su diversi OS (Linux, Windows, MacOS) con diversi editor/IDE (VSCode, PhpStorm).
Terminata la prima fase, l’obiettivo si è spostato sulla realizzazione di un Proof of Concept di un vero e proprio deployment dell’applicazione basato sull’orchestrazione dei container. Questa lavorazione è stata anticipata dall’introduzione ai concetti e alle pratiche delle configurazioni dichiarative, mostrate all’opera sia per quanto riguarda l’infrastruttura, sia per l’architettura dell’applicazione.
Nell’ultima fase infine, gli elementi visti nei segmenti precedenti sono stati inseriti nei processi di sviluppo e di gestione del codice sorgente, arricchiti dalle best practice di Continuous Integration e Continuous Delivery, per aumentare la qualità e l’affidabilità dei rilasci di software, che per AppQuality avviene a ritmi serrati, al termine di ogni sprint. In questa fase, ai task già familiari di Continuous Integration (automazione dei test e dei controlli QA), si sono aggiunte le interazioni con i componenti di un’architettura cloud native, ad esempio il container registry, e sono state proposte le diverse opzioni di delivery per gli artefatti delle pipeline, con differenti livelli di automazione possibili.

Il Metodo
Come accennato sopra, il Cloud Native Journey inizia cercando di conoscere in modo approfondito i processi e gli strumenti utilizzati dal team di sviluppo. Il risultato di questa indagine, che continua anche durante il viaggio, quando emerge la presenza di conoscenze implicite non condivise originariamente, serve poi a modellare le tappe del viaggio, a stabilire gli obiettivi concreti di ogni fase e come raggiungerli in pratica. Questo perché il Cloud Native Journey non è semplicemente un insieme di conoscenze trasferite in modo “frontale”, ma un insieme di oggetti digitali finiti (nel senso di “done”), principalmente in forma di codice su cui il team ha già iniziato a lavorare durante il viaggio e potrà farlo anche in futuro.
Terminata la fase di assessment iniziale, si è discussa col team la modalità di interazione che fosse più funzionale rispetto a non interrompere e a non impattare sulle tempistiche delle altre attività di sviluppo in corso.
- Sono stati identificati due slot settimanali disponibili e non sovrapposti a impegni ricorrenti (sprint plan, rilasci, ecc.) e si è deciso di incontrarsi ogni settimana, per aggiornarsi sull’avanzamento delle attività
- Abbiamo ricevuto gli accessi ai repository di codice e al sistema di tracking per i bug e i task di sviluppo
- Abbiamo aperto un canale condiviso su Slack utilizzato come strumento organizzativo e per farsi reciprocamente domande durante la settimana
All’inizio di ogni fase sono stati condivisi gli obiettivi e i deliverable della fase stessa, in un momento di co-progettazione che ha confermato o approfondito ulteriormente i risultati dell’assessment iniziale e ha esplicitato le necessità pratiche del team rispetto alla trasformazione Cloud Native.
Contattaci per il tuo progetto
Per avere maggiori informazioni su di noi e su quello che possiamo fare per te lasciaci un messaggio. Ti contatteremo al più presto.
Mandaci un messaggio!
Leggi la nostra Privacy Policy
Deliverable
Fase 1 (containerizzazione)
- Codice Dockerfile per la creazione di immagini container e per la loro orchestrazione negli ambienti locali (docker compose)
- All’interno dello stesso repository del codice è stata inserita della documentazione per il set up degli ambienti di sviluppo sulle varie piattaforme utilizzate nel team
- Diagramma dell’architettura dell’ecosistema Crowd, rivisto a più riprese durante il percorso
Fase 2 (deployment basato su orchestrazione di container)
- Codice della configurazione dichiarativa dell’infrastruttura attuale
- Materiali utilizzati per breve introduzione all’architettura di Kubernetes e all’utilizzo di Infrasctructure as Code
- Codice della configurazione dichiarativa per un cluster Kubernetes su cloud AWS (EKS)
- Configurazione dichiarativa dell’applicazione installata nel cluster creato
- Helm chart per l’installazione di componenti pacchettizzati della soluzione
- Diagramma del POC che ha implementato la piattaforma Crowd e i servizi accessori in un cluster Kubernetes
- Esempio di applicazione in grado di interagire con la API di Kubernetes grazie a una client library
- Diagramma dell’architettura dell’ecosistema Crowd, rivisto a più riprese durante il percorso
Fase 3 (CI/CD)
- Codice delle pipeline di Continuous Integration e Continuous Delivery per un componente della piattaforma Crowd
- Diagramma esemplificativo di un approccio alla gestione delle pipeline basato su branching e tagging

Matteo Toto
CTO,
AppQuality
Chi nella sua vita ha sviluppato tecnologia sa quanto sia difficile concentrarsi sul risolvere problematiche di business o prodotto mantenendo eccellenza tecnologica. Questo comporta una capacità di studio continua ed instancabile, sappiamo però che non sempre riusciamo ad essere così. La Cloud Native Journey con SparkFabrik è stata un’occasione preziosissima di confronto e crescita. I membri del team sono stati pazienti e disponibili rispetto alle nostre necessità ed imprevisti, il team ha potuto accrescere le proprie competenze sacrificando il minimo rispetto agli obiettivi importanti che non potevamo rimandare, garantendo business continuity.