15.02.2022

Google Analytics vastatuulessa – mistä GDPR-kohussa on kyse?

EU:n tietosuoja-asetus GDPR ja erilaiset näkemykset yksityisyyden suojasta hiertävät EU:n ja Yhdysvaltojen välejä. Viimeisimpänä käänteenä Google on joutunut Itävallassa tietosuojaviranomaisen hampaisiin. Google Analyticsin käyttö on GDPR:n vastaista, viranomainen on todennut päätöksessään*. Mitä päätöksen taustalla on ja mitä se käytännössä merkitsee? Voiko Google Analyticsiä yhä käyttää?

*Lisäys 17.2.2022: Kyse ei enää ole ainoastaan Itävallasta, vaan sama tulkinta on nyt Euroopan laajuinen: Euroopan tietosuojaviranomaiset ovat päätöksessään todenneet Google Analyticsin käytön GDPR:n vastaiseksi.

GDPR ei salli henkilötietojen siirtoa USA:han

Perusteluna päätökselle on se, että Google Analyticsin verkkosivustolta keräämät seurantatiedot tallentuvat EU/ETA-alueen ulkopuolelle, Googlen Yhdysvalloissa sijaitseville palvelimille. Se ei ole GDPR-vaatimusten mukaista.

Päätöksen taustalla on se, että Yhdysvaltojen ja EU:n välillä ei ole voimassaolevaa sopimusta luottamukselliseen tiedonsiirtoon. Tähän tarkoitukseen luotu Privacy Shield -sopimus tuomittiin GDPR-vaatimusten vastaiseksi jo kesällä 2020, ja siitä lähtien tilanne on ollut epäselvä. Ongelman ytimessä on USA:n oma lainsäädäntö, joka sallii tiedusteluviranomaisille oikeudet päästä käsiksi USA:n datakeskuksiin tallennettavaan dataan – siis myös eurooppalaisten dataan. Uutta tiedonsiirtosopimusta ei ole ainakaan vielä näköpiirissä, vaikka neuvotteluja käydään.

Googlen GDPR-kohu on ehkä vasta alkusoittoa

Itävallan valituksen takana on itävaltalainen tietosuoja-aktivisti Max Schrems ja hänen voittoa tavoittelematon organisaationsa noyb, joka on tehnyt Itävallan tapauksen lisäksi sata muutakin valitusta eri puolilla Eurooppaa samoin argumentein. Niitä luultavasti vielä puidaan oikeudessa hyvän aikaa Googlen valitusten myötä.

Google ei tietenkään ole ainoa teknologiajätti, joka kerää ja tallentaa tietoja Yhdysvaltoihin. Sama koskee pitkää liutaa muitakin yrityksiä ja niiden palveluja, kuten vaikkapa Facebookia ja Amazonia. Hurjimpien spekulaatioiden mukaan Googlen vastatuuli on voinut jo aloittaa lähtölaskennan yhdysvaltalaisten teknologiayhtiöiden poistumiselle Euroopan markkinoilta. Facebookin emoyhtiö Meta onkin jo ehtinyt pelotella Euroopan jättämisellä, jos tiedonsiirtosopimusta ei saada solmituksi. Se on kuitenkin järisyttävä skenaario, jonka on vaikea nähdä toteutuvan. Taloudelliset panokset ovat puolin ja toisin niin kovat, että halukkuutta epäselvän tilanteen ratkaisemiseen luulisi löytyvän.

Googlen tapauksessa esillä on ollut myös kumppanuuksien solmiminen eurooppalaisten datakeskusten tarjoajien kanssa. Tällöin EU-alueelta ei enää siirrettäisi henkilötietoja USA:han.

Vaihtoehtoja Google Analyticsille

Suomessa Google Analyticsin käyttöä on rajoitettu myös niin, että kävijäseurannan on oltava luvanvaraista. Analytics kerää seurantadataa evästeiden avulla, ja Traficomin syksyllä 2021 julkaiseman evästeohjeistuksen mukaan sivuston kävijältä on pyydettävä suostumus evästeiden käyttöön. Ilman lupaa tietoja ei voi kerätä – ja aika moni jättää luvan antamatta.

Sekä Traficomin asettamat rajoitukset seurannalle että Euroopan tietosuojaviranomaisten päätös saavat varmasti monet yritykset ja organisaatiot pohtimaan GDPR-ystävällisiä ja evästeettömiä vaihtoehtoja Google Analyticsille. Niitä nimittäin on olemassa, vaikka Analytics on toki analytiikkatyökaluista ylivoimaisesti suosituin.

Esimerkiksi Matomo ja Fathom voivat olla varteenotettavia ratkaisuja. Ne eivät ole ilmaisia, mutta toimivat kävijöiden yksityisyyttä suojellen ja GDPR-vaatimusten mukaisesti. Ne keräävät vain anonymisoitua seurantadataa, jota ei siirretä EU:n ulkopuolelle. Fathom ei käytä evästeitä kävijäseurannassa lainkaan, ja Matomossakin on mahdollisuus olla hyödyntämättä evästeitä. Tällöin siis evästebannereitakaan ei mahdollisesti tarvittaisi.

Matomo Reporting Interface. Kuva: Matomo

Matomo on ominaisuuksiltaan pitkälti Google Analyticsin kaltainen. Siirtymä Google Analyticsista on myös tehty helpoksi, sillä historiadata on mahdollista siirtää Analyticsista Matomoon. Fathom puolestaan sopii yksinkertaisuuden ystävälle, joka haluaa kaiken oleellisen datan yhdessä selkeässä näkymässä.

Selvyyden vuoksi todettakoon, että Traficom ei ole tehnyt linjausta evästeettömästä kävijäseurannasta. Näkemyksemme kuitenkin on, että jos evästeitä ei seurannassa käytä, suostumustakaan ei tarvita, kunhan huolehtii siitä, että seurantatieto todella on kaikin puolin anonymisoitua eikä sitä välitetä eteenpäin.

Fathom Dashboard. Kuva: Fathom

Palvelinpohjainen seuranta Google Tag Managerilla

Kenties yllättävää, mutta myös Googlen omien työkalujen joukosta löytyy GDPR-ystävällisempi vaihtoehto: anonymisoitu palvelinpohjainen seuranta Google Tag Managerin avulla (server-side tagging). Kyse on vielä melko uudesta teknologiasta, jonka käyttö vaatii teknistä osaamista. Tämäkään ratkaisu ei ole ilmainen, sillä palvelintila tietenkin maksaa. Kun käyttää EU/ETA-alueella sijaitsevaa palvelinta, GDPR:n kanssa ei siltä osin tule ongelmaa.

Palvelinpohjaisessa seurannassa kerättävä data siirtyy sivuston palvelimelle, josta data lähetetään eteenpäin Analyticsiin – ei siis suoraan kävijän laitteen selaimesta evästeiden avulla Analyticsiin. Sivuston omistaja voi tällöin hallita, mitä tietoja kävijöistä kerätään. Esimerkiksi kävijöiden IP-osoitteet, jotka luetaan henkilötiedoiksi, voidaan kokonaan jättää keräämättä.

Anonyymi palvelinpohjainen seuranta ei edellytä evästeiden käyttöä, jos kerättävä tieto ei liity sivuston kävijään vaan ainoastaan sivuston käyttöön. Esimerkiksi mistä kävijä tuli sivustolle, kuinka kauan katsoi mitäkin sivua ja miltä sivulta poistui ovat sivuston käyttöä koskevia tietoja. Tietysti tämän rinnalla voi myös käyttää myös evästeitä, ja jos kävijä ne hyväksyy, on mahdollista kerätä myös tarkempaa kävijädataa.

Meiltä saat apua analytiikka-ratkaisuihin

Kaiken kaikkiaan on hyvä pitää mielessä, että ihmiset ovat yhä tietoisempia yksityisyydestään verkossa ja yhä paremmin perillä GDPR-asetuksen mukaisista oikeuksistaan. Organisaatioiden kannattaakin tarkastella tietosuojakäytäntöjään uusin silmin ja huolehtia, että kävijäseurannan ja tiedon keräämisen käytännöt suojaavat kävijän oikeuksia niin hyvin kuin nykyisessä tilanteessa on mahdollista.

Jos olet epävarma sivustosi tilanteesta GDPR:n suhteen tai haluat pohtia vaihtoehtoisia analytiikkaratkaisuja, meiltä saat apua.

Ota yhteyttä

  • This field is for validation purposes and should be left unchanged.
Shopping carts, ostoskärryjä jonossa
11.10.2021

Drupal Commerce – milloin se on paras valinta verkkokauppa-alustaksi?

Digitalisaation vauhdittamana liiketoiminta siirtyy vauhdilla verkkoon, mikä tekee verkkokauppa-alustojen valinnasta entistäkin kriittisempää. Erilaisia vaihtoehtoja on tarjolla runsaasti, mikä saattaa tuntua uuvuttavalta. Miten sitten tunnistaa juuri sinun yrityksellesi sopivin alusta?

