5.5.2019Blogi

Development Teknologiakartoitus

Ohjelmistokehityksessä maailma liikkuu päätä huimaavalla vauhdilla ja uusia teknologioita syntyy sekä sammuu viikoittain. Tuntuu että kulman takana on aina odottamassa uusi trendikäs sovelluskehys, joka lupaa pelastaa ja mullistaa kehityksen. Tällaisessa ympäristössä toimiminen aiheuttaa helposti vauhtisokeutta tai sulkeutumisreaktion. Kuten kaikessa, kumpikaan ääripää ei ole hyväksi. Fakta kuitenkin on, että tässä kehityksestä syntyy uusia hyviä teknologioita, jotka helpottavat sovellusten rakentamista ja joita halutaan ottaa käyttöön.

Missä me olemme nyt

Jotta voidaan rohkeasti lähteä tuntematonta kohti, on tiedettävä ensin missä ollaan. Solita on kooltaan suhteellisen suuri yritys ja projekteja on todella paljon, joista osa on lyhyitä ja osa alkanut jo yli kymmenen vuotta sitten. Projektitiimit ovat myös autonomisia ja saavat itse valita teknologiansa yhdessä asiakkaan kanssa. Tästä syystä on vaikeaa nähdä kokonaiskuvaa Solitalla käytetystä teknologiakirjosta. Muun muassa tästä tarpeesta suoritamme vuosittain sisäisen teknologiakyselyn. Kyselyllä selvitetään mitä kaikkea meillä tehdään ja mitä haluttaisiin tehdä.

Kyselyn tuloksista selviää, että eniten käytettyjä ohjelmointikieliä ovat Java ja JavaScript. Tämä ei ole kovin yllättävää, mutta on hienoa nähdä että samat kielet ovat myös työssä käytettävien teknologioiden ”tykkäämislistalla” kärkipäätä. Käytettyjen ohjelmointikielien listalla on nähtävissä Solitan vahva osaaminen myös Clojuressa. Kaaviossa kuvataan teknologian osuutta kaikista vastauksista ja alle 1%:n saaneet teknologiat on piilotettu selkeyden vuoksi.

Mitäs sitten Solitalla haluttaisiin tehdä? Tuloksissa on selkeä kärkiviisikko

  1. Clojure
  2. Kotlin
  3. Javascript
  4. C#
  5. Java

Clojuresta selvästi pidetään eniten ja sitä otetaan aktiivisesti käyttöön eri projekteissa. Suhteellisen uutena sekä mielenkiintoisena tulokkaana on Kotlin noussut kärkikahinoihin. Kotlin valittiin viime vuonna virallisesti tuetuksi Android-kehityskieleksi. Tämän vuoksi Kotlin onkin ollut selkeässä nosteessa koko vuoden ja näin siis myös Solitalla. Kotlinia Androidin lisäksi ollaan otettu käyttöön aktiivisesti palvelimella ajettavien ohjelmistojen toteutuksissa. Askel Javasta Kotliniin on helppo ottaa koska JVM säilyy sovelluksen ajoalustana sekä syntaksi on helppo Java-koodarin omaksua. .NET säilyttää myös vakaan kannattajakuntansa C# ja F# muodossa. Markkinassa laaja Azure kysyntä tukee .NET osaamista.

Nykyaikaiset räätälisovellukset eivät oikeasti ole ”from the scratch” toteutuksia vaan ne koostuvat ohjelmistokomponenteista ja kehyksistä.

Mikropalveluarkkitehtuurit ja JVM alustan suosio takaa Spring Boot:lle ykkössijan. Node.js:n toinen sija on hieman yllättävä, mutta web-sovellusten paketointi varmasti nostaa sen näinkin korkealle. Web-sovelluksia Solitalla toteutetaan Reactilla, Angularilla ja Vuella.

Missä sitten Solitan tekemää koodia suoritetaan?

Kyselyssä kysymys osoittautui hieman turhan laajaksi ja siitä ei saatu hyvin vertailtavaa tulosjoukkoa. Tuloksista voidaan kuitenkin suodattamalla selvittää, että ajoalustana Linux ja Docker ovat selkeässä johdossa. Pilvialustojen suhteen selviää myös, että Solitalla kolmen kärki on vähemmän yllättäen seuraava.

  1. AWS
  2. Azure
  3. GCP

Pilvialustat ja mobiiliratkaisut ovat myös kohteita, joiden kanssa Solitalaiset haluavat työskennellä.

