Blogi

Millainen on MyStockmann-kanta-asiakassovelluksen tekninen toteutus? Tekijät kertovat

Kirjoittanut Digia Oyj | 22.10.2019 21:00

Digian sovelluskehittäjät Eric Nishio, Kalle Jokinen ja Christoffer Lindqvist kertovat, kuinka MyStockmann-sovelluksen front-end, back-end ja infra päädyttiin toteuttamaan.

Eric Nishio: React Native -front-end iOS:lle ja Androidille

MyStockmann-sovelluksen front-endissä päädyimme käyttämään jo ennestään hyvinkin tutuksi tullutta React Native -alustaa, jonka avulla saimme luotua identtiset sovellusversiot sekä iOS- että Android-laitteille yhdellä ja samalla TypeScript-lähdekoodilla.

Sovelluksen paketointiin valitsimme Expon, joka on valmis React Native -kehitysympäristö, johon on kerätty usein käytettyjä natiivikomponentteja sekä kehitystä helpottavia työkaluja.

Suurin hyöty Expossa on se, että React Native ja natiivimodulit ovat Expo-tiimin toimesta jo valmiiksi konfiguroitu ja testattu. Se keventää huomattavasti meidän kehittäjien työtaakkaa, koska meidän ei itse tarvitse säätää ja korjata yhteensopivuuksia eri ohjelmistopäivitysten yhteydessä, joihin perinteisissä React Native -sovelluksissa on ollut usein tapana kulua jopa useita päiviä jokaista päivitystä kohden. Expon tuoman yksinkertaisuuden ansiosta myös kirjoittamamme lähdekoodi on pysynyt hyvin puhtaana ja applikaatiosentrisenä.

Kalle Jokinen: Back-end

TypeScriptiä käytetään myös backendin puolella koodin luettavuuden ja tyypityksen parantamiseksi.

Itse palvelun rajapinnat on jaettu loogisiin kokonaisuuksiin ja kokonaisuudet toteutettu omina mikropalveluinaan. Jokaisella mikropalvelulla on yksi tai useampi integraatio asiakkaan järjestelmiin ja mahdollisesti vielä varakanava mahdollisia virhetilanteita varten.

Backendiä ei alun perin rakennettu mikropalveluiksi, mutta siirtymä siihen oli perusteltavissa Stockmannin toiveilla ja jatkosuunnitelmilla. Teknologiavalinnat ovat hyvin tutut ja varmatoimiset: Express + TypeScript + SQL + Jest.

Christoffer Lindqvist: Infra (Devops)

MyStockmann-sovelluksen backendin käyttämä infrastruktuuri pyöritetään Amazon Web Services -pilvipalvelussa. Mikropalveluiden rajapinnat ajetaan AWS Fargate -palvelulla, joka mahdollistaa Docker-"konttien" hallitsemisen ilman alla olevien virtuaalikoneiden konfigurointia ja helpottaa rajapintojen automaattista skaalausta ilman, että tarvitsee huolehtia koneklusterien toiminnasta.

Mikropalvelut on suunniteltu olemaan riippumattomia toisistaan sekä applikaatio- että infrastruktuuritasolla ja myös tietokantaratkaisu seuraa tätä mallia palvelukohtaisilla tietokannoilla AWS RDS-palvelussa. Itsenäisesti skaalautuvat mikropalvelut mahdollistavat monipuolisemman palvelunhallinnan sekä edesauttavat kehitystyötä ja ylläpitoa.

Mikropalveluiden päivittäminen on myös automatisoitu AWS CodePipeline-palvelulla, joka tarjoaa jatkuvan integraation, julkaisun ja toimituksen. Uudet versiot palveluista luodaan, testataan ja julkaistaan automaattisesti versiohallintaan kytkettyjen julkaisuputkien avulla.

Infrastruktuuri on luotu ja ylläpidetään Terraform-työkalulla, joka auttaa pitämään ympäristökohtaiset konfiguraatiot identtisinä, nopeuttaa muutoksien pävittämistä ympäristöihin sekä mahdollistaa infrastruktuurin versiohallinnan.

Lue myös:

Pelillinen premium-kokemus mobiilissa – ja ennätysaikataulussa? Projektipäällikkö kertoo MyStockmann-sovelluksen teosta

Kuinka MyStockmann-mobiilisovellus syntyi osana valtavaa kanta-asiakasohjelman uudistusta?