Skip to content

Pilvipalvelun toteuttaminen Javascriptillä

Posted in Pilvisovellusten tuotanto

Harjoitustyö – Pilvipalvelun toteuttaminen

Pilvisovellusten tuotanto -koulutuksen viimeisenä harjoitustehtävänä oli pilvipalvelun toteuttaminen. Minä päätin mennä missä aita oli kaikkein korkein, eli aioin toteuttaa koko pilvisovelluksen tietokannasta käyttöliittymään.

Suunnitelma

Ajatuksena oli toteuttaa sovellus, jota joku oikeasti tarvitsisi. Harjoitustyön aihe löytyi Salon Startup Centeristä.

Työn aloitus sujui hyvin aloin kirjoittamaan tuotteistussuunnitelmaa tulevalle pilvisovellukselle. Pian kuitenkin huomattiin että sovellukselle ei ole tarvetta. Tästä huolimatta jatkoin sovelluksen parissa. Työn tarkoitushan oli että minä oppisin jotain.

Muokkasin tuotteistussuunnitelman uusiksi ja poistin kaikki ”turhat” toiminnallisuudet suunnitelmasta. Ajattelin tehdä vain perus REST API -toiminnot ja käyttölittymän niille.

Toteutukseen ajattelin käyttää MEAN -pinoa, koska siitä oli ollut puhetta koulutuksen luennoilla.

  • M – mongoDB
  • E – ExpressJS
  • A – AngularJS
  • N – NodeJS

Ennen kuin alotin koodaamaan suoritin udemy,com:ssa NodeJS ja AngularJS -kurssit. Sen jälkeen tein saman vielä lynda.com:ssa.

 

Toteutus

Tietokanta

Aloitin työn pohjalta eli tein REST API:n ensimmäiseksi. Käytin pohjana udemyn -kurssimateriaalia. Tietokantana käytin netistä löytyvää mongoDB -palvelua (mlab.com). Tietokannan testikäyttö on siellä ilmaista (max koko 500 MB).

Tietokanta koostuu kolmesta kokoelmasta: groups (ryhmät), sensors (sensorit) ja measurements (mittaustulokset). Sensori on järjestelmän ydin, eli kaikkien mittaustulosten tulee kuulua jollekin sensorille. Sensori voidaan vielä liittää johonkin sensoriryhmään.

Tietokannan manipulointiin käytin mongoose -rajapintaa.

 

Rest API

Toteutin REST API:n ExpressJS:llä ja NodeJS:llä. Pilvisovellusten tuotanto -koulutuksessa sanottiin että REST API:n voi toteuttaa helposti ExpressJS:llä. Olihan se aika helppoa. Jossain vaiheessa aloin vaan miettimään onko tässä mitään järkeä. Eikö tätä voisi tehdä helpommin?

 

Käyttöliittymä

Käyttöliittymän toteutin AngularJS 1:llä. Sain hyvän pohjan udemyn -kurssimateriaalista. Jonkin aikaa meni ennen kuin sain käyttöliittymän ja REST API:n toimimaan yhdessä. Mahtava tunne kun järjestelmä alkoi viimein toimimaan.

Harjoitustyö AngularJS
Päänäkymä

 

Harjoitustyö AngularJS
Sensor view

 

Pilvipalvelu

Laitoin sovelluksen Heroku -pilvipalveluun. Muutama kahvikupillinen meni ennen kuin sovellus lähti käyntiin. Herokun ohjeistukset olivat kuitenkin todella hyviä ja käyttöliittymäkin oli varsin yksinkertainen.

 

Yhteenveto

Mitä opin? Mitä jäi mieleen?

Opin yhden tavan toteuttaa yksinkertainen pilvisovellus. Mongo -tietokannan käyttö oli yksinkertaista ja se soveltuu hyvin projektin joka vaiheeseen. Erityisesti projektin alussa kun tietokannan kentät muuttuvat taajaan, NoSQL -kanta nopeuttaa tuotekehitystä huomattavasti koska schemaa ja tietokantaa ei tarvitse päivittää kun kenttiin tehdään muutoksia.

REST API:n tekeminen NodeJS:llä ja ExpressJS:llä oli aika helppoa. Välillä unohdin että koodi on asynkronista, eli järjestelmä ei jäänytkään odottamaan funktion paluuarvoa vaan jatkoi koodissa eteenpäin.

Käyttöliittymän tekeminen oli aika helppoa AngularJS:llä. Netistä löytyi paljon apuja. Ainoa ”ongelma” oli REST API -kutsujen kanssa, jotka eivät palauttaneet oikeita tietorakenteita.

Mitä tekisin toisin?

Jos aloittaisin työn nyt niin käyttäisin sailsJS -runkoa. Käyttöliittymän tekisin edelleen AngularJS:llä tai ReactJS:llä. SailsJS -frameworkilla yksinkertaisen API:n voi toteuttaa parissa päivässä. Lisäksi sailsJS on tietokantariippumaton, eli tietokannan voi vaihtaa ilman koodimuutoksia.

 

 

Mitä seuraavaksi?

Seuraavaksi teen pilvisovelluksen sailsJS:llä, AngularJS / ReactJS:llä, joka voi käyttää sekä SQL ja NoSQL -kantaa ja jossa on autentikointi. Lisäksi ajattelin opetella striimien ja websocketin käyttöä. Tulevan pilvisovelluksen visio eli tarkoitus on ihan auki. Tällä hetkellä  tarkoitus on ”vain” opetella uusia asioita ja etsiä uusia haasteita eli töitä.

 

Linkkejä

Viimeisimmät artikkelit

Kategoriat