Tämä on siis nykytila. Seuraava askel onkin huomattavasti vaikeampi. Kaapista pitäisi kaivaa se kuuluisa kristallipallo ja ennustaa tulevaa. Onneksi ei ihan tämän tason selvännäkijän taitoja tarvita.

Miten nähdä tulevaisuuteen?

TL;DR; Ei mitenkään, pitää arvata.

Ihminen on hieno tiedon varasto. Vaikka sinulla ei olisi mitään käsitystä jostakin asiasta osaat ainakin arvata jotain, ikinä ei ole tilannetta ettei osaisi sanoa yhtään mitään. Ihmisen tiedon tasoja voidaankin kuvata seuraavanlaisesti:

  1. Arvaus
  2. Valistunut arvaus
  3. Tietoon perustuva arvaus
  4. Tietäminen

Tulevaisuutta ei voi tietää, mutta suuntaviivoja voidaan hahmotella kolmannen tason tiedolla. Voimme tunnistaa trendejä teknologiaviidakosta sekä ihmisten mielenkiinnosta voidaan tehdä päätelmiä. Tätä työtä tukee juuri alkupuolella kuvattu teknologiakysely. Kyselyiden lisäksi seuraamme aktiivisesti teknologiamaailman trendejä ja hypeä sopivalla varautuneisuudella. Näiden tietojen pohjalta voimme muodostaa 4-tasoisen portaikon johon sijoittaa teknologioita

  1. Käytössä
  2. Kokeillaan
  3. Evaluoidaan
  4. Seurataan

Käytössä taso on selkä. Teknologia on käytössä aktiivisesti Solitalla ja se on hyvin tunnettu.

Kokeillaan taso tarkoittaa, että teknologia on todettu evaluoinnissa hyödylliseksi sekä vakaaksi ja sitä on päätetty kokeilla käytännön projektityössä.

Evaluoidaan tasolla Solitan henkilöstössä on selkeää mielenkiintoa teknologiaa kohtaan ja sitä halutaan kokeilla. Evaluoinnissa teknologialla tehdään yleensä pieni sisäinen PoC, minkä perusteella saadaan tietoja sen toiminnasta sekä maturiteetista.

Seurataan taso tarkoittaa, että kiinnostusta teknologiaa kohtaan löytyy, mutta se ei vielä ole joko tarpeeksi kypsä tai sille ei ole selkeää tarvetta tunnistettu. Seurataan tasolla oleva teknologia jää siis seurantaan. Ajan kuluessa teknologiat saattavat pudota kokonaan listalta pois tai siirtyä portaikossa ylöspäin.

Näistä tasoista muodostuu teknologiakartta. Kartan avulla tiedämme, mitä kannattaa sisäisesti kannustaa opiskelemaan, mistä kannattaa pitää tietoiskuja ja mitä kannattaa projekteissa ottaa käyttöön.

Mitkä asiat sitten tällä hetkellä ovat kiikarissa?

Miltä sitten lähivuodet / kuukaudet konkreettisesti näyttävät? Nostan eri kategorioista 3 – 4 tärkeää havaintoa tarkasteluun tulevaisuuden ja nykyisyyden kannalta.

Ohjelmointikielet

Ohjelmointikielten osalta liikehdintä on yleensä melko verkkaista ja suuret muutokset tapahtuvat hiljalleen. Solitalla tehdyn kyselyn perusteella ja alan yleisen trendien mukaan JVM-pohjaiset kielet ovat edelleen suuressa suosiossa.

Solitalla varsinkin Clojure on saavuttanut vankan kannattajakunnan ja tulee pysymään suosittuna myös tulevaisuudessa.

Kotlin on uusi kaveri tällä alueella ja sen trendi tulee olemaan yhä nouseva varsinkin Android-tuen ansiosta. Kotlin koetaan myös helppona askeleena Javasta hieman modernimpaan kieleen. Kotlinin syntaksi ja funktionaaliset ominaisuudet ovat tervetullutta Java-kehittäjille. Vanha sotaratsu Java on myös kehittynyt vuoden aikana valtavasti ja se on saanut uuden nopeamman julkaisurytmin. Onkin nähtävissä, että kieleen saadaan uusia ominaisuuksia yhä nopeammalla tahdilla ja sen osuus kehityksestä on vakaalla pohjalla. Lisämausteen kakkuun heittää Oraclen uusi maksullinen lisensointimalli. Tähän muutokseen esimerkiksi Amazon on reagoinut julkaisemalla oman Java-versionsa (Corretto).

