Lo sviluppo della Customer Data Platform per Haier A/C Italia
In questo articolo parleremo e approfondiremo un progetto reale, sviluppato da Axelerant in collaborazione e per conto di Haier A/C Italia, azienda multinazionale specializzata nella produzione e vendita di dispositivi domotici.
Lo scopo principale del progetto è quello di poter fornire un quadro chiaro al business in merito all’operato dei rivenditori per poterli successivamente ricompensare in base alle vendite; il tutto grazie ad un algoritmo che crea uno scoring per ogni agenzia venditrice basato sulle reali capacità di vendita e pubblicizzazione del marchio all’interno del mercato.
Durante una prima fase di check up iniziale tra i vertici Haier e il team di Axelerant l’approccio KISS (“Keep It Simple, Stupid”) è stato identificato come il più adeguato per la progettazione del software con l’obiettivo di mantenere uno stile di programmazione semplice e lineare, demandando le ottimizzazioni a successive fasi dello sviluppo.
Il sistema è stato realizzato in modo da reperire giornalmente i dati inerenti alla filiera di Haier A/C Italia, per poter centralizzare e successivamente analizzare gli stessi, al fine di dare una maggiore comprensione al business riguardo all’operato dei singoli rivenditori.
La customer data platform permette quindi di visualizzare i dati dinamici all’interno di una dashboard creata su misura per il cliente;
ed inoltre è stata prevista una funzionalità che rende possibile il caricamento dei documenti inerenti le campagne di marketing direttamente all’interno del software al fine di tramutarli in dati reali e concreti;
Obiettivi primari
In prima battuta abbiamo definito gli obiettivi primari assolutamente indispensabili in modo da ottenere un sistema:
- Centralizzato;
- Manutenibile;
- Performante;
- Scalabile nel tempo;
Grazie a un brainstorming preliminare abbiamo indirizzato la scelta verso un’architettura di tipo monolitico e modulare.
Per la scalabilità, invece, si è optato per l’utilizzo di macchine virtuali interconnesse tra loro tramite un PaaS sul cloud di Amazon (AWS), a livello applicativo il software è stato sviluppato con PHP come programming language grazie anche all’implementazione di Symfony come framework e Docker per la virtualizzazione;
Per quanto riguarda la gestione dei dati, abbiamo scelto di utilizzare i database RDS di Amazon connesso al servizio di monitoring AWS QuickSight, che permette al reparto marketing di Haier A/C Italia di analizzare gli elementi inseriti nella customer data platform grazie a pannelli di controllo interattivi con i quali interagire utilizzando un “linguaggio naturale”.
API con JSON Web Token
La Customer Data Platform possiede un sistema di esposizione e manipolazione dati (REST) creato per permettere l’interazione nativa con softwares terzi o altri applicativi di casa Haier.
Possiede inoltre una comoda interfaccia di sandbox concepita per le figure più tecniche che permette di interagire con i dati salvati su database, mostrando tutte le azioni possibili del software.
Per poter utilizzare e manipolare i dati REST è necessario autenticarsi tramite JSON Web Token, che definisce un modo compatto e autonomo per trasmettere in modo sicuro le informazioni tra le parti come un oggetto JSON (firmate digitalmente).
Analisi del codice e tools
Per questo progetto sono stati utilizzati diversi tools per garantire la manutenibilità del codice, la sua stabilità e le sue performance:
Psalm → tool di analisi codice statico; (https://psalm.dev)
Php Coding Standard Fixer → strumento che fornisce supporto per il mantenimento del codice seguendo gli standard PSR (https://github.com/FriendsOfPHP/PHP-CS-Fixer);
Commitlint → Utilizzato per avere una gestione adeguata e uniforme dei commit sul repository del progetto, ottenendo quindi una history dettagliata e organizzata dei vari progressi; (https://commitlint.js.org/#/)
Test
Per tutto il processo di sviluppo i test sono stati fondamentali per garantire le funzionalità del software, alcune di esse sono state sviluppate seguendo l’approccio TDD, meglio conosciuto come Test Driven Development.
Per dare un alto livello di coverage al progetto e poter garantire tutte le sue funzionalità abbiamo eseguito test di tre diverse tipologie grazie all’utilizzo di PHPunit:
- Unitari;
- Integrazione;
- Funzionali;