Un gateway di pagamento agile



Per uno dei leader Italiani del settore dei pagamenti elettronici, abbiamo realizzato il nuovo payment gateway per l’e-commerce, sostituendo la precedente soluzione non proprietaria.

Obiettivo

Migrare oltre 1500 merchant in esercizio dalla vecchia alla nuova piattaforma, entro un anno dall’inizio del progetto.

Realizzazione

In accordo ai principi agili, si è scelto di realizzare incrementalmente e iterativamente il nuovo gateway, effettuando il primo deploy in produzione e migrando il primo merchant dopo poco più di un mese.
I successivi rilasci sono stati effettuati settimanalmente, consegnando di volta in volta nuove funzionalità che permettevano di ampliare il numero di merchant migrati dalla precente piattaforma.
Dopo circa un anno la vecchia piattaforma è stata completamente sostituita e tutti i merchant erano migrati alla nuova.

Delivery

Il processo di deploy è stato completamente automatizzato (‘one-click deploy’) per gestire rilasci su più server stateless. I rilasci avvengono su più ambienti, dallo sviluppo fino alla produzione, che condividono gli script di deploy. E’ stato implementato un sistema di continuous integration e continuos delivery.

Qualità

La robustezza della soluzione, richiesta da un servizio sensibile come quello dei pagamenti online e i bassi costi di manutenzione, sono stati raggiunti grazie ad un’elevata copertura di test (2500+ test unitari, 1000+ test di integrazione, 600+ test end-to-end) ottenuti utilizzando le pratiche del Test Driven Development, del pair programming e l’applicazione della metodologia eXtreme Programming.
Altri fattori fondamentali per il mantenimento di una qualità del codice molto elevata nonostante le numerose e sempre crescenti funzionalità erogate dal software sono un efficace processo di code review e l’ottenimento della ‘Collective Code Ownership’, nonostante un team di circa dodici persone.
Un rigoroso meccanismo di monitoring riduce al minimo l’impatto di eventuali problemi dipendenti da fattori esterni all’applicazione.