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ä