Projekti kulg ja tehniline lahendus
Tarkvaraarendust alustasime puhtalt lehelt ja agiilsete põhimõtetega. Kliendil oli kogu arenduse vältel võimalik läbi keskkondade arendusprotsessi jälgida ning anda kohest tagasisidet. Väga palju tulid kasuks iganädalased koosolekud, mis aitasid meil arvestada kliendi muutunud soovide ja tagasisidega.
Projekti esimeseks sammuks oli esmaste kasutuslugude backlog’i kokkupanemine. Kui kasutuslood olid koostatud hindasime need ja prioriseerisime kliendiga. Prioriseerimisel üritasime tuvastada olulisimad ja läbivaimad kasutuslood, mis oleksid arendusprotsessis esikohal. Taddy rakenduse kõige kriitilisemaks ja läbivamaks teemaks sai pindade otsing, millest saab rakenduse kasutajate peamine töövahend kampaaniate läbiviimiseks. Seega keskendusime arenduses pindade otsingule ja modelleerisime lahenduse eelkõige sellest lähtuvalt. Meil õnnestus leida väga elegantne ja skaleeruv mudel, mis võimaldas hallata üsna keerulist loogikat pindade ümber (ajas muutuvad hinnad, soodustused, broneeringud jne), sealhulgas teostada ülimalt kiireid otsinguid nende andmete peal. Järgmiste kasutuslugude arendamine toetus juba esimeses kasutusloos paika pandud mudelile ja laiendas seda.
Rakendusest saab eelkõige tööriist, mille eesmärk on pakkuda kasutajale parimat võimalikku kogemust oma kampaaniate koostamiseks, mistõttu otsustasime ehitada selle niiöelda ühe lehe rakendusena (SPA). Lõpptulemus on väga hästi reageeriv, sujuv ning mänguline kasutajakogemus, mida traditsioonilise veebirakendusena ei ole võimalik saavutada.
Tehnilise poole peal kaalusime erinevaid tehnoloogiaid ja raamistikke. Kliendi poolse osa otsustasime arendada VueJs raamistikule. Tegemist oli eelnevalt põhjalikult kaalutud ja õnnestunud valikuga, kuna VueJs võimaldas meil väga kiiresti ja lihtsalt saavutada püstitatud eesmärgid. Kliendi poolse koodi arendasime TypeScript’iga, serveri osa aga arendasime C# keeles multiplatvormi .NET Core raamistikule. Antud raamistiku eelisteks on selle kiirus, turvalisus ja modernsus. Võttes arvesse rakenduse omapära ja vajadusi, oli andmebaasi valik määrava tähtsusega. Valikuteks olid PostgreSQL, MS SQL Server ja Elasticsearch. Otsustasime, et kasutame vabavaralist, töökindlat, kaasaegset ja turvalist PostgreSQL andmebaasi. See katab kõik Taddy rakenduse andmete haldamise vajadused. Otsingu osa plaanisime lahendada võimsa otsinguteenuse Elasticsearch’iga. Juba esimeses etapis selgus, et otsingu spetsiifika ja meie poolt välja töötatud efektiivse andmemudeli tõttu me Elasticsearch’i ei vajagi ning saime rakenduse poolelt ühe sõltuvuse vähemaks. Taddy platvormi arendasime pilverakenduseks, mis on majutatud kõrgkäideldava Azure App Service teenusena ja andmebaasina on kasutusel täielikult hallatud Azure PostgreSQL serveri teenus. Kõiki binaarseid andmeid hoitakse Azure Blob Storage teenuses. Arendust toetas suuresti ka Dockeri platvorm, mis tegi sõltuvuste haldamise väga lihtsaks. Isegi rakenduse pidev integratsiooni build toimub läbi Docker Compose konfiguratsiooni, mis oli seadistatud täpselt vajalike rakenduse sõltuvustega.
Arendusprotsessis jälgisime TDD ja DDD põhimõtteid, mis võimaldas meil edasi liikuda kiiresti ja julgelt, samal ajal tagades ka arenduse jätkusuutlikkuse. Tarneid tegime võimalikult tihti, kliendini jõudis esimene katsutav lahendus juba pärast esimest nädalat. See oli väga kasulik, sest võimaldas kliendil anda väärtuslikku sisendit ka järgnevateks arendusteks.