Optimizing web development workflow
Piirainen, Hermanni (2016)
Piirainen, Hermanni
Metropolia Ammattikorkeakoulu
2016
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2016113018322
https://urn.fi/URN:NBN:fi:amk-2016113018322
Tiivistelmä
Insinöörityön tavoitteena oli tutkia moderneja JavaScript-pohjaisia työkaluja ja tekniikoita verkkokehityksen eri vaiheiden optimoinnin näkökulmasta. Työssä selvitettiin myös Node.js-ajoympäristön toimintaperiaatteita. Node.js toimii lähes kaikkien työssä esiteltyjen työkalujen pohjana. Työn tarkoituksena oli vertailla perinteistä ja modernia verkkokehityksen työnkulkua aina projektin aloittamisesta lopputuotteen siirtämiseen tuotantopalvelimelle sekä sitä, mihin ongelmiin uudet työkalut yrittävät löytää ratkaisuja.
Perinteisessä työnkulussa suuri osa työvaiheista sisältää manuaalisia, toistuvia tehtäviä, joiden nopeampaan ja tehokkaampaan suorittamiseen sellaiset työkalut kuin npm ja Gulp pyrkivät. Insinöörityössä tutkittiin ja vertailtiin työkaluja, joiden avulla verkkokehitystä voidaan optimoida ja automatisoida. Vertailtaessa työkalut jaettiin kolmeen osa-alueeseen: verkkosovellusten riippuvuuksien hallinnan työkaluihin, tehtävänsuorittajiin ja projektin aloittamista tukeviin työkaluihin.
Insinöörityön lopputuotteena valittiin SPA-arkkitehtuuria (single-page application) noudattavalle verkkosovellukselle sopivat kehityksen eri vaiheita tukevat työkalut. Valitut työkalut olivat kehitysriippuvuuksien hallintatyökalu npm, front-end-riippuvuuksien hallintatyökalu Bower ja tehtäviensuorittaja Gulp. Työkalujen käyttöä varten luotiin myös kokoonpano, jonka avulla toistuvien tehtävien manuaalisesta suorittamisesta päästiin eroon. Kokoonpanon avulla valitut työkalut ja niiden toiminnot saatiin lisäksi integroitua: esimerkiksi Bowerin avulla hallinnoitavat front-end-riippuvuudet saatiin koottua yhteen tiedostoon Gulpilla suoritettavan tehtävän avulla. Gulp-tehtävien avulla saatiin lisäksi aikaan muun muassa Node.js-kehityspalvelin, joka mahdollisti sovelluksen kehittämisen ja testaamisen reaaliaikaisesti monilla eri laitteilla, ja sovelluksen tuotantoversion automaattinen kokoaminen sekä siirto tuotantopalvelimelle muutaman komennon avulla.
Insinöörityössä huomattiin, että työkalujen kehitystahti on erittäin nopea: uusia työkaluja luodaan viikoittain. Kehityksen mukana pysyminen vaatii vaivannäköä, mutta tärkeintä ei ole opetella työkalujen eroja, vaan ymmärtää niiden konsepti ja periaatteet sekä se, mihin ongelmiin ne kehittäjälle tarjoavat apua.
Perinteisessä työnkulussa suuri osa työvaiheista sisältää manuaalisia, toistuvia tehtäviä, joiden nopeampaan ja tehokkaampaan suorittamiseen sellaiset työkalut kuin npm ja Gulp pyrkivät. Insinöörityössä tutkittiin ja vertailtiin työkaluja, joiden avulla verkkokehitystä voidaan optimoida ja automatisoida. Vertailtaessa työkalut jaettiin kolmeen osa-alueeseen: verkkosovellusten riippuvuuksien hallinnan työkaluihin, tehtävänsuorittajiin ja projektin aloittamista tukeviin työkaluihin.
Insinöörityön lopputuotteena valittiin SPA-arkkitehtuuria (single-page application) noudattavalle verkkosovellukselle sopivat kehityksen eri vaiheita tukevat työkalut. Valitut työkalut olivat kehitysriippuvuuksien hallintatyökalu npm, front-end-riippuvuuksien hallintatyökalu Bower ja tehtäviensuorittaja Gulp. Työkalujen käyttöä varten luotiin myös kokoonpano, jonka avulla toistuvien tehtävien manuaalisesta suorittamisesta päästiin eroon. Kokoonpanon avulla valitut työkalut ja niiden toiminnot saatiin lisäksi integroitua: esimerkiksi Bowerin avulla hallinnoitavat front-end-riippuvuudet saatiin koottua yhteen tiedostoon Gulpilla suoritettavan tehtävän avulla. Gulp-tehtävien avulla saatiin lisäksi aikaan muun muassa Node.js-kehityspalvelin, joka mahdollisti sovelluksen kehittämisen ja testaamisen reaaliaikaisesti monilla eri laitteilla, ja sovelluksen tuotantoversion automaattinen kokoaminen sekä siirto tuotantopalvelimelle muutaman komennon avulla.
Insinöörityössä huomattiin, että työkalujen kehitystahti on erittäin nopea: uusia työkaluja luodaan viikoittain. Kehityksen mukana pysyminen vaatii vaivannäköä, mutta tärkeintä ei ole opetella työkalujen eroja, vaan ymmärtää niiden konsepti ja periaatteet sekä se, mihin ongelmiin ne kehittäjälle tarjoavat apua.