Valintaprosessi kannattaa aloittaa tarkastelemalla yrityksesi liiketoiminnan tarpeita ja tavoitteita: mikä merkitys verkkokaupalla on nyt ja tulevaisuudessa? Kuinka paljon resursseja olet valmis investoimaan verkkokaupan kehittämiseen? Myös asiakkaidesi odotukset ja kokemukset ovat keskeisiä pohdinnan kohteita.

Kun pohjatyö on tehty, sinulla on jo melko selkeä kuva verkkokauppakonseptistasi ja sopivien alustojen kartoittaminen on huomattavasti helpompaa. 

Esimerkiksi perinteiseen tuotemyyntiin sopivat parhaiten pitkälle tuotteistetut ratkaisut kuten Magento sekä niin sanotut valmiskaupat kuten Shopify. Markkinointivetoiseen, sisältöjä painottavaan myyntiin puolestaan käyvät julkaisujärjestelmäpohjaiset ratkaisut kuten Drupal Commerce, WooCommerce tai Optimizely Commerce. Lisäksi on olemassa todellisia raskaan sarjan järjestelmiä, kuten IBM:n, SAP:n ja Oraclen ratkaisut, joita Suomessa näkee yleensä hyvin suurten yritysten käytössä.

Drupal Commerce

Koska Druidin juuret ovat Drupal-kehityksessä, meillä tietysti on sanamme sanottavana nimenomaan Drupal Commercesta.

Drupal Commerce erottuu edukseen räätälöitävyydellään sekä vahvoilla sisältömarkkinoinnin ja digitaalisen kaupankäynnin ominaisuuksilla. Tutustu Drupal Commercen toiminnallisuuksiin.

Commerce on integroitavissa saumattomasti Drupal-julkaisujärjestelmään, mikä mahdollistaa ketterän ja yhtenäisen hallinnan sekä verkkokaupan että verkkosivuston osalta.

Drupal Commerce on käytössä yli 80 000 sivustolla.

Räätälöitävistä räätälöitävin

Drupalista usein sanotaan, että sillä voi tehdä mitään vaan: kaikki onnistuu, kaikkeen on olemassa moduuli. Se onkin totta, sillä läpikotaisin modulaarisena järjestelmänä Drupal Commerce on muokattavissa mihin tahansa liiketoimintatapaan istuvaksi.

Drupal Commerce on markkinoiden joustavin verkkokaupparatkaisu, joka tarjoaa tarvittavat toiminnallisuudet kaikenlaiseen verkkomyyntiin vapaudesta tinkimättä: käyttöliittymän ja järjestelmän hallinnan työkalut sekä ulkoasu voidaan suunnitella juuri haluamallasi tavalla. Järjestelmän käyttö on helppoa eikä vaadi sinulta teknistä osaamista.

Kuulostaa hyvältä, eikö? Etenkin kokenut verkkokauppias, joka jo tietää, etteivät valmiskaupat hänen spesifejä vaatimuksiaan tue, todennäköisesti arvostaa Drupalin joustavuutta.

Räätälöitävyys ei kuitenkaan itsessään tuo vielä asiakkaalle arvoa, jos hän ei tiedä mitä haluaa ja tarvitsee. Niinpä laadimme Drupal Commercelle suuntaa-antavat valintaperusteet, joita vasten voit peilata yrityksesi liiketoiminnan kehitystarpeita.

Miksi ja milloin valita Drupal Commerce?

Drupal Commerce on varteenotettava vaihtoehto verkkokauppa-alustaksi ainakin seuraavissa tapauksissa:

Haluat käyttökokemukseltaan täysin yhtenevän verkkokaupan ja verkkosivuston.
Drupal Commerce on rakennettu enterprise-tason julkaisujärjestelmän päälle. Kun valitset Drupalin, saat samalta luukulta sekä julkaisujärjestelmän että verkkokaupan – saumattomasti toisiinsa integroituina. Voit hallinnoida verkkosivustoa ja verkkokauppaa yhdessä ja samassa järjestelmässä.

Haluat korostaa sisältöjä, et tuotteita.
Kun kyse ei ole pelkästä suoraviivaisesta tuotteiden myynnistä vaan myös myyntiä tukevista markkinoinnillisista sisällöistä, verkkokauppajärjestelmän sisältävä julkaisujärjestelmä on ehdoton valinta. Drupal Commerce yhdistää erilaiset sisällöt ja tuotteet saumattomasti toisiinsa monipuolisten sisältömarkkinoinnin työkalujensa ansiosta. Pitkälle tuotteistetut verkkokaupparatkaisut eivät tähän taivu.

Verkkokauppasi tulee voida integroida erilaisiin taustajärjestelmiin.
Drupal Commercella onnistuu verkkokaupan integrointi oikeastaan mihin tahansa muuhun järjestelmään, kuten vaikkapa markkinoinnin automaatio-, tuotetiedonhallinta- tai asiakkuudenhallintajärjestelmään.

Yrityksesi tekee digitaalista kauppaa.
Kyse voi olla esimerkiksi jäsenpalvelusta tai tilauskanavasta – mistä tahansa digitaalisesta tuotteesta. Drupal Commerce tarjoaa kilpailijoitaan edistyksellisimmät työkalut näihin tarpeisiin, kuten vaikkapa lisenssien ja tiedostojen hallintaan.

Verkkokauppasi on suuri ja budjettisi lähentelee kuusinumeroista.
Drupal Commercella tuskin kannattaa rakentaa kovinkaan pientä ja yksinkertaista verkkokauppaa. Toki se soveltuu myös perinteisten, tuotemyyntiin keskittyvien verkkokauppojen alustaksi, mutta sen potentiaalista jää tällöin paljon hyödyntämättä eikä ratkaisu ole kustannustehokas. Monipuolisena ja joustavana järjestelmänä Drupal Commercella voidaan toteuttaa monimutkaisetkin kaupankäynnin kiemurat ja luoda rikkaita ostokokemuksia yhdistämällä kaupankäynti sisältöihin.

Haluat avoimen lähdekoodin ratkaisun.
Kun valitset Drupal Commercen, et maksa lisenssimaksuja etkä ole sidoksissa yhteen toimittajaan. Avoin lähdekoodi mahdollistaa kustannustehokkaan kehitystyön ja monipuoliset laajennusmahdollisuudet. Valtavan kehittäjäyhteisön ansiosta järjestelmä on erittäin korkealaatuinen, toimintavarma ja tietoturvallinen. Suljetut järjestelmät ovat tyypillisesti rajoittuneempia niin räätälöitävyyden, laajennettavuuden kuin ulkoasunkin osalta.

Haluat pitkäikäisen ratkaisun, joka kasvaa ja kehittyy liiketoimintasi mukana.
Tulevaisuus kannattaa pitää mielessä alustaa valittaessa. Juuri joustavuutensa ansiosta Drupal Commerce mukautuu verkkopalvelusi ja liiketoimintasi muuttuviin tarpeisiin, oli kyse sitten uudenlaisista sisällöistä, uusista kaupanteon tavoista, asiakaskohtaisista räätälöinneistä tai volyymin kasvusta.

Tutustu Drupal-ratkaisuihimme.

Tekstiä on päivitetty 24.4.2024.

Kuten Drupal-projektin perustaja ja vetäjä Dries Buytaert syyskuisessa State of Drupal -puheessaan totesi: “Drupal is for ambitious digital experiences. It isn’t about how big you start, it’s about how you hope to grow.” 

Haluatko tietää lisää Drupal Commercesta? Lähetä viesti, niin katsotaan, millä tavoin se voisi palvella sinun yrityksesi tavoitteita.

28.09.2021
Pasi Järnstedt

Mikä Drupal-ylläpidossa maksaa?

Taas joku päivitys! Sivustonihan toimii aivan hyvin, onko pakko päivittää? Kyllä vaan, tietoturva- ja järjestelmäpäivitykset todellakin on tehtävä, jos haluat verkkosivustosi pysyvän toimivana ja turvallisena. Sivustosi kun toimii hyvin juuri siksi, että järjestelmän tietoturvasta ja kehityksestä huolehditaan.

Mutta miksi sivustoa on päivitettävä niin usein? Ja ennen kaikkea: mikä Drupal-ylläpidossa oikein maksaa?

Älä ota teknologiavelkaa

Jos omistat talon, annatko paikkojen rapistua, ennen kuin lopulta ryhdyt massiiviseen remonttiin (ja pahimmassa tapauksessa joudut toteamaan, että on järkevämpää rakentaa uusi kuin remontoida vanhaa)? Vai korjaatko mieluummin vähän kerrallaan aina tarpeen tullen?

