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.

Progetto
Cloud Native Journey di una piattaforma di crowd-testing
Servizi
Application Modernization, Cloud Native Journey, AWS platform, DevOps & Automation
Rilascio
In carico da Novembre 2020

La Sfida

Il Cloud Native Journey è una trasformazione che interessa l’intero ciclo di produzione del software. L’azienda e il team che decidono di intraprendere il viaggio sanno (o scoprono ben presto) che dei cambiamenti rilevanti sono in arrivo: questa è sicuramente la sfida più grande e per iniziarla al meglio è necessaria una conoscenza approfondita dell’ambiente e dei processi esistenti.Per questo il nostro viaggio inizia con una raffica di domande fatte al team di sviluppo, a cui chiediamo di descrivere l’architettura e il funzionamento dei suoi componenti, i flussi di dati e gli strumenti di sviluppo.

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.
La sfida è arrivare a validare sul campo la fattibilità, i vantaggi e gli eventuali limiti di questo tipo di soluzione. Un ulteriore elemento sfidante è costituito dalle caratteristiche specifiche dell’applicazione di AppQuality, basata su un CMS, un tipo di applicazione generalmente “monolitica” che richiede particolari attenzioni per la trasformazione cloud native. Nel corso di questa fase sono emerse diverse necessità legate alle caratteristiche specifiche della piattaforma, che hanno fornito l’occasione di esplorare soluzioni innovative per affrontare la gestione di log distribuiti, la persistenza su file system, l’autenticazione e autorizzazione degli utenti, il networking con servizi all’interno e all’esterno di un cluster.

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.
cs-appquality

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.

    I nostri ultimi Case Study

    Centro Medico Santagostino

    Cloud Native Services, AWS platform, DevOps & Automation

    Una Internal Developer Platform per la digitalizzazione dell’Healthcare full-cloud

    Calciomercato.com

    React Native, Firebase, Google AdMob

    La modernizzazione dell’app storica include processi di monetizzazione

    Zambon Siti Prodotto

    Drupal, Google Cloud Platform, Alibaba Cloud

    Come i siti prodotto Zambon sono diventati cloud-native.