Coopi autoloos pälvis kiirelt klientide heakskiidu, pakkudes võimalust pelgalt poes käimise eest võita midagi suurt ja ihaldusväärset. Küll aga piiras ülisuur auhind potentsiaalsete võitjate hulka, mistõttu otsustas Coop tuua klientideni uue võimaluse eriilmelisi auhindu võita – Coop Loto. Coop valis keeruka ning mitmetahulise lotosüsteemi arenduspartneriks Uptime’i.
Coopi äriliseks eesmärgiks oli luua uus boonussüsteem, kus kliendid saaks ostudelt teenitud boonuspunktide osas valida boonusraha asemel lotopiletite kogumise. Seejuures pidi uus loto mikroteenus olema integreeritud nii CRMiga, kassasüsteemiga, tšekisüsteemiga, Coopi veebipoega ning veel mitmete teiste tarkvaralahendustega, et tagada süsteemi veatu toimimine, muuta lotode administreerimine võimalikult lihtsaks ning pakkuda klientidele igal hetkel täielikku ülevaadet sellest, mis on loto ja nende lotopiletitega parasjagu toimumas.
“Mõistagi on süsteemi osaks ka tugev lotomootor, mis päriselt õigel hetkel võitja välja valib. Selle loomisel pidime silmas pidama laia hulka nüansse. Liialt sügavalt sellesse paraku minna ei saa” kommenteeris Coop Loto arendust Uptime’i tiimijuht Kädi Keinast.
Mikroteenused
Lotosüsteemi iseärasusi ning varem loodut arvesse võttes ehitati uus lotopunkti mikroteenus .NET Core’i ja MS SQLi andmebaasi peale. Selle lähenemise toel oli võimalik tagada sujuv ning kiire infovahetus, mugav administreerimine ning hästi töötav APIde liidestus.
“Laias plaanis saame Coop Loto arendusest rääkida nelja suurema valdkonna abil – lotode administreerimine, lotomootor, rahakott ning liidestused,” selgitas Keinast. “Kõik need eeldasid mõneti erinevat lähenemist ning pakkusid erinevaid väljakutseid, seda nii süsteemi enda keerukuse kui ka Coopi mastaapsuse tõttu.”
Selleks, et lotosid korraldada, lõi Uptime Coopi CRMi uue lotomooduli, kust saab uusi loosimisi luua, määrata auhindu, vaadata varasemaid loose ja võitjaid ning hallata kõike muud, mida Coopi personalil võib vaja minna.
Kliendid peavad lotoprogrammiga liitumiseks oma nõusoleku andma, mida saab tänu API-liidestustele teha iseteeninduskeskkonnas veebis, kaupluse iseteeninduskassas ja tavakassas– ühtekokku on lotoga liidestatud neli erinevat kassasüsteemi ja ca 320 kauplust. Kusjuures pärast ostu sooritamist jõuab tšekile info selle kohta, kui palju boonuspunkte ning lotopileteid kliendil kogunenud on.
“Tšekile peab info jõudma millisekundite jooksul, mis tähendab, et pidime looma piisavalt väleda lahenduse, et lotomoodul ei hakkaks tšekkide genereerimist aeglasemaks muutma,” rääkis tiimijuht. “Niisamuti arendasime välja stopp-süsteemi, mille abil saab vaid ühe klikiga peatada kassades lotoga liitumise pakkumise. See tähendab, et ükskõik mis probleemi või ootamatuse tekkimisel saab uued liitumised ajutiselt pausile panna, seejuures muud süsteemi mõjutamata.”
Kuna üks ja sama info on nähtaval mitmes erinevas teenuses, tuli arenduse käigus tagada ka andmete samaaegne sünkroniseerimine ning kõikjal samade summade kuvamine. Seeläbi välditakse olukordasid, kus tšeki alaosas kuvatakse ühte numbrit, kuid iseteenindusse sisse logides midagi muud.
Virtuaalne rahakott
Kuna loto ja boonuspunktide arvestus toimub kuupõhiselt, on süsteemi osaks ka virtuaalne rahakott, mille abil kantakse kuust-kuusse boonuspunktide jääki edasi. Kui üks lotopilet maksab 50 boonuspunkti, siis on võimalik, et kuu lõpus jääb kliendil 30 punkti üle ning selle eest ta uut piletit ei saa. Küll aga ei kanta punkte maha, vaid liigutatakse need edasi järgmise kuu arvestusse.
“Lotosüsteemi ja boonuspunktide kasutamise juures tuli rinda pista veel mitmete väiksemate küsimuste lahendamisega,” ütles Keinast. “Näiteks ei saa loosis osaleda alaealised, küll aga saab nende kliendikaardi liidestada perekontoga; loosimises ei saa osaleda juriidilised isikud ega Coopi töötajad; sünnipäevadel on boonuspunktide arvestus teistsugune; ning boonuspuntide kogumisel on erinevad tasemed, mis pidevalt ajas muutuvad.”
Hoolimata süsteemi keerukusest ning erinevatest väljakutsetest läks lototeenuse live’i viimine probleemivabalt.