Azuren suosio, varsinkin Suomessa ja Nordic-alueella, luo myös .NET alustasta varteenotettavan kilpailijan. Tästä syystä C# ja F# tulevat säilymään Solitalla merkittävissä rooleissa. .NET puolella siirtymää on havaittavissa pois tuotemaailmasta enemmän räätälisovelluksiin. Tämä on kehittäjäkunnassa vastaanotettu innostuneesti.

JavaScriptin osuutta ei voi mitenkään yliarvioda. Se tulee edelleen olemaan hallitseva teknologia kun web-sovelluksia tehdään. Javascriptissä Ecmascript alkaa vakiinnuttaa itseään moduulirakenteen luomisessa ja IE:n kuoleman myötä verkossa voidaan käyttää ES9 tasoista javascriptiä. Mielenkiintoista seurattavaa javascript puolella on tänä vuonna tuleva ES10, jossa on tarkoitus tukea kielessä itsessään esim. lodash:llä toteutettuja operaatiota. Verkkosovelluksissa WebAssembly on myös evaluointi tasolla. WebAssembly alkaa pikkuhiljaa saamaan lisää kielitukea ja sen mielekkyys teknologiavalintana kasvaa, mutta vielä tänä vuonna sen rooli ei tule olemaan merkittävä web-sovelluksissa.

Go-kieli on Solitalla myös saavuttanut mielenkiintoa. Go on matalamman abstraktiotason kieli kuin esimerkiksi java, mutta sillä on hyvin laaja globaali yhteisö, joka tuottaa paljon hyviä kirjastoja kielelle. Kirjastojen käyttöönotto on Go:ssa erityisen helppoa suorien git-linkitysten avulla. Go:ta luonnollisesti tuetaan hyvin Googlen pilvipalvelussa, mutta myös AWS:n lambdat ovat saaneet virallisen tuen Go:lle.

Arkkitehtuurit ja sovelluskehykset

Mikropalvelut ovat olleet pinnalla nyt pari vuotta ja niillä on tehty useita palvelukokonaisuuksia. Alue on edelleen polttopisteessä, tosin ei välttämättä aina positiivisessa mielessä. Kun sovelluksissa ollaan siirrytty mikropalveluarkkitehtuuriin, alkavat sen luomat ongelmat myös hahmottumaan paremmin. Näitä ovat esimerkiksi hajautettujen transaktioiden ja virhetilanteiden selvittelyn vaikeus. Näiden asioiden ei pitäisi tulla mitenkään yllätyksenä, koska on hyvin selvää, että hajautetut järjestelmät ovat monimutkaisempia kuin yksittäiset sovellukset. Näitä kipupisteitä selvittämään on markkinoilla nousemassa useita tuotteita service mesh nimikkeillä. Tällaisia tuotteita ovat esimerkiksi Istio ja Linkerd. Niiden tarkoitus on parantaa palvelukokonaisuuden monitorointia, integrointia ja liikenteen reititystä.

Mikropalveluiden orkestroinnissa AWS ECS sekä Kubernetes ja Docker swarm ovat Solitalla käytetyimpiä teknologioita ja tulevat sitä olemaan myös jatkossa.

Spring on Solitalla ja maailmalla hyvin vahvassa asemassa JVM-alustan sovelluskehyksenä ja varsinkin spring boot on mikropalveluiden myötä monessa ratkaisussa käytössä. Spring on onnistunut modularisoimaan oman rakenteensa hyvin ja onkin nykyään kevyt sovelluskehys, johon on helppo lisätä ominaisuuksia. Keveyden puolesta se sopii mikropalveluiden toteutukseen. Springille on jonkin verran nähtävissä kilpailua varsinkin spring boot sektorilla kuten esimerkiksi Vert.x, Micronaut ja Spark. Nämä kilpailijat ovat kokeilu / evaluointi tasolla Solitalla eivät yhtä laajassa käytössä kuin spring boot.

Node.js varsinaisena palvelinpään toteuttajana on saavuttanut vakaan aseman ja varsinkin pilvipalvelujen serverless toteutuksissa se on hyvin isossa roolissa. Serverless toteutuksissa myös serverless framework on saavuttanut vakiintuneen paikkansa pilvi-deployment-työkaluna. Node tuotteena on vakautunut vuoden aikana mm. npm audit tietoturva skannauksen kautta. Node.js:ää käytetään myös poikkeuksetta web-sovellusten paketoinnissa. Node on Solitalla erittäin laajassa käytössä eikä näkyvissä ole sen osuuden pienenemistä vaan päin vastoin.

Pilvipalvelut

