Mikropalveluarkkitehtuurin suunnittelu ja toteutus kuvantunnistusrajapinnalle
Viertola, Ville-Veikko (2022)
Viertola, Ville-Veikko
2022
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2022052010809
https://urn.fi/URN:NBN:fi:amk-2022052010809
Tiivistelmä
Opinnäytetyön toimeksiantajana toimi konsultaation ja ohjelmistotuotannon yritys KovaKoodarit Oy. Toimeksiantona oli suunnitella ja toteuttaa verkkopalvelu asiakasyrityksen kuvantunnistusrajapinnan ja statistiikan työkaluksi. Opinnäytetyön tavoitteena oli toteuttaa nykyaikaisia menetelmiä ja teknologioita hyödyntävä verkkopalvelu, joka vastasi asiakkaan palvelulle asettamiin vaatimuksiin.
Palvelun suunnittelu aloitettiin tarkastelemalla palvelulle asetettuja vaatimuksia, joiden perustella arkkitehtuurimalli valittiin. Palvelu päädyttiin toteuttamaan mikropalveluarkkitehtuurin mukaisesti hyödyntäen Docker-konttiteknologiaa. Mikropalveluiden rajapinnat toteutettiin REST-rajapintatyylin mukaisesti Node.js-ajoympäristössä hyödyntäen Express.js-sovelluskehystä. Mikropalveluiden välityspalvelin toteutettiin Nginx-ohjelmistolla, jonka avulla mikropalvelut yhdistettiin käyttöliittymän web-sovellukseen. Verkkopalvelun tietokantoina käytettiin MongoDB- ja Redis-tietokantoja. MongoDBtä hyödynnettiin kuvantunnistusrajapinnasta saatavien tietojen tallennukseen ja Redistä hyödynnettiin käyttäjien sessiohallinnassa.
Palvelun käyttöliittymä toteutettiin SPA-sovelluksena, jossa käytettiin Vue.js-sovelluskehystä ja BootstrapVue-tyylikirjastoa. Vue-ekosysteemiä laajennettiin Vuex-tilahallintakirjastolla sekä Vue Router -lisäosalla, joka mahdollisti SPA-tyylisen Vue-sovelluskehityksen.
Palvelun tuotantoalusta toteutettiin GitLabiin, jonka tarjoamilla jatkuvan integraation toiminnallisuuksilla mikropalveluiden lähdekoodeista luotiin Docker-levykuvat ja tallennettiin konttirekisteriin. Palvelun julkaisussa hyödynnettiin Docker Composea jonka avulla konfiguraation mukaisten mikropalveluiden Docker-levykuvat noudettiin Gitlab-konttirekisteristä ja käynnistettiin palvelinympäristössä.
Opinnäytetyön tuloksena saatiin vaatimusten mukainen mikropalveluarkkitehtuuria mukaileva verkkopalvelu, jonka käyttöliittymällä ratkaistiin asiakkaan tarpeet ja tuotettiin lisäarvoa. Lisäksi toteutukseen valittu arkkitehtuuri mahdollistaa asiakkaalle tarpeen vaatiessa skaalautuvan verkkopalvelun ja teknologioista riippumattoman jatkokehityksen. Asiakas otti palvelun käyttöönsä osana tuotekokonaisuutta.
Palvelun suunnittelu aloitettiin tarkastelemalla palvelulle asetettuja vaatimuksia, joiden perustella arkkitehtuurimalli valittiin. Palvelu päädyttiin toteuttamaan mikropalveluarkkitehtuurin mukaisesti hyödyntäen Docker-konttiteknologiaa. Mikropalveluiden rajapinnat toteutettiin REST-rajapintatyylin mukaisesti Node.js-ajoympäristössä hyödyntäen Express.js-sovelluskehystä. Mikropalveluiden välityspalvelin toteutettiin Nginx-ohjelmistolla, jonka avulla mikropalvelut yhdistettiin käyttöliittymän web-sovellukseen. Verkkopalvelun tietokantoina käytettiin MongoDB- ja Redis-tietokantoja. MongoDBtä hyödynnettiin kuvantunnistusrajapinnasta saatavien tietojen tallennukseen ja Redistä hyödynnettiin käyttäjien sessiohallinnassa.
Palvelun käyttöliittymä toteutettiin SPA-sovelluksena, jossa käytettiin Vue.js-sovelluskehystä ja BootstrapVue-tyylikirjastoa. Vue-ekosysteemiä laajennettiin Vuex-tilahallintakirjastolla sekä Vue Router -lisäosalla, joka mahdollisti SPA-tyylisen Vue-sovelluskehityksen.
Palvelun tuotantoalusta toteutettiin GitLabiin, jonka tarjoamilla jatkuvan integraation toiminnallisuuksilla mikropalveluiden lähdekoodeista luotiin Docker-levykuvat ja tallennettiin konttirekisteriin. Palvelun julkaisussa hyödynnettiin Docker Composea jonka avulla konfiguraation mukaisten mikropalveluiden Docker-levykuvat noudettiin Gitlab-konttirekisteristä ja käynnistettiin palvelinympäristössä.
Opinnäytetyön tuloksena saatiin vaatimusten mukainen mikropalveluarkkitehtuuria mukaileva verkkopalvelu, jonka käyttöliittymällä ratkaistiin asiakkaan tarpeet ja tuotettiin lisäarvoa. Lisäksi toteutukseen valittu arkkitehtuuri mahdollistaa asiakkaalle tarpeen vaatiessa skaalautuvan verkkopalvelun ja teknologioista riippumattoman jatkokehityksen. Asiakas otti palvelun käyttöönsä osana tuotekokonaisuutta.