Skip to content

Pilvipalvelun toteutus Javascriptillä – osa 2

Posted in Pilvisovellusten tuotanto

Pilvisovelluksen toteutus – SailsJS

Tehdessäni harjoitustyötä Pilvisovellusten tuotanto -kurssille mietin monta kertaa eikö tätä voisi tehdä helpomminkin. Mitä järkeä on tuhlata aikaa (ja rahaa) esimerkiksi REST API:n CRUD-toiminnallisuuteen. No, onhan se hyvä opetella alkeet, mutta oikeasti sovellusten teossa pitäisi keskittyä asiakkaiden ongelmien ratkaisuun.

Kun olin jo tehnyt harjoitustyön aloin etsimään järkevää framewörkkiä Nodejs:lle, joka täyttäisi vaatimukseni. Sen pitäisi generoida REST API automaattisesti ja se ei saisi olla riippuvainen mistään tietokantatyypistä tai UI-framewörkistä. Ainoa nodeJS -sovellusrunko, joka täytti vaatimukseni on SailsJS.

 

 

SailJS

SailJS:n hyödyt:

  • SailJS on tietokantariippumaton, ohjelmointirajapinta on sama kaikille tietokantatyypeille (Postgres, MySQL, MongoDB)
  • REST API generoituu automaattisesti
  • SailJS on UI -framework riippumaton
  • Melko hyvät speksit
  • Yhteisön tuki

Haitat:

  • SailJS framework on monipuolinen (monimutkainen), eli sen opetteluun menee aikaa
  • Suorituskyky suurilla tietomassoilla?
  • Onko SailsJS valmis tuotantokäyttöön? Versio on 0.12

 

Kuinka SailJS toimii käytännössä?

Päätin kokeilla SailJS:ää tekemällä Hyria -harjoitustyön uudestaan SailJS frameworkilla. Aikaa meni pari päivää (harjoitustyön tekemiseen meni pari kuukautta). REST API:n ei käytännössä mennyt aikaa ollenkaan ja UI oli jo valmis. Muutaman muutoksen jouduin tekemään Angular:n puolelle, koska REST API muuttui SailJS:n myötä. Täytyy myöntää että generoitu REST API on paljon parempi kuin itse tekemäni.

Sovelluksen luonti (komentoriviltä):

  • sails new sails-test-app

REST API:n luonti

  • sails generate api group
  • sails generate api sensor
  • sails generate api measurement

Serverin käynnistys

  • sails lift

Tuotekehitysvaiheessa kaikki REST API -tietokantatoiminnot voi tehdä selaimella:

  • Create: localhost:1337/group/create?groupName=awesome&description=testing
  • Retrieve: localhost:1337/group
  • Update: localhost:1337/group/update/<id>?description=testing too
  • Delete: localhost:1337/group/delete/<id>
  • Monimutkaisempia kyselyjä/komentoja voi tehdä esim Postman:lla (videolla lisää esimerkkejä)

 

Yhteenveto

Valitulla sovellusrungolla on todella suuri vaikutus työtehoon. Perustoiminnot syntyvät melkein itsestään ja koodaaja pystyy keskittymään ongelman ytimeen eikä aika mene perusasioiden kanssa nyhertämiseen.

Mitä seuraavaksi?

JWT-autentikointi SailJS:llä ja Angular:lla. Itse asiassa tein sen jo, mutta siitä lisää joku toinen kerta. Maybe next time.

Linkkejä

 

 

 

Viimeisimmät artikkelit

Kategoriat