Verkkosivuston teknologiavelan hallinnassa on kyse samasta asiasta. Drupal-järjestelmää – sen ydintä sekä moduuleja – kehitetään jatkuvasti. Jos päivityksistä ei huolehdita, sivustosi jää kehityksestä jälkeen ja sen teknologiavelka kasvaa. Kun sitten viimein ryhdytään suureen päivitysurakkaan, joudutaan usein ojasta allikkoon: päivitykset aiheuttavat ongelmia, kun vanhentuneet moduulit eivät enää suostu tekemään yhteistyötä vaan pistävät sivustosi sekaisin.

Drupal-järjestelmään julkaistaan kahdenlaisia tietoturvapäivityksiä: Drupal-ytimen päivitykset tehdään aina, koska kyse on kirjaimellisesti ydinasioista, moduulipäivitykset silloin, kun kyseinen moduuli on verkkosivustollasi käytössä. Hyvin yleinen on esimerkiksi Webform-moduuli: palikka, jolla voi rakentaa sivustolle lomakkeita.

Vaikka jokin moduuli ei olisi sinulle erityisen tärkeä tai edes aktiivisessa käytössä, on tärkeää pitää se ajan tasalla, jotta sivustosi päivitykset sujuisivat ongelmitta. Kun Drupal-moduuleita kehitetään, niiden toimintalogiikka voi muuttua. Tämän vuoksi vanhentuneet moduulit voivat lakata toimimasta järjestelmäpäivityksen yhteydessä tai rikkoa jotain muuta sivustollasi. Ne myös luovat tietoturva-aukkoja ja näin altistavat sivustosi tietoturvamurroille.

Kun verkkosivustosi on teknisesti stabiili ja ajantasainen, päivitysten yhteydessä harvemmin tulee yllätyksiä. Vähemmän yllätyksiä tarkoittaa tietysti vähemmän lisätyötä meille ja vähemmän yllättäviä kustannuksia sinulle.

Omakoodari palveluksessasi

Meillä Druidilla Magical Supportin kiinteä kuukausihinta takaa sinulle tarvittavat resurssit verkkosivustostasi huolehtimiseen – toisin sanoen omakoodarin tai useamman.

Tällä resurssivarauksella pystymme varmistamaan riittävän nopean reagoinnin etenkin kriittisissä tilanteissa tai tietoturvapäivityksissä. Ripeä toiminta on tärkeää, sillä tietoturva-aukot ovat helposti hakkereiden hyödynnettävissä. Valvomme myös sivuston tietoturvapäivitysten tilaa sekä hostingin toimivuutta automaattisen valvonnan avulla.

Omakoodari oppii tuntemaan sivustosi hyvin, mikä näkyy ylläpidon ja pienkehityksen tehokkuutena ja virheettömyytenä. Slack-kanava on aina auki ja voit keskustella omakoodarisi kanssa suoraan ilman turhia välikäsiä.

Varsinaisen koodaustyön laskutamme erikseen tuntityönä. Työmääräarviomme ovat sitä tarkempia, mitä tutumpi sivustosi meille on. Tässäkin mielessä omakoodarista on paljon hyötyä puolin ja toisin. Vaikkei henkilövaihdoksilta aina voi välttyä, aktiivisella yhteistyöllä pysymme hyvin kartalla sivustosi tilanteesta.

Drupal vaatii huomiota mutta palvelee hyvin

Drupal on ohjelmistotuotteena hyvin joustava ja monipuolinen. Se räätälöidään aina asiakkaan tarpeiden mukaiseksi, ja näitä räätälöintejä on muokattava ja päivitettävä.

Jos sivustosi ei ole alun perin meidän rakentamamme, on vaikea tietää etukäteen, miten päivitykset vaikuttavat räätälöinteihin – ennustajia emme sentään ole, vaikka paljon Drupalista tiedämmekin. Joskus sivuston taustalla voi olla hyvinkin erikoisia ratkaisuja, jotka paljastuvat meille vähitellen, kun tutustumme sivustoon yhä paremmin. Ennustettavuuden haaste ei toki koske vain Drupalia vaan se on räätälöityjen ratkaisujen kohdalla yleinen.

Myös Drupalin ympäristö muuttuu, mikä usein edellyttää muutoksia myös Drupal-järjestelmään. Esimerkiksi selaimet ja näyttöjen resoluutiot kehittyvät, ja teknisen maailman ulkopuoleltakin kumpuaa uusia vaatimuksia ja tarpeita: saavutettavuus, evästeiden hallinta ja analytiikka ovat nyt ajankohtaisia kehityskohteita.

Pyrimme aina rakentamaan mahdollisimman pitkäikäisiä ja helposti muokattavissa olevia verkkosivustoja. Täysin tulevaisuuden kestävää valmista Drupal-ratkaisua ei kuitenkaan ole olemassa vaan sivuston säilyttäminen ajanmukaisena vaatii aina työtä. Jos työn tekee hyvin, Drupal palvelee muuttuvia tarpeitasi uskollisesti vuosikausia, ellei vuosikymmeniä.

Haluatko tietää lisää ylläpito- ja pienkehityspalveluistamme?

Kirjoittaja

Pasi Järnstedt

Director, Production
User experience creates competitive edge
25.01.2021
Mikko Hämäläinen

Käyttökokemus ratkaisee – panosta siihen fiksusti

Verkkopalveluiden muutospaineet keskittyvät usein ulkoasuun ja toiminnallisuuteen. Kuluttajakaupassa rahaa ei tehdä tietorakenteilla ja taustajärjestelmillä, vaikka ne ovatkin kriittinen osa kokonaisuutta.

Jos kauppa ei tao verkossa tulosta, kutsuu järkevä asiakas paikalle tuskan määrästä riippuen joko palvelumuotoilijan tai käyttöliittymäsuunnittelijan. Verkkopalvelun pintaa sitten hierotaan, kunnes sen käyttökokemus on kohdillaan ja kassavirta kasvaa toivotulle tasolle.

Käyttöliittymä ja taustajärjestelmä erillään

Perinteinen ohjelmistokehitysmalli kytkee käyttöliittymän ja sen taustajärjestelmän tiukasti toisiinsa. Jos toiseen koskee, joudutaan muokkaamaan toistakin. Tuplatyö on hidasta ja molemmat pitää tietenkin testata huolellisesti, jotta homma ei karahda karille heti palvelun julkaisun jälkeen. Kehityksen hitaus ja kalleus summaa oivasti sen, minkä takia usein tyydytään keskinkertaiseen käyttökokemukseen eikä palveluihin uskalleta koskea enää julkaisun jälkeen.

Meidän ratkaisumme on erottaa käyttöliittymä ja taustajärjestelmä erillisiksi kokonaisuuksiksi, jotka kuitenkin pelaavat yhteen. Näin vältämme tuplatyön, kehitystyö sujuu näppärästi eikä korkea hintalappu säikäytä asiakasta. 

Suunnittelu ja toteutus yhdessä

Suunnittelu on projektin tärkein osuus, jossa tekniikka ja tunteet nidotaan yhteen. Näin syntyy loppuasiakkaan käyttökokemus. Kuten kaikki myyjät tietävät, on kaupanteko myös tunnepeliä. Siksi positiivinen erottautuminen perusverkkokaupasta tai ajanvarausjärjestelmästä palkitaan varmasti. Meillä designerit ovat aina osa toteutustiimiä, sillä projekteja toteutetaan ketterästi vaiheittain ja tiivis kommunikaatio koodaajaporukan kanssa on välttämätöntä.

Tekniikan kehittymisen myötä käyttöliittymien suunnittelu ja toteutus on erikoistunut omaksi taiteenlajikseen, ja niinpä meilläkin on monia siihen erikoistuneita osaajia.

Käyttöliittymän toteutustekniikka valitaan aina asiakastarpeen mukaan. Frontend-puolella pinnalla olevat tekniikat vaihtuvat viikoittain ja muotivirtausten huipulla pysyminen on kallista ja turhauttavaa. Onkin järkevää valita vakiintuneita ja luotettavia ratkaisuja, jotka todennäköisesti ovat tuettuja vielä parinkin vuoden päästä.

Taustajärjestelmänä käytämme useimmiten Drupalia sen joustavuuden ja valmiiden komponenttien takia. Drupal on laajoihin kokonaisuuksiin tarkoitettu avoimen lähdekoodin sisällönhallintajärjestelmä.

Se on helppo saada keskustelemaan muiden asiakkaan käytössä olevien järjestelmien, kuten autentikointipalveluiden, tilausjärjestelmien tai markkinointiautomaatiosoftien kanssa. Valmistuote taustajärjestelmänä säästää aikaa ja mahdollistaa keskittymisen käyttökokemuksen kehittämiseen. Palvelu saadaan nopeasti markkinoille, minkä jälkeen sen käyttökokemusta on helppo viilata käyttäjiltä saadun palautteen perusteella.

Onko palvelusi käyttöliittymä myyvä?

Kuluttaja käyttää palveluita onnellisen tietämättömänä taustajärjestelmän hienouksista. Hän on kuitenkin yhä vaativampi ja valikoivampi palveluiden tarjoaman kokemuksen suhteen. Yhä useammin juuri palvelun käyttökokemus ratkaisee, ostaako kuluttaja vai ei. Jos ostoaie ei realisoidu, voimme yhdessä asiakkaamme kanssa kehittää käyttöliittymää myyvemmäksi aiempaa helpommin ja nopeammin.

Ota yhteyttä ja kerro meille haasteistasi, niin etsitään niihin yhdessä ratkaisut.

Kirjoittaja

DrupalCon Seattle ryhmäkuva
25.05.2020

Drupal 9 on täällä – päivitys voi olla pikkujuttu tai suuri ponnistus

Drupal-sisällönhallintajärjestelmästä julkaistaan uusi versio 3.6.2020. Drupal 9 -versioon on siirryttävä viimeistään marraskuussa 2021, jos käytössäsi on nyt Drupal 8. Sen sijaan Drupal 7 saa pidemmän siirtymäajan marraskuuhun 2023 asti. Näiden takarajojen jälkeen tuki aiemmille 7- ja 8-versioille loppuu eli tietoturvapäivityksiä ei enää ole niihin saatavilla. Mikä muuttuu uuden version myötä? Kuinka suuri työ järjestelmän päivittäminen on?

Drupal logo


Parhaat uutiset heti alkuun: järjestelmän päivitys käy tuossa tuokiossa, jos käytössä on ajantasainen Drupal 8. Mikään ei käytännössä muutu. Tämä meidän sivustomme esimerkiksi pyörii jo Drupal 9:n beta-versiolla eikä päivityksessä kauan nokka tuhissut. Kaikki tapaukset eivät kuitenkaan ole yhtä suoraviivaisia, ja etenkin Drupal 7 -pohjaisten sivustojen päivitys tulee olemaan iso ponnistus.

Drupal 8 päivittyy riskittömästi ja helposti 

Monet Drupalin aiemmat suuret versiopäivitykset ovat kieltämättä olleet melkoisen työläitä ja hankaliakin, kun verkkopalvelu on päivityksen myötä täytynyt käytännössä täysin uudistaa teknisesti. 

Nyt kaikki on kuitenkin toisin. Drupalia ei tällä kertaa keksitä uudelleen ja kyseessä on vuosikymmenen helpoin iso versiopäivitys – edellyttäen, että verkkopalvelunne pyörii tällä hetkellä uusimmalla Drupal 8 -versiolla. Drupal 9 ei nimittäin juurikaan eroa siitä.

Teknisesti Drupal 9 on ikään kuin Drupal 8:n viimeinen versio, josta vanhentunut koodi on siivottu pois ja riippuvuudet kolmansien osapuolten järjestelmiin päivitetty. Siirtymä on siis todennäköisesti helppo ja sujuva, eikä isoja uudistuksia verkkosivustolle tarvitse tehdä.

Perussivuston päivitys 9-versioon sujuu tuosta noin vain, kunhan sivuston päivitykset ovat ajan tasalla eikä käytössä ole vanhentuneita moduuleja tai rajapintoja. Jos sivustollanne on käytössä lisämoduuleja, on ensin tarkistettava, ovatko ne päivitysvalmiita. Myös itse tehty, räätälöity koodi on tarkistettava ennen versiopäivitystä.

Entä jos käytössä on vielä Drupal 7?

Lyhyestä virsi kaunis: verkkosivu-uudistus kannattaa pikkuhiljaa ottaa pohdintaan ja agendalle, sillä tiedossa on suurehko projekti, jonka deadline häämöttää 1.11.2023 Drupal 7 -version tuen loppuessa*. 

Drupal 7 on sekin yhä laajassa käytössä, mutta päivitys siitä 9-versioon on väistämättä aika paljon mutkikkaampi homma, tai ainakin työläämpi. Drupal 7 -verkkosivusto on uudistettava teknisesti, jotta siirtymä 9-versioon on mahdollinen. Tämä johtuu siitä, että versioiden 7 ja 8 välillä Drupalin teknologia uudistettiin täysin. 

Hyvä uutinen on kuitenkin se, että tämä jää hyvin todennäköisesti viimeiseksi suureksi versionpäivitysurakaksi, joka verkkopalveluunne on koskaan tehtävä. 

Drupalin tuotekehityksessä on nimittäin siirrytty kankeahkosta, projektiluontoisesta kehitystyöstä nykyaikaisempaan ja ketterämpään jatkuvaan kehitykseen. Sen sijaan, että rysäytetään koko järjestelmä uuteen uskoon muutaman vuoden välein, uusia ominaisuuksia ja parannuksia julkaistaan nopeammalla syklillä ja pienemmällä päivitysvaivalla.

Miksi Drupal 9:ään kannattaa siirtyä nyt eikä myöhemmin?

Ominaisuuksiltaan Drupal 9 on samanlainen kuin Drupal 8. Sen tarkoitus on tarjota mahdollisimman vaivaton siirtymä Drupal 8:sta, joten uudistuksia on tehty vain konepellin alla tietoturvatuen mahdollistamiseksi marraskuusta 2021 eteenpäin. Eli eipä tässä vielä kiirettä?

No, ei ehkä tulipalokiirettä, mutta vahvasti suosittelemme päivittämistä mahdollisimman pian, sillä jatkossa uusia ominaisuuksia ja parannuksia julkaistaan kahdesti vuodessa pienemmissä päivityksissä. Seuraava tällainen päivitys, Drupal 9.1.0, on määrä julkaista tämän vuoden joulukuussa. 

Esimerkiksi admin-käyttöliittymän modernisointi on parhaillaan loppusuoralla, mikä tuo parannuksia sivuston ylläpitoon ja sisältöjen hallintaan. Kun päivitätte verkkopalvelunne Drupal 9:ään hyvissä ajoin, pysytte mukana järjestelmän kehityksen aallonharjalla ja pystytte hyödyntämään jatkuvan kehitysprosessin tuotokset. 

Me autamme Drupal-järjestelmän päivityksissä

Olemme Suomen kovimpia Drupal-tekijöitä ja tunnemme Drupalin kuin omat taskumme. Ota yhteyttä niin katsotaan, miten teidän kannattaa edetä päivityksissä.


*Edit 4.5.2022: Drupal 7 -järjestelmän tukea on päätetty jatkaa 1.11.2023 asti. Aikaraja on päivitetty tekstiin.

Yläkuva: “Preparing for the group photo at DrupalCon Seattle” / Rob Shea / CC BY-SA 2.0


 

hampy2
20.02.2020
Mikko Hämäläinen

PWA, SPA ja headless – ostajan opas nykyaikaisiin verkkopalveluratkaisuihin

Verkkopalveluita uusittaessa puhutaan kasvavissa määrin headless tai PWA-toteutuksista – ainakin jos ostaja on vähän teknisempi. Headlessin edut eivät kuitenkaan rajoitu vain teknisiin ominaisuuksiin, vaan niillä voidaan saavuttaa merkittävästi parempi käyttökokemus, mikä puolestaan parantaa palvelun tuottamaa liiketoimintahyötyä. Pureudutaanpa tarkemmin näiden termien taustoihin ja hyötyihin.

Headless-ratkaisut

Headless-ratkaisussa palvelun taustajärjestelmä eriytetään käyttöliittymästä eli asiakassovelluksista. Käyttöliittymät voidaan rakentaa erikseen tarkoituksenmukaisella tekniikalla, kuten JavaScriptillä toteutettu web-käyttöliittymä tai natiivi iOS-mobiilisovellus. Tai molemmat: sama taustajärjestelmä voi palvella useita käyttöliittymiä tai asiakassovelluksia.

Tämä toteutustapa tuo merkittäviä liiketoimintaetuja, kuten taustajärjestelmän ja käyttöliittymän riippumattomuuden toisistaan. Saman järjestelmän kautta voidaan tuottaa sisältöä sekä verkkopalveluihin että mobiilisovelluksiin. Toisaalta jos liiketoiminnan kehittyessä taustajärjestelmä halutaan vaihtaa, vaikutukset asiakassovelluksiin ovat minimoitavissa. Uusia asiakassovelluksia voidaan myös kehittää liiketoiminnan tarpeiden mukaan joustavasti.

Single Page Application (SPA)

Headless-arkkitehtuuri mahdollistaa web-sovelluksen käyttöliittymän toteuttamisen täysin sovellusmaiseksi Single Page Application (SPA) -sovellukseksi. Se tarkoittaa nopeampaa ja monipuolisempaa käyttökokemusta. Perinteisessä webissä kuvakkeen klikkaaminen johtaa sivun latautumiseen, mutta SPA hoitaa lataukset taustalla, jolloin palvelu toimii sulavammin. Klassinen verrokki on Googlen sähköpostisovellus Gmail.

