Jari ”Jaffa” Jaanto on yksi Suomen tunnetuimmista koodaajista. Hänet on valittu Suomen parhaaksi developeriksi 2015 ja vaikuttaa nykyisin Startup-yrityksissä Heimo, IRC-Galleria ja Ninchat. Jaffa on vakionaama isojen yritysten Hachathon-tapahtumissa ja näin hekin saavat palan hänen osaamisestaan. Jaffan kanssa olemme järjestämässä 2016 Iot-kurssin, jonka lähtökohtana on itse tekeminen ja projektien toteuttaminen. Nyt ei siis puhuta vain siitä, että IoT on tulossa ja mullistaa kaiken, vaan mennään todella asiaan. Tämä on täysin ainutlaatuinen tilaisuus saada oppia parhaista parhaimmilta.
Ari meiltä haastatteli Jaffaa ohjelmoinnin tulevaisuudesta.
Ari: NoSQL-kannat ovat kasvattaneet suosiotaan, ovatko ne korvaamassa vai täydentämässä relaatiokantoja?
Jaffa: NoSQL-kannat eivät korjaa relaatiotietokantojen tarvetta datassa jossa on paljon viitteitä. NoSQL-kantoja enemmänkin käytetään applikaatioissa joissa ei datan rakennetta ole tarkkaan määritetty etukäteen, eikä viitteitä datan sisällä tarvita. Tämä on esimerkiksi keskusteluforumin tai chatin käyttöön hyvä, kun halutaan luoda persistentti kerros datalle.
Kuitenkin suunta maailmalla on se, että noSQL-tyyppisiä ominaisuuksia on tullut esim. Postgresql:ään, joten samoja juttuja alkaa tulla relaatiotietokantojen puolelle.
https://www.postgresql.org/docs
https://info.enterprisedb.com/r
https://www.linuxjournal.com/co
Lisäksi myös NoSQL-kantoja on täydennetty lähemmäs relaatiotietokantoja, esim. MongoDB:tä mongoosen avulla: https://mongoosejs.com/
Ari: MongoDB on noussut yhdeksi eniten käytetyistä tietokannoista, mistä se johtuu ja onko siinä vielä heikkouksia?
Jaffa: MongoDB on noussut suosioon koska sille kehittäminen on nopeaa nykypäivän web-applikaatioilla ja monet isotkin organisaatiot ovat alkaneet käyttää tätä.
MongoDB:n heikkoutuna on tällä hetkellä esim. hitaat rinnakkaiset kirjoitukset kantaan ja joidenkin mittausten mukaan se näyttäisi nopeudessa häviävän esim. Postgresql:lle joissain asioissa. Näitä kannattaa kuitenkin katsoa hyvin kriittisellä silmällä ja katsoa onko kyseessä minkälainen data:
Ari: Minkälaiset tietokantatuotteen ominaisuudet ovat hyödyllisimpiä ohjelmoijan kannalta?
Jaffa: Ohjelmoijan kannalta nopea kehitys, ja myös selkeä rakenne. Nykypäivän ohjelmistoframeworkit mahdollistavat sen että kirjoitetaan ennemminkin tietokannan malleja, ja pohjatoteutus rakentaa alla olevan tietokannan. Ohjelmoijalla ei välttämättä edes ole suoraa näkymää tietokannan syntaksiin.
Lisäksi on tärkeää että toteutus ei rajoita ohjelmoijaa. Monet frameworkit saattavat toimia yhteen käyttötarkoitukseen hyvin, mutta kun pitää tehdä jotain erikoisempaa voi olla ohjelmistoframeworkin ulkopuolelle pääsy vaikeaa.
Kun puhutaan puhtaasti tietokantatuotteesta, niin tärkeää on hyvä dokumentaatio ja tutoriaalit, nopea learning curve ja myös se että asioita pystyy tekemään eli tietokantatuote ei rajoita ohjelmoijan tarpeita. Myös hyvä laajennettavuus ja se että tuotteeseen tulee jatkuvasti päivityksiä on tärkeitä. Samoin ympärillä oleva kehitysyhteisö.
Ari: Mikä rooli open sourcella on tänä päivänä?
Jaffa: Open Source on mahdollistaja, mutta ei mikään hopealuoti. Monet open source -tuotteet saattavat jäädä alhaiseen versioon kuten esim 0.2 ja niiden kehitys sammuu heti kun ihmiset eivät ole innokkaita enää jatkokehittämään. Yleensä open source -projekteissa pitää olla muutama aktiivi jotka motivoivat toinen tosiaan ja hyvä vaihtuvuus. Harvoin kehittäjät jaksavat 2 vuotta pidempään jotain pientä projektia.
Sitten taas isot projektit kuten Linux, PostgreSQL yms. mahdollistavat tehokkaaman bugien löytymisen, nopeamman ja paremman kehityksen sekä hyvän kehittäjäyhteisön ympärille. Kehittäjäyhteisön itseään motivoivat mekanismit ovat tärkeitä.
Open Sourcen rooli on tarjota ilmaisia kehitystyökaluja ja kehitysyhteisöjä kehittäjille. Nämä toimivat myös aloittelijoille ihanteellisina alustoina. Kovin harvalla kun varaa maksaa Oracle- tai Solid-lisenssiä, kun taas esim. PostgreSQL:n ja MongoDB:n voi ladata verkosta kuka vaan.
Ari: Mikä rooli SQL:llä on tulevaisuudessa?
Jaffa: Kestävä. Nykypäivän tietokannoista on suurin osa SQL:llä kirjoitettu ja ne tulevat elämään vielä hyvin pitkään. NoSQL-tietokannat tuovat lisää mutta kannat elävät rinnakkain.
Ari: Pilvipalvelut ovat tietysti tätä päivää, mitä ratkaisuja itse suosit?
Jaffa: Pilvipalveluissa tärkeimmäksi tekijäksi on muodostuneet kustannukset, sekä lisäksi poliittiset vaatimukset.
Poliittiset valinnat: Moni asiakas vaatii että datojen pitää olla alueella joka on EU Safe Harbor sopimuksen alueella. Esim. Irlanti jossa Amazonin palvelimet pyörivät on ollut ok. Lisäksi hankkinut pilvipalvelimia saksasta, ranskasta sekä hollannista. Erään asiakkaan vaatimuksena on saada Saksaan palvelu joten otamme tässä saksan amazonia käyttöön.
Kustannukset: Amazonin staattisten tiedostojen jakelupalvelun S3 perustuu latauspyyntöjen määrään joten tässä olemme saaneet säästöjä virittämällä oman palvelimen jollekin halvalle eurooppalaiselle palveluntarjoajalle, kuten OVH. Muita hyväksi toteamiani palveluita ovat: Linode, Hetzner sekä todella pieneen harrasteluun olen käyttänyt Digital Oceania, josta saa 60 sekunnissa 5eur/kk kustannuksella palvelimen pystyyn.
Jos taas halutaan suuria järjestelmiä joissa hajautus useille eri koneille, niin Amazon on ollut silloin käytössä.
Ari: IoT (Internet of Things) on pinnalla, mitä mahdollisuuksia tai toisaalta haasteita näet tässä?
Jaffa: IoT on hyvin lähellä sydäntäni. Sanoisin että IoT mahdollistaa aivan uusia innovaatiota etenkin Suomalaiselle teollisuudelle, luoden aivan uudentyyppisiä työpaikkoja ja tuomalla kustannussäästöjä. Esimerkiksi meriteollisuus jonka arvo on 14 miljardia euroa, hakee kovaa kasvua & kustannussäästöjä juuri IoT:n kautta. He tekevät myös tiiviissä yhteistyössä startuppien ja tekeksen kanssa työtä tämän eteen:
https://meriteollisuus.teknolog
Toinen esimerkki on Industry Hack, joka yhdistää Suomesta löytyvät IT-osaajat sekä teollisuuden. Olin itsekin koodaamassa softaa Konecranesin nostureille Industryhackeissa, juuri IoT-tyyppisesti, eli nosturit olivat kiinni netissä IoT-laitteina: https://www.industryhack.com/ https://twitter.com/konecranes
Haasteet ovat tietoturvan puolella. Tietoturvasta ei ole osattu välttämättä pitää huolta, ja riskinä on että johonkin tehtaaseen tai laitteeseen päästään ulkopuolelta käsiksi helposti.
Ari: Miten suuret yritykset ja konsulttitalot voisivat paremmin hyötyä starupeissa olevasta osaamisesta?
Jaffa: Uusista konsepteista, sekä esimerkiksi yhdysvalloissa isot yritykset kokevat startuppien ostamisen enemmänkin ulkoistettuna tuotekehityksenä. Samalla startupeilta saisi kustannustehokkaammin isoja järjestelmiä kuin nykyisiltä isoilta tietotaloilta.
Ari: Mitä osaamista tulevaisuuden sovelluskehittäjiltä vaaditaan?
Omaksua uutta tietoa nopeasti. Kaikki kehittyy tällä hetkellä nopeasti ja kenttä laajenee. Itsekin jokaisessa projektissa johon osallistun tulee aina jotain uutta vastaan, kun esimerkiksi 2000-luvun alussa kaikki saatettiin koodata javalla, 90-luvulla C-kielellä ja konekielellä.