illustration
Blogitekstejä

Webbiaallon harjalla

Web-kehityksen tärkeimmät teemat vuonna 2016

Syksyllä sain kunnian aloittaa Bitfactorilla uuden perinteen, Brown Bag-sessiot. Kokoonnumme noin kerran kuussa yhteiselle lounaalle kuuntelemaan jonkun kertoessa asiasta X, firman tarjotessa purtavaa. Kerrottavaa asiaa ei ole rajattu mitenkään tarkemmin, kunhan se liittyy jollain lailla alaan. Minun toivottiin puhuvan yleisesti webbikehityksestä. Nykyään meidän vahvuuteen kuuluu “koodarien” lisäksi myös testaajia, graafikoita, ux-suunnittelijoita, palvelumuotoilijoita, projektipäälliköitä ja muita digitalisaation lähettiläitä. Niinpä webbikehityksen tämänhetkisen tilan läpikäyminen silloin tällöin on “ihan hyvä juttu”.

Webbikehityksen vetonaulana on jo pitkään ollut JavaScript ja sen päälle luodut tuhannet frameworkit ja kirjastot. Etenkin JavaScript-maailmassa pinnalla pysyminen vaatii lähes päivittäistä tiedon seuraamista, kun uusia kirjastoja ja versioita nykyisistä putkahtelee verkkoon jatkuvalla syötöllä. Erityisesti Npm on vakiinnuttanut paikkaansa kirjastojen jakelukanavana. Tällä hetkellä npm:n listoilta löytyykin lähes 240 000 erilaista JavaScript-pakettia. Päivittäiset latausmäärät npm:n kautta hipovat noin 150 miljoonaa pakettilatausta, joten hyvin merkittävä osuus webin kehityksestä kulkee jollakin tavalla npm:n kautta.

Itse JavaScript:n kehitystä on vienyt eteenpäin EcmaScript-standardin kehitys ja viime kesänä standardoitu ECMA-262:n 5. versio. Yleisimmin nykyisestä standardista puhutaan nimillä ES6 tai ES2015. Seuraava versio ES7 on myös työn alla ja siihen tulevia ominaisuuksia voi käyttää jo monen työkalun, kuten Babelin kautta. Rohkeimmat bloggaajat ovat jo julkistaneet tämän vuoden teemoja JavaScriptin puolella, streamien tarjoamiin etuihin (ja referenssitoteutukseen) on syytä kaikkien tutustua.

JavaScriptin ja sen kirjastojen huima kehitystahti on toisaalta saanut osan kehittäjistä lähes raivon partaalle. Asiaan löytyy toki eriäviä näkemyksiä, mutta on totta, että etenkin frontend-puolen kehitys on mennyt turhan monimutkaiseksi. Vastaliikkeenä osa käyttäjistä on siirtynyt monimutkaisista käännöstyökaluista (Grunt, Gulp, Broccoli yms.) käyttämään pelkästään npm:n skriptejä. Yksi lisäongelma sopassa on myös kirjastojen yhteeensopivuusongelmat ja jatkuva päivityssykli. Yhtä pakettia ei voi päivittää ilman, että päivittää N-määrän muita paketteja, jotta kaikki toimivat taas kiltisti yhdessä. Joskus myös paketin ylläpitäjän mielestä on hauska poistaa koko paketti npm:n kokoelmasta. Arvaatteko miten silloin käy, kun pakettia ei ole saatavana? No, siinäpä on yhden työpäivän verran tekemistä kehittäjäraukalle. Ihan suoraan ei tule mieleen toista alaa, jossa toisella puolella maapalloa asuvan ihmisen tekeminen voi pistää koko kehitystiimin prioriteetit uusiksi, kun tarvittava kirjasto on hävinnyt.

Kun jättää fronttikehityksen murheet taakseen, voi kurkistaa mitä backend-puolella tapahtuu. JVM (Java Virtual Machine) jatkaa porskutustaan ja sen päällä pyörivissä kielissä käy kuhina. Java 8:aan pyritään siirtymään yhä useammassa ohjelmistoprojektissa samalla, kun uusia pistetään pystyyn Spring Bootin Sparkin avulla tai kokonaan eri kielillä, kuten Scalalla tai Clojurella. Myös JetBrainsin kehittämä Kotlin on saanut positiivista pöhinää aikaan.

Java 9:n kehitys etenee ja tällä hetkellä ominaisuuksien pitäisi olla lyöty lukkoon 26.5.2016 ja julkaisuun tähdätään maaliskuussa 2017. Jo Java 7:ään tähdätty Jigsaw on vihdoin Java 9:ssä mukana. Jigsaw tuo mukanaan moduulisysteemin, jolla Javaa pystytään pilkkomaan pienempiin osiin. Tämä mahdollistaa Javan skaalaamisen entistä pienempiin laitteisiin, kun sovellukseen voidaan paketoida mukaan vain tarvittavat moduulit. Lisäksi moduulien avulla saadaan parannettua suorituskykyä ja tietoturvaa, sekä helpotettua sovelluksen ylläpitoa.

Tietokantojen puolella on jo pitkään käytetty erilaisia dokumentti- ja avain-arvo -tietokantoja. MongoDB:stä ilmestyi joulukuussa versio 3.2 joka toi mukanaan WiredTiger-kantamoottorin. WiredTiger:n luvataan parantavan suorituskykyä ja yksi sen suurimmasta muutoksista onkin yhtäaikaisten muutosten tallentaminen samaan dokumenttiin. WiredTigerin pitäisi myös skaalautua paremmin isompiin datamääriin ja pakkauksen avulla tarjota enemmän dataa suoraan palvelimen keskusmuistista.

Yleisesti tietokantojen kanssa tarve on mennä kohti “offline-first”-ratkaisuja. Sovellusten pitäisi toimia myös ilman nettiyhteyttä ja synkata muuttunut data palvelimelle, kun yhteys on saatu takaisin. Niinpä esim. synkkaavat tietokannat, kuten PouchDB, ja reaaliaikaisesti tietoa päätelaitteisiin päivittävät kannat, kuten RethinkDB, ovat jatkuvasti esillä teknologiakeskusteluissa.


tl; dr

Web-kehityksen puolella on aina meneillään uudistumista, mutta näkisin, että tänä vuonna yhtenä teemana on pyrkimys käyttää yhä vakiintuneempia ratkaisuja. Tietokannoissa yhä useampi on palaamassa Mongo-matkaltaan takaisin esim. PostgreSQL:n ja sen tarjoamien JSON ja hstore-ratkaisujen pariin. Myös erikoistuneemmat, mutta kypsyneet ratkaisut, kuten Redis, jatkavat suosion kasvattamista. JavaScript-puolella siirrytään kohti yksinkertaisempia käännöstyökaluja ja näkisin, että käytetyt teknologiat vakioituvat yhä enemmän (React, Angular, Ember, Aurelia jne.). Palvelinpuolella tapahtuu paljon mielenkiintoista JVM:n saralla, mutta myös .Net-maailma elää murrosta sen laajentuessa Windowsin lisäksi OS X ja Linux -ympäristöihin. Kannattaa myös tsekata aika-ajoin päivittyvä ThoughtWorksin teknologiajulkaisu Technology Radar, jossa asiantuntijoista koostuva raati kertoo tämän hetken trendeistä.

Haluatko kuulla lisää tästä aiheesta? Jätä yhteystietosi niin olemme yhteydessä.

Lähettämällä lomakkeen hyväksyn tietojeni tallentamisen ja käsittelyn tietosuojaselosteen mukaisesti.