AWS tulee olemaan selkeässä ykkösasemassa tänäkin vuonna. Kehittäjät pitävät palvelusta ja ovat kokeneita toteuttamaan sovelluksia sen päälle. AWS on myös selkeä markkinajohtaja ja se käyttää valtavasti kehitysresursseja alustaansa. Tämä panostus näkyy huimana määränä uusia palveluita jokaisena vuonna. Tämä alkaa näkymään myös runsaudenpulana. On hyvin vaikea tuntea AWS:n kaikkia palveluita sekä niiden hyviä ja huonoja puolia. Uudet palvelut myös julkaistaan yhä useammin preview tilaan, jossa ne tuntuvat olevan jopa luvattoman kauan ennen virallista julkaisua (kuten esim. Amazon Aurora Multi-master). Myös uusimpien palveluiden saatavuus eri regioonilla on vaihtelevaa. Euroopassa Irlanti on edelleen edelläkävijä ja mm. Tukholman regioonalla on suuria puutteita palvelukirjossaan.

Tämän vuoden alun perusteella GCP on tekemässä selkeää nousua suosiossa. Suomen GCP-regioonalla on varmasti vaikutusta tässä suhteessa alustan mielenkiinnon suhteen. GCP alustana on hyvin mielenkiintoinen koska sen lähestymistapa on hieman erilainen kuin kilpailijoidensa. Esimerkiksi AWS profiloituu enemmän IaaS tarjoajaksi kun GCP on enemmän PaaS tarjoaja. GCP tarjoaa enemmänkin syvyyttä kuin leveyttä. Sen tarjoamat palvelut ovat hyvin mietittyjä ja pitkälle kehitettyjä eikä ns. ominaisuus spämmäystä juurikaan tapahdu. Myös koneoppimisen kannalta GCP erottuu edukseen esimerkiksi Auto ML tuotteen ja Big Queryyn integroidun koneoppimisen kautta. GCP:n ensimmäiselle tuotteelle App Enginelle ei myöskään löydy suoraa vastinetta kilpailijoilta.

Kuten aikaisemmin totesin on Azuren Nordic-alueella hyvin vahvassa asemassa. Tähän on monta syytä, mutta päällimmäisinä ovat Microsoftin iso panostus markkinointiin ja Azuren kahdella sisäänheittotuotetta Azure AD ja Office 365. Azuren on myös ominaisuuksiltaan kasvanut valtavalla nopeudella. Tähän on johtanut kova kilpailu AWS:n kanssa markkinajohtajan asemasta. Tämä huima kasvunopeus tuo mukanaan jonkin verran ongelmia uusien ominaisuuksien kanssa, mutta sama on nähtävissä myös AWS:n palveluissa. Azuren osuus tulee kasvamaan vuoden sisällä.

Koska kaikkien pilvipalvelujen osuus kasvaa, niin mistä se sitten tulee?

Osuus tulee on-premise ratkaisuista. Näiden osuus on selkeästi pienenemässä ja myös julkisella puolella ollaan siirtymässä pilvipalveluiden maailmaan. Poikkeuksiakin toki edelleen on esimerkiksi lainsäädännöllisistä ja muista syistä johtuen.

Yhteenveto

Solitalla pyrimme seuraamaan teknologiatrendejä, kiinnostuksen kohteita ja kuuntelemaan kehittäjiämme. Tätä kautta omaksumme uusia teknologioita ja tapoja toimia. On siis enemmän kuin selvää, että voimamme kehittyä ja luoda innovatiivisia ratkaisuja on ihmislähtöistä. Tämä on oikeastaan ainoa mahdollinen tapa selviytyä tämän hetken teknologian huimassa kehitystahdissa. Kenenkään ei ole mahdollista hallita kaikkia uusia eikä vanhoja teknologioita ja siksi kehittäjäyhteisö on selviytymisen keskiössä.

Solitalla kehittäjäyhteisö on aktiivinen ja intohimoinen joukko taitavia ihmisiä. Emme silti omista sitä kristallipalloa eikä muuten omista kukaan muukaan. Suunnat ovat siis arvauksia, mutta onneksi ne ovat sentään tietoon perustuvia sellaisia.

 

Jos haluat tutustua syvällisemmin Solitan käyttämiin teknologioihin sekä projekteihin, suosittelemme tutustumaan Solitan kehittäjien omaan blogiin dev.solita.fi. Jos haluat mukaan tähän kehittäjäyhteisöön, tutustu ohjelmistokehityksen työmahdollisuuksiin sivuiltamme www.solita.fi/avoimet-tyopaikat/