SPA-sovellukset kehitetään yleensä JavaScriptillä, jonka kielen ja komponenttien kehitys on tuonut sen merkittäväksi osaksi moderneja web- ja mobiiliratkaisuja. JavaScriptin avulla verkkopalveluun voidaan toteuttaa ominaisuuksia, jotka hyödyntävät paikannusta ja kameraa sekä puhesynteesiä, offline-tallennusta ja bluetoothia.

SPA on käytännössä selainikkunassa toimiva sovellus, joka käyttää internet-yhteyttä tietojen päivittämiseen. Se voidaan myös paketoida asennettavaksi sovellukseksi esimerkiksi Apache Cordovan tai Adoben PhoneGapin avulla ja levittää sovelluskauppojen kautta. Tälläisen paketoinnin pienehkönä haittana on ollut ainakin aiemmin käyttökokemuksen puutteet – kuluttaja kuvittelee käyttävänsä natiivisovellusta, mutta sovelluksen käyttöliittymä ei pohjaudukaan puhelimen standardikomponentteihin vaan on toteutettu HTML:llä.

Mikäli sovellusta ei haluta levittää sovelluskauppojen kautta, tai levitykseen halutaan enemmän joustavuutta, voidaan sovellus rakentaa progressiiviseksi web-sovellukseksi.

Progressive Web Application (PWA)

Progressive Web Application (PWA) on webbiin rakennettu sovellus, jonka voi asentaa puhelimeensa. Puhelimessa ollessaan se toimii itsenäisesti ja käyttää taustapalvelua (se headless-ratkaisu) tarpeen mukaan esimerkiksi maksutapahtumiin tai tuotetiedon lataamiseen. PWA-sovelluksen etuja ovat nopeus, hakukoneystävällisyys, helppo levitettävyys ja päivitettävyys sekä joustavuus, jonka ansiosta käyttäjä voi valita asentaako sovelluksen puhelimeensa vai käyttääkö sitä selaimen kautta.

Esimerkiksi lääkärikeskuksen ajanvarauspalvelu voisi hyötyä PWA:sta: satunnainen käyttäjä voi varata ajan verkon kautta, mutta työterveysasiakas voi asentaa sovelluksen puhelimeensa. Palvelu voi tallentaa käyttäjän kirjautumistiedot, jolloin jatkoajanvaraukset sujuvat nopeasti.

Googlen PWA-sovelluksista tekemät case-studyt vakuuttavat: AliExpress nosti uusien käyttäjien konversioita 104%, tuplasi sessiossa vierailtujen sivujen määrän ja kasvatti sessiokohtaista käyttöaikaa 74%. Brittiläinen vaatebrändi George.com mm. kasvatti palvelunsa latausnopeutta keskimäärin 3,8 -kertaiseksi, lisäsi konversioiden määrää 31% ja sivuvierailujen määrää 20%.

Kuinka paljon modernit ratkaisut maksavat?

Hienompien palveluiden kehittäminen toki maksaa, mutta kustannukset riippuvat lähtötasosta ja tavoitteista. Yksinkertaisimmillaan verkkopalveluun lisätään PWA-ominaisuudet nopeasti, mutta parhaan hyödyn saa, kun suunnittelu tehdään huolellisesti ja otetaan ratkaisuista kaikki irti. Jos verkkopalvelu on jo toteutettu SPA-sovelluksena, voidaan pohjatyötä hyödyntää uudistuksessa.

Mikäli olet uudistamassa nykyistä tai rakentamassa uutta palvelua, kannattaa harkita modernien tekniikoiden hyödyntämistä. Perinteisilläkin ratkaisuilla pärjää, jos palvelu on yksinkertainen tai ei sisällä juurikaan käyttäjätoiminnallisuutta.

Annan mielelläni lisätietoja eri ratkaisuvaihtoehdoista. Ota rohkeasti yhteyttä.

Tekstiä päivitetty 23.8.2024.

Kirjoittaja

laptop table coffee light
12.03.2019
Marko Korhonen

And now for something completely different

Druid tunnetaan Drupal-kehittäjänä. Sitä me olemmekin. Useimmat projektimme voidaan sijoittaa Drupal-kategoriaan, kun sisällönhallintajärjestelmää tarvitaan. Drupal ei kuitenkaan aina ole oikea työkalu tehtävään. Kuten Dries Buytaert sanoi Wienissä järjestetyssä DrupalCon-tapahtumassa: “Drupal ei ole enää tarkoitettu yksinkertaisiin sivustoihin”, eikä Drupal yleisesti ottaen sovi jokaiseen käyttötarkoitukseen. Se on kuitenkin erittäin hyvä vaihtoehto oikeanlaisissa projekteissa.

Olemme viime aikoina tehneet joitakin ei-Drupal-projekteja, joten nytpä kerron teille yhdestä sellaisesta. Tässä tapauksessa ei-Drupal kuitenkin tarkoittaa, että teknologiapaketti ei ollut meille aivan uusi, sillä tunnemme jo entuudestaan ohjelmointikielet (PHP ja JavaScript) hyvin.

Tarve  – say no more, say no more

Asiakkaallamme oli projektin alussa jokseenkin strukturoimaton tarve, sillä asiakkaan kohdemarkkina on suuren mullistuksen kourissa. Tämän kyseisen markkinan digitaalinen ympäristö on muutostilassa, ja – kuten aina – muutokseen on osattava sopeutua. Projektin alkaessa meillä oli tiedossa, että sovelluksen tulee olla mobiiliystävällinen ja sen päätoimintona tulisi olla käyttäjien välisen kommunikaation mahdollistaminen. Siitäpä sitten kehitysjonoa luomaan!

Mobiili? Ajattelimme, että PWA on oikea valinta. Me Druidilla olemme olleet PWA:n faneja jo hyvän tovin ja olemme kirjoittaneet kyseisestä hienosta konseptista ennenkin. Progressiiviset verkkosovellukset ovat tulevaisuutta, ja niissä on paljon potentiaalia. PWA on myös hyvä vaihtoehto silloin, kun sovelluksia halutaan jakaa ilman App Storea tai Play Kauppa -palvelua. Jotkin sisäiset työkalut voitaisiin toimittaa esimerkiksi intraneteistä. Kerron PWA:sta lisää tuonnempana. Joka tapauksessa ajattelimme, että PWA sopisi tarkoituksiimme erinomaisesti.

Kommunikaatio? Wink wink nudge nudge. Say no more, say no more. Tämä herätti ideoita tietorakenteista ja käyttöliittymästä.

Teknologiapaketti – And Now for Something Completely Different

Päätimme olla rohkeita ja kokeilla aivan uusia komponentteja uudessa projektissa – frontendissä, backendissä, tietokannassa ja infrastruktuurissa. Tokihan taustalla oli tietoa ja oppimista soveltuvuusselvitysten ja vastaavan kautta. Ja kuten sanoin, teknologia oli meille jo tuttua. Tai ainakin osalle tiimimme jäsenistä.

Jos aloitetaan ihan pohjalta, valitsimme Dockerin liimaksi, joka pitää komponentit ja ympäristöt kasassa. Luonnostelimme nopeasti Docker-osuudesta avoimen lähdekoodin version ja julkaisimme sen omana juttunaan nimellä Stonehenge. Stonehenge on usean projektin paikallinen kehitysympäristö ja työkalusetti Dockerissa. Projektissa käytetään Stonehengeä kehittäjän työkaluna homman pyörittämiseen. Koska paikallinen kehitysympäristö on melko yleinen ongelma kehittäjille, ajattelimme, että tästä voisi olla hyötyä muillekin. Sen vuoksi erottelimme tämän toiminnallisuuden projektista ja julkaisimme sen erillisenä työkaluna.

Pohjimmiltaan Stonehenge tarjoaa meille paikallisia URLeja ja välityspalvelimen käsittelemään liikenteen projekteissamme. Välityspalvelin tehtiin Traefikilla, joka on suoranainen tuulahdus raikasta ilmaa verrattuna aiempiin samaa tarkoitusta varten käytettyihin teknologioihin. Voin sanoa, että se toimii ja suoriutuu oikein mainiosti tuotantopuolellakin!

Projekti itsessään määrittelee sovelluksemme tarjoamat palvelut – perusjutut, kuten Nginxin, PHP:n, tietokannan ja komentorivin, sekä kaikkien niiden suhteet. Tähän käytämme Docker Composea.

Sovellukseksi itsekseen valitsimme Symfony 4:n backendiin ja Reactin frontendiin. Symfony periaatteessa luo standardin JSON-ohjelmointirajapinnan, jonka React-sovellus sitten käyttää. Yksi syy Symfonyn valintaan oli tietokantamme (mikä se voisi olla?) tukeminen Doctrinen kautta. Kun arvioimme eri kehikkoja backendiin (PHP), tutkimme muiden kehittäjien käyttökokemuksia, ja vaikutti siltä, että kenelläkään ei ollut pahaa sanottavaa Symfony 4:stä. Ja sen käyttö olikin todella mieluisaa. Joillakin meistä oli jo kokemusta Symfonystä, sillä Drupal 8 on rakennettu Symfony 3:n päälle. Siitä huolimatta meillä oli vielä paljon uusia asioita opittavaksi.

Tietokanta. MySQL, MariaDB, PostgreSQL vai jotakin muuta? Päädyimme valitsemaan MongoDB:n, jotta hyppymme tuntemattomaan olisi täydellinen. MongoDB on niin kutsuttu NoSQL-tietokanta, missä data tallennetaan objekteina rivien sijaan. Tämä on hyödyllistä sellaisen datan kanssa, joka voi olla rakenteeltaan hyvin erilaista (lue: dokumentissa voi olla dataa, jota muissa samaa tyyppiä olevissa dokumenteissa ei ole). Lisäksi skeemaa ei tarvitse määritellä etukäteen (ja päivittää), vaan se elää sen mukaan, kuinka käytät dokumentti-objekteja.

Reactista en itse osaa kirjoittaa kovinkaan paljoa, mutta kollegani Kristian on kirjoittanut alle pienen kertauksen sen käytöstä projektissamme. Varoituksen sana kuitenkin: Javascript-maailman riippuvuushelvetti ja valtaisa määrä samanlaisia mutta erilaisia työkaluja saattavat joskus tehdä kehittäjän elämästä ikävää.

Lainaus Kristianilta:

“Oli aika mahtavaa päästä käyttämään Reactia isossa projektissa. Yleisesti ottaen React oli varsin mutkaton. Teimme toki joitain virheitä aikaisessa vaiheessa projektia, mikä pakotti tekemään refaktorointeja.

Alkuperäinen suunnitelma oli renderöidä suurin osa sovelluksesta Twigillä, jolloin vain kommunikaatiopuoli olisi ollut Reactin alaisuudessa. Lopulta päädyimme siirtämään suurimman osan sovelluksesta Reactiin. Se tarkoittaa, että emme luoneet minkäänlaista reititysjärjestelmää emmekä suunnitelleet storen arkkitehtuuria. Onneksi refaktorointi onnistui melko tuskattomasti ongelmien ilmetessä.

Minulle hauskin osa projektia oli MobX:n käyttäminen. Olen halunnut kokeilla sitä jo pitkän aikaa, joten olen tyytyväinen, että sain tilaisuuden käyttää sitä kaupallisessa sovelluksessa. MobX on pohjimmiltaan tilanhallintatyökalu, joka perustuu tarkkailijamalliin. Kaikki tarkkailijat, jotka seuraavat tarkkailtavaa muuttujaa, päivittyvät kuin taikaiskusta aina kun tarkkailtava arvo muuttuu.

Jos voisin muuttaa yhden asian seuraavaa kertaa varten, käyttäisin varmaankin mieluummin MobX State Tree -kirjastoa, joka on kantaaottavampi versio MobX:stä. Se käyttäytyy Reduxmaisesti, mutta ilman Reduxin kuormaa.”

Siinäs kuulitte.

Kun hyppäsimme PWA-remmiin, loimme Reactin avulla yhden sivun sovelluksen, joka auttaa joissain PWA:n puolissa. No mitä PWA sitten tekee? Sitä voi ajatella sovelluksena, joka on periaatteessa verkkosivu. Se tarkoittaa, että App Storea tai Play Kauppaa ei tarvita jakeluun. Sovellus päivittyy, kun verkkosovellus päivitetään. Siinä on muutamia ominaisuuksia, jotka tekevät kokemuksesta “sovellusmaisen”: tiedon tallentaminen välimuistiin prosessin nopeuttamiseksi, standalone-tila (oman, ilman selainkomponentteja toimivan käyttöliittymän tekemiseen), pääsy joihinkin mobiiliohjelmointirajapintoihin sekä offline-toiminnot. Lisäksi on mahdollista käyttää Push-ilmoituksia, mutta ne toimivat vain Androidilla. Lisätietoa voi lukea 2018 State of Progressive Web Apps -artikkelista.

PWA on huvittavaa kyllä jotakin, mitä Apple visioi jo vuonna 2007 julkistaessaan alkuperäisen iPhonen. Google ajaa yhä vahvasti nykyistä hommaa, joten periaatteessa PWA toimii paremmin Android-luureilla.

Onni suosii rohkeaa, ja uskon vahvasti, että PWA on sovellusten tulevaisuus – ja se on erityisen hyödyllinen, kun luodaan työkaluja organisaatioille ja yrityksille.

Siinä oli teille melko pitkä avautuminen teknisistä jutuista. Eiköhän vedetä vähän henkeä tässä välissä.

“And now a film about a man with a tape recorder up his brother’s nose.”

GDPR-aspekti

Niin, se pahamainen GDPR. Tällä hetkellä meillä ei ole varsinaista käyttäjädataa, joten meillä ei ole hätää. Me suunnittelimme koko kehitystyön mallidatalla, mikä osoittautui hyvin hedelmälliseksi projektin aikana. Lisäsimme datafikstuureja, jotka täyttivät tietokantamme mallidatalla. Joten siinä mielessä noudatamme täysin GDPR:ää kehitystyötä tehdessämme. Emme tarvitse tuotantodataa.

Tästä oli myös odottamatonta hyötyä. Testatessa huomasimme pian, että kykenimme käyttämään tätä luotua dataa testeissämme. Aika siistiä, eikö? Todellakin!

“In this picture, there are 47 people. None of them can be seen.”

Seuraavat vaiheet

Projekti on tällä hetkellä MVP-vaiheessa ja on siirtymässä “kenttätesteihin”. Toivottavasti loppukäyttäjät pitävät siitä, mitä olemme tehneet. Testaukset toteutetaan kontrolloidusti pienissä ryhmissä. Se tarkoittaa, että käytämme määrättyä, generoitua dataa, joka sopii kullekin testiryhmälle. Lisäksi kontrolloimme MVP-vaiheen PWA-puolta. Tällä hetkellä se toimii parhaiten Androidilla, joten käytämme sitä alustana testeissämme.

“Now, what’s to be done? Tell me sir, have you confused your cat recently?”

Kookospähkinästä

Olemme oppineet paljon! Tämä tarkoittaa, että opitut asiat vaikuttavat jo uusiin projekteihin ja jonkin verran myös tapoihin, joilla hoidamme vanhoja projekteja. Aiomme kopioida backend-kaman uuteen API-keskeiseen projektiin ja Docker-jutut ovat kehittyneet jo hyvinkin käytettävään muotoon. Lisäksi avoimen lähdekoodin projektin (Stonehenge) julkaiseminen oli plussaa!

Hienoin osa ainakin minulle on ollut kaiken tämän jakaminen yhä suuremmalla joukolle druideja, jolloin kaikkea opittua voidaan hyödyntää laajemmalla mittakaavalla.

“Wait a minute — supposing two swallows carried it together?”

Marko Korhonen
CTO, The Ministry of Silly Walks

Kirjoittaja

Marko Korhonen

Platform Engineering Lead
Drupalgeddon
08.06.2018
Mikko Hämäläinen

Drupalgeddon 2 – bugi ja kuinka se korjattiin

28.3.2018: “Kriittinen haavoittuvuus Drupal -sisällönhallintaohjelmistossa. Päivitä viipymättä!”

Eräänä kevättalvisena iltana ohjelmistokehittäjämme Jasper Mattsson selaili työpäivänsä päätteeksi Drupal-julkaisujärjestelmän uusimman version lähdekoodia perehtyäkseen sen ominaisuuksiin ja selvittääkseen, kuinka päivityksen tuomia ominaisuuksia voisi hyödyntää omassa työssään sekä tutkiakseen samalla järjestelmän mahdollisia haavoittuvuuksia.

“Homma lähti siitä, että halusin opetella Drupal kasia. Luin sen lähdekoodia läpi ja aloin miettiä, että voisivatko jotkin asiat aiheuttaa tietoturvaongelmia. Sitten aloin etsimään ja purkamaan muutamaan eri asiaan liittyviä ongelmia. Tässä vaiheessa minulla ei ollut edes Drupalia asennettuna tätä varten – kaikki etsiminen tapahtui lähdekoodia lukemalla.”

Kokeneelle ohjelmistokehittäjälle muiden kirjoittaman koodin tutkiminen on rutiininomainen keino tutkia, kuinka muut ovat ratkaisseet tiettyjä ongelmia ja siten syventää myös omaa osaamistaan. Käytäntöä voisi verrata minkä tahansa teknisen laitteen purkamiseen ja erillisten osien sekä niiden välisten kytkentöjen tutkimiseen. Yleensä osia ja kytkentöjä – tässä tapauksessa koodia – tutkimalla ei löydy juuri käytännön pikkuniksejä ihmeellisempää, mutta tuona iltana tilanne oli toinen.

Bugi löytyy

“Kiinnitin huomiota tapaan, jolla joissain lomakkeissa käsiteltiin käyttäjän syöttämiä arvoja ja aloin sen perusteella etsiä kohtia, joissa tästä voisi seurata tietoturvaongelmia.”

Jasper huomasi, että ohjelmointivirheen avulla Drupal oli mahdollista saada käsittelemään käyttäjän lomakkeelle syöttämiä arvoja ohjelmakoodina. Tämän avulla hyökkääjä voi esimerkiksi ajaa omaa haittakoodiaan Drupalissa. Näin on esimerkiksi onnistuttu asentamaan kryptovaluuttojen mainaukseen tarkoitettuja ohjelmia palvelimelle sivuston ylläpitäjän tietämättä. Hyökkäyksiä tehdään automatisoidusti – hakkeroidut sivustot valjastetaan hyökkäämään muihin päivittämättömiin sivustoihin. Ovelimmat automaattisista hyökkäyksistä asentavat Drupaliin tietoturvapäivityksen päästyään sisään, jotta kilpailevat hyökkääjät eivät pääse palvelimelle.

Itse bugiin liittyi kaksi puolta; vahingollisen syötteen saaminen Drupaliin sisään ja se, että Drupalin sai suorittamaan sen koodina. Mikäli satunnainen lähdekoodia tutkiva henkilö olisi löytänyt vain toisen näistä ongelmista, hän ei välttämättä olisi ajatellut kyseessä olevan tietoturvaongelma. On varsin todennäköistä, joskin täysin spekulatiivista, että molemmat yksittäiset ongelmat ovat olleet joidenkin toimijoiden tiedossa, sillä haavoittuvuus oli ehtinyt ollut Drupalissa ainakin vuonna 2011 julkaistusta 7-versiosta lähtien, sekä mahdollisesti jossain muodossa jo vuonna 2008 julkaistussa Drupal 6:ssa. Kahden satunnaisen pikkuongelman havaitsemisen lisäksi erityisen ratkaisevaa tässä tapauksessa oli kuitenkin ongelmien välisten syy-seuraussuhteiden ja niiden yhdessä muodostaman riskin vakavuuden ymmärtäminen.

Korjaustoimenpiteet

Ensimmäisestä huomion herättäneestä havainnosta bugiepäilyn vahvistamiseen kului aikaa vain muutamia tunteja. Ongelman havaittuaan Jasper raportoi bugin Drupalin tietoturvatiimille ja ilmoitti havaintonsa tueksi esimerkkitilanteen (Proof of Concept), jossa haavoittuvuus oli hänen koneellaan ilmennyt. Tarvittavien tietojen raportoimiseen kului aikaa muutama päivä, tosin esimerkkitilanteen toistamisessa oli alkuvaikeuksia.

Hyvin pian vapaaehtoisista ja luotettaviksi todetuista Drupal-kehittäjistä koostuva tietoturvatiimi pääsi kuitenkin tekemään korjauksia. Myös Jasper osallistui niiden testaamiseen, mahdollisten uusien aukkojen etsimiseen ja korjausehdotuksiin liittyvään keskusteluun.

“Drupalin tietoturvatiimi kehitti korjauksia nopealla tahdilla ja hyvällä yhteistyöllä – keskustelun ja korjauksien testaamisen tahdissa ei meinannut pysyä mukana”.

Kehittämiseen vierähti muutama viikko ja useampi iteraatiokierros ennen kuin päivitys oli saatu riittävälle tasolle julkaisua varten.

Kun tietoturvatiimillä oli aukko tiiviisti tilkittynä, he tiedottivat korjauspäivityksen julkistamisajankohdan. Tässä vaiheessa itse haavoittuvuuden yksityiskohdat pidettiin luonnollisesti vielä tiukasti salassa ja kerrottiin vain, että kyseessä on kriittinen tietoturva-aukko. Myös päivitysversion korjaukset koordinoitiin ja toteutettiin siten, ettei päivityksen koodista pystyisi helposti päättelemään mistä tietoturva-aukko tarkemmin löytyisi.

Välttämättömät korjaukset paikkaava päivitys julkaistiin pääsiäistä edeltävänä keskiviikkona 28.3. jolloin Druidilla sekä muissa Drupal-taloissa oltiin valmiudessa päivittämään sivustot. Drupal.org kaatui hetkellisesti suuren kävijämäärän vuoksi kehittäjien ladatessa sivua uudelleen malttamattomina.

Ennen päivitystä pelättiin, että päivityksen perusteella saattaisi huolellisista varotoimista huolimatta olla mahdollista päästä tietoturva-aukon jäljille ja että sitä hyödyntävää haittakoodia voisi olla tarjolla hyvinkin pian päivityksen julkaisun jälkeen. Näin oli käynyt ensimmäisen Drupalgeddon-haavoittuvuuden kanssa vuonna 2014. Ensimmäiset haavoittuvuutta käyttävät hyökkäykset huomattiin kuitenkin vasta 11.4., joten sivustojen ylläpitäjillä oli lähes kaksi viikkoa aikaa päivittää sivustonsa.

Mikäli sivustosi jäi Drupalgeddonin jalkoihin tai tarvitset luotettavaa kumppania pitämään huolta verkkopalveluistasi, ota meihin yhteyttä!

Kirjoittaja

Smooth rolling
08.05.2017
Arto Iijalainen

Kuinka visualisoida sprintin tila JIRAssa?

Valittu projektimalli on usein ratkaisevassa asemassa projektin onnistumisen kannalta. Siksi me Druidilla vannomme ketteryyden ja Scrumin nimeen. Scrum edellyttää, että kaikki tehtävä työ kasataan yhteen paikkaan, jotta sitä voidaan hallinnoida järkevästi. Vaikka tämä onnistuisi ihanan hipsteristi seinällä ja paperilapuilla, olemme päätyneet käyttämään insinöörimäisempää JIRA-projektinhallintaohjelmistoa. Se mikä hipsteriydessä hävitään, voitetaan monin verroin takaisin erilaisilla näkymillä, kattavalla raportoinnilla ja muilla hyödyllisillä ominaisuuksilla.

Vakioasetuksilla JIRA luo Scrum-projektille kaksi näkymää: backlog-näkymän sekä näkymän aktiiviseen sprinttiin. Lisäksi työnkulku on yksinkertaisesti mallia “To Do → In progress → Done”. Monille tämä riittää…vai riittääkö? Testataanpa.

Backlog-näkymässä luodaan tarinoita, annetaan pisteet, kasataan sprintti ja käynnistetään se. Tarinoille lisätään (tekniset) alitehtävät. Toistaiseksi kaikki on kunnossa. Näkymä vaihdetaan aktiivisen sprintin puolelle. Otan yhden tarinoista tekoon. Näen helposti, mitä alitehtäviä tarinalla on ja missä tilassa ne ovat. Yksi kerrallaan alitehtävät valmistuvat, kunnes kaikki on tehty. Story on valmis!

Eipäs kun hetkinen… Pitäähän valmistunut tarina kierrättää vertaisarviossa, jotta työn tekninen laatu voidaan varmistaa. Ja toki tuoteomistaja haluaa tarkastaa erillisessä testausympäristössä, että tarinan vaatimukset täyttyvät ennen hyväksymistä. Hmm… Pitäisikö näistä tehdä erilliset alitehtävät? Jokaiselle tarinalle? Kuulostaa toistuvalta käsityöltä.

Backlog-näkymä
Aktiivisen sprintin näkymä

Oikea ratkaisu on noudattaa hyvän ohjelmistoarkkitehtuurin kultaista sääntöä: luo mallinnettava kokonaisuus järjestelmän tarjoamilla ominaisuuksilla, jolloin järjestelmä “ymmärtää”, mitä olet tekemässä. Tässä tapauksessa tarkoituksena on mallintaa tarinoiden matka alusta loppuun, joten ensimmäinen askel on laajentaa JIRA-projektin työnkulku kattamaan kaikki mahdolliset vaiheet. Tarvittavat askeleet vaihtelevat projekteittain. Tässä yksi esimerkki:

  • Sprint Backlog (Kehitystyötä ei aloitettu)
  • In progress – Frontend (Frontend-kehitystyö käynnissä)
  • In progress – Backend (Backend-kehitystyö käynnissä)
  • Development Done (Kehitystyö valmis)
  • Peer Review & Deployment (Toisen kehittäjän vertaisarviointi)
  • Acceptance testing (Tuoteomistajan hyväksymistestaus)
  • Done (Story tehty ja hyväksytty)

Tässäkin asiassa kannattaa toimia ketterästi. Ensimmäinen versio tehdään parhaan tiedon mukaan ja sen jälkeen vaiheita muutetaan saadun kokemuksen perusteella. (Pro tip: Projektin workflowksi kannattaa valita “Simplified Workflow”, jolloin muutosten tekeminen on helpompaa.)

Kun työnkulku on kunnossa, tehdään taikuuksia näkymille. Aktiivisen sprintin näkymän tulee edelleen toimia kuin aiemminkin, jotta kehittäminen sujuu mahdollisimman helposti. Siksi näkymässä ei tarvita kuin neljä ensimmäistä askelta (Sprint Backlog–Development Done). Sen lisäksi luodaan uusi näkymä, joka kulkee meillä nimellä Review. Review-näkymän tehtävänä on näyttää sprintin tila yhdellä silmäyksellä sekä mahdollistaa työn käsittely tarinatasolla, jota putken loppupäässä tarvitaan. Lisäksi haluamme niputtaa ensimmäiset neljä askelta (Sprint Backlog–Development Done) yhteen sarakkeeseen nimeltä Develop, sillä siellä työskennellään alitehtävien parissa ja nyt olemme kiinnostuneita itse tarinoista.

Katso tarkemmat asennusohjeet videosta:


Lopputuloksena tarinoiden kulku on mallinnettu JIRAan, eikä niiden tiloja tarvitse enää arvuutella tai muistella. Lisäksi kaikkien – jopa projektin ulkopuolisten tahojen – on helppo tarkistaa, miten sprintti menee.

Visualisointi auttaa myös hahmottamaan pullonkauloja: jos esimerkiksi nähdään, että tarinoita kertyy jatkuvasti vertaisarviointisarakkeeseen, kehitysprosessia tulee muuttaa vertaisarviointia suosivaan suuntaan. Poikkeuksia tapahtuu, mutta jatkuvat sumat kielivät yleensä puutteellisesta prosessista. Onneksi Scrumiin sisäänrakennetuissa retrospektiiveissä asia voidaan nostaa esille ja korjausehdotusta on helppo lähteä kokeilemaan. Näkymät näyttävät suoraan, onnistuiko kokeilu vai ei.

Lopputulos: Sprintin yleisnäkymän näyttävä review-näkymä


Pari tunnettua ongelmaa:

– Sprintin päätteeksi tarinat ovat Done-tilassa, mutta niiden alitehtävät jäävät Development Done -tilaan. Ennen sprintin sulkemista alitehtävät on käytävä siirtämässä Done-sarakkeeseen. Homman voi hoitaa kerralla kaikille alitehtäville etsimällä ne Issue Navigatorilla ja muuttamalla tila Bulk edit -työkalulla. Korjauksen voi myös hoitaa ohjelmallisesti JIRAn omalla skriptikielellä, mutta emme ole vielä menneet niin pitkälle.

– Review-näkymässä pitää erikseen painaa Only stories -filtteri päälle. Jos klikkailu ärsyttää, pikaratkaisuna näkymän voi lisätä selaimen kirjanmerkkeihin ja tuoda kirjanmerkkityökaluriville. Me kehittäjät käytämme Grease Monkey -skriptejä, jotka ohjelmallisesti lisäävät oikeanlaiset linkit selaimiimme.

Kirjoittaja

Arto Iijalainen

Project Manager & Scrum Master
GDPR auditointi
20.02.2017
Mikko Hämäläinen

GDPR kiristää tietosuojavaatimuksia – aloita valmistautuminen jo nyt

GDPR (General Data Protection Regulation) on EU:n uusi tietosuoja-asetus, joka koskee kaikkea henkilötietojen käsittelyä. Omien järjestelmien ja prosessien päivittäminen voi olla monelle yritykselle vuoden 2017 suurin investointi ja todennäköisesti se sivuaa jollain tasolla myös sinun toimintaasi. GDPR tuo mukanaan ison muutoksen yrityksille.

Tietosuojalaki on astunut voimaan jo keväällä 2016, mutta sen soveltaminen alkaa vasta ensi vuoden toukokuussa. Käytännössä viimeistään silloin systeemien on oltava ajan tasalla, asetuksen rikkojalle lankeavat maksimisanktiot kun ovat miljoonaluokkaa. Atk-amatöörin on hankala käsittää, mitä kaikkea käyttäjätietoa omat järjestelmät tallentavat ja louhivat. Tietosuoja-asetus koskee niin intranettiin excelissä tallennettua henkilöstölistaa, verkkosivuston Google-analytiikkaa kuin verkkopalvelusi käyttäjädataa. Ja myös kaikkien edellisten varmuuskopioita.

Mitä GDPR tarkoittaa käytännössä?

GDPR peräänkuuluttaa ennen kaikkea läpinäkyvyyttä henkilötietojen käsittelyyn. Henkilötietoa on kaikki sellainen tieto, josta henkilön voi tunnistaa suorasti tai epäsuorasti – myös esimerkiksi evästeet ja paikkatieto ovat henkilötietoja.

Verkkopalvelun käyttäjältä tarvitaan ensinnäkin aktiivinen suostumus henkilötietojen keräämiseen. Esimerkiksi valmiiksi ruksittu “hyväksyn käyttöehdot” -laatikko ei enää kelpaa. Käyttäjällä on oikeus tietää, mitä tietoja hänestä on kerätty sekä oikeus päästä käsiksi näihin tietoihin. Hänellä on myös oltava mahdollisuus muokata, siirtää ja poistaa tietojaan sekä rajoittaa niiden käsittelyä.

GDPR vaatii myös nopeaa reagointia. Yritysten on esimerkiksi pystyttävä poistamaan käyttäjän tiedot ja ilmoittamaan tietomurroista viranomaisille ilman aiheetonta viivytystä. Myös käyttäjille, joiden yksityisyyden suojaan tietomurto vaikuttaa, on ilmoitettava.

Yritysten on pystyttävä osoittamaan, että ne noudattavat GDPR-lainsäädäntöä. Tämä on merkittävä muutos, sillä tällaista osoitusvelvollisuutta ei Suomessa ole ennen ollut, ja niinpä se edellyttää uusia toimintamalleja. Tietojärjestelmät tulee lähtökohtaisesti suunnitella niin, että ne tukevat tietosuojaa.

Nykytilanteessa henkilötietojen käsittely tietojärjestelmissä ei välttämättä ole läpinäkyvää. Eksplisiittisesti tallennettujen tietojen lisäksi järjestelmät voivat täydentää tietoja automaattisesti esimerkiksi analytiikan tai antureiden avulla. Lisäksi järjestelmät tallentavat tietoa useisiin eri paikkoihin, kuten välimuisteihin, varmuuskopioihin ja liitettyihin ulkoisiin järjestelmiin.

Miten tietosuojalain muutokseen voi valmistautua?

Oman pesän selvittely kannattaa aloittaa pikimmiten, sillä tietämättömyys ei enää vuoden päästä pelasta lakituvalta. Omat asiakkaamme saavat ennen takarajaa sopimustäydennykset, joilla selkeytetään tiedonkulkua ja vastuita osapuolten välillä: joissain tapauksissa meillä ei ole roolia asiakkaan henkilötietorekisterien käsittelyssä, ja joissain tapauksissa kehittämissämme verkkopalveluissa käsitellään arkaluontoistakin henkilötietoa.

Lakimiehet ja asiantuntijatahot tarjoavat erilaisia GDPR-kartoituksia ja -selkeytyksiä, niin myös me. Olemme lähteneet selvittelemään asetuksen vaikutuksia omaan ja asiakkaidemme toimintaan jo hyvissä ajoin.

Drupal GDPR -auditointimme on vastaus Drupaliin liittyviin epäselvyyksiin. Kartoitamme auditointiprojektissa muun muassa järjestelmän käsittelemän henkilötiedoksi laskettavan datan ja sen tallennuspaikat sekä tiedon hallintaan liittyvät prosessit. Tilaaja saa projektin jälkeen käteensä selväkielisen raportin, jonka hän voi tarvittaessa antaa eteenpäin organisaationsa tietosuojavaltuutetulle tai lakimiehille. 

Olemme myös aloittaneet GDPR-yhteensopivuutta edistävän Drupal-moduulin kehitystyön, jolla on tarkoitus automatisoida osa tarkistuksista. Avoimen lähdekoodin projektin sivut löytyvät drupal.orgista täältä.

Tietosuojalain vaatima ponnistus ei vaikuta kohtuuttomalta, mikäli yritys on noudattanut jo nykyisin voimassa olevia lakeja ja asetuksia henkilötietojen käsittelystä. Aina näin ei kuitenkaan ole, ja papereiden parsimiseen lähdetään tuntuvalta takamatkalta. GDPR-seminaareista on syntynyt sellainen vaikutelma, ettei EU:ssakaan vielä tiedetä, miten asetusta kuuluu pilkulleen noudattaa. Ensin tulee laki ja sitten terve järki.

Kannattaa joka tapauksessa olla ajoissa liikkeellä ja ottaa uusi tietosuojalaki tehokkaasti haltuun. Vältyt mittavilta sanktioilta, ja mikä tärkeintä, läpinäkyvyyden ansiosta kasvanut asiakkaittesi luottamus voi tuoda yrityksellesi kilpailuetua. 

Jos kaipaat apua, ota yhteyttä ja kysy lisää Drupal GDPR -auditoinnistamme.

Kirjoittaja