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

Pori Etelaranta
16.02.2017
Mika Suominen

Kuntien avoin verkkopalvelualusta – todistetusti toimiva

Viime syyskuussa Turun kaupunki kertoi avaavansa verkkopalvelunsa lähdekoodin yhteiseen käyttöön. Turku siis päätti antaa kehittämänsä alustan veloituksetta kaikkien hyödynnettäväksi ja jatkokehitettäväksi. 

Koodin avaamistyö saatiin nyt alkuvuodesta päätökseen, eli muiden kuntien on nyt mahdollista ottaa turku.fi-lähdekoodiin perustuva avoin verkkopalvelualusta käyttöönsä. Kiinnostus alustan hyödyntämiseen onkin jo herännyt varsin monen kunnan suunnasta!

Turun kaupunki on tehnyt todella uraauurtavaa työtä kehittäessään laajan ja pitkäikäisen verkkopalvelualustan monine hyödyllisine toiminnallisuuksineen. Alusta on vakaa ja skaalautuva, ulkoasultaan räätälöitävä, helppokäyttöinen ja saavutettava. Se on myös responsiivinen, eli se toimii mobiileissa päätelaitteissa.

Miten tähän pisteeseen on tultu?

Turun kaupunki halusi onnistua sivustouudistuksessaan, ja siitä rakentuikin hieno tarina. Täydet pisteet Turun kaupungin rohkeille päättäjille erilaisesta kilpailutuksesta, joka johti verkkopalvelun toteutukseen ketterällä monitoimittajamallilla. Onnistunut hankinta ja toimittajayhteistyö valittiinkin Blue Arrow Awards -kilpailun finalistiksi kategoriassa ”Epic Purchasing”. 

Turku.fi-projekti aloitettiin loppuvuodesta 2014. Jo puolen vuoden päästä julkaistiin ensimmäinen versio uudesta sivustosta. Kehitystyötä jatkettiin ja kuntalaisten palautteisiin reagoitiin koko projektin ajan – esimerkiksi esteettömyyttä parantava isompi päivitys julkaistiin kesällä 2016. Ketterin menetelmin toteutettu projekti oli menestys, mutta sitäkin merkittävämpi uutinen oli kehitetyn alustan julkaisu yhteiseen käyttöön.

Olemme olleet alusta alkaen mukana rakentamassa turku.fi-verkkopalvelua yhtenä Turun kolmesta teknisestä kumppanista ja luonnollisesti myös mukana koodin avaamistyössä. Meille on kunnia olla mukana rakentamassa tätä kokonaisuutta, joka mahdollistaa entistä parempien ja monipuolisempien verkkopalveluiden rakentamisen erittäin kustannustehokkaasti.

Miksi alusta on merkittävä mahdollisuus kunnille?

“No onhan näitä alustoja nähty aiemminkin, ei toiminut”, skeptikko ehkä tuumii. Tämä on totta. Mikä siis tekee tästä verkkopalvelualustasta erilaisen? Onnistunut turku.fi-uudistus oli jo sinänsä lupaava lähtökohta. Turun kaupungin hankejohtaja Päivi Saalasto valottaa alustan tuomia hyötyjä seuraavasti:

“Turku.fi-lähdekoodi tarjoaa hyödyntäjälleen win-win-tilanteen: täydellisen vapauden vähäisemmin kustannuksin. Jokainen voi poimia luodusta paketista vain haluamansa toiminnot ja järjestää verkkopalvelun ylläpidon parhaaksi katsomallaan tavalla. Samaan aikaan kuitenkin yhteisiä toiminnallisuuksia voidaan jatkokehittää tiiviissä yhteistyössä muiden kanssa jakaen syntyvät kulut.”

Alustan vahvuudet ovat moninaiset. Tässä niistä muutamia:

  • Laatu. Suomen ykkösluokan Drupal-talot ovat olleet kehittämässä alustaa.
  • Riippumattomuus toimittajasta. Alustalla on jo tässä vaiheessa useita sitoutuneita teknisiä toimittajia, sekä Turku.fi-projektissa mukana olleita että projektin ulkopuolisia Drupal-taloja.
  • Toimivuus. Alusta on testattu ja todistettu käytännössä toimivaksi.
  • Tietoturva. Alusta on tietoturva-auditoitu.
  • Laaja käyttö. Käyttäjäyhteisön laajuus takaa alustan nopean kehityksen.

Pilotointia Porissa

Porissa innostuttiin jo hyvin varhaisessa vaiheessa Turun kehittämän alustan hyödyntämisestä, minkä johdosta heidän verkkouudistuksensa sai varsinaisen lentävän lähdön: syntyi ensimmäinen POC (proof of concept), jonka yhdessä Porin kaupungin kanssa toteutimme.

Pilottihankkeen tavoitteena oli varmistaa alustan tekninen soveltuvuus Porin tarpeisiin, toimiva ja helppokäyttöinen sisällönsyöttö sekä rakenteen joustavuus muuttuville tarpeille. Vaikka hanke aloitettiin jo ennen avoimen alustan julkaisuversion valmistumista, tulokset olivat vakuuttavia. Turun alustan todettiin tarjoavan toimivan ratkaisun Porinkin tarpeisiin ja se otettiin ilolla vastaan. Alustan helppokäyttöisyys kirvoitti jopa aplodit koulutuksessamme, jossa perehdytimme sisällönsyöttäjiä alustan käytön saloihin.

Porin pilotin valmista perustoteutusta laajennettiin vielä kattavalla hakumoottorilla, jonka jälkeen kaikki tekniset linjaukset olivat kasassa tulevaa sivustouudistusta varten. Yhteistyömme Porin kanssa jatkuu avoimen kilpailutuksen suunnittelulla, jonka tavoitteena on löytää Porille oikeat yhteistyökumppanit, joiden avulla turku.fi-lähdekoodi saadaan palvelemaan Porin sähköisen asioinnin ja viestinnän uusia ja tulevia tarpeita.

Mahdollisuus jatkokehittää huolella suunniteltua ja toteutettua verkkoalustaa sekä uudenlaiset yhteistyömahdollisuudet kuntien välillä saivat Porin kiinnostumaan Turun alustasta. Tietohallintojohtaja Heikki Haaparanta näkee yhteiskehittämisessä huimasti potentiaalia:

“Vaikka kunnissa ja niiden tarjoamissa palveluissa on paljon eroavaisuuksia, on niissä kuitenkin myös paljon yhteneväisyyksiä. Tämä yhteinen palvelurakenne ja lukuisat muut yhtäläisyydet palveluiden tuottamisessa tarjoavat mahdollisuuden yhteistyöhön, jakamiseen ja eri kuntien jo tekemän työn hyödyntämiseen. Projektimme valmistuttua tavoitteena onkin julkaista myös turku.fi-pohjalta rakennettu pori.fi-lähdekoodi avoimeksi. Näemme, että parhaimmillaan verkkoalustan ympärille muodostuu kuntien yhteistyöverkosto, joka jakaa avoimesti alustaan liittyviä kokonaisuuksia ja osaamista.”


Suomessa on yli 300 kuntaa, joiden on KaPa-lain velvoittamina uudistettava verkkopalvelunsa. Nyt Turku tarjoaa kuin hopeatarjottimella auttavan käden kaikille Suomen kunnille. On helppo nähdä alustan ympärille muodostuneen avoimen lähdekoodin ekosysteemin kasvavan ja laajentuvan modulaariseksi kuntien digipalveluiden työkalupakiksi. 

Haluatko tietää lisää?

Tietoa Turku.fi -alustan sisällöstä: Kuntien avoin verkkopalvelualusta
Turun tiedote: Turku.fi:n lähdekoodi kiinnostaa jo monia
Alusta on saatavilla Turun GitHub-tilillä 
Turun digitaalisen kehittämisen blogi



Yläkuva: “Porin Eteläranta” / Jukka Peura / CC BY 2.0

Kirjoittaja

Mika Suominen

Board Member
Better UX with React
08.02.2017

Sulava käyttökokemus uudella teknologialla

Lääkärikeskus Aava on yksi asiakkaistamme, jolla on erittäin korkeat vaatimukset palveluidensa käyttäjäkokemukselle. Pystyäksemme vastaamaan näihin odotuksiin kustannustehokkaasti, on tärkeää että käytössämme on palveluiden rakennusvaiheessa moderneimmat mahdolliset työkalut. Onneksemme Aava on ollut koko yhteistyömme ajan sitoutunut päivittämään teknologiaa uudempaan. Näin Aavallekaan ei ole aiheutunut turhan suuria kertakustannuksia järjestelmien päivittämisestä. 

Tavoitteena yhtenäinen käyttökokemus

Loppuvuodesta 2016 asetimme Aavan kanssa tavoitteeksi yhdistää heidän eri palveluidensa frontend-ratkaisut, jotka on toteutettu eri taustajärjestelmillä. Nykytilanteessa kaikissa järjestelmissä on perinteiseen tapaan oma käyttöliittymänsä, mikä on järjestelmien kasvamisen myötä tehnyt ylläpidosta haastavampaa. Siitä huolimatta, että olemme hyödyntäneet moderneja työkaluja nykyisten järjestelmien rakentamiseen, työ joudutaan käytännössä aloittamaan aina alusta joka järjestelmässä. Palveluiden käyttökokemuksen kehittäminen ei myöskään ole mahdollista äärettömiin, koska järjestelmät näyttävät keskenään hyvinkin erilaisilta.

Lähdimme liikkeelle Aavan Terveytesi-palvelun rakentamisesta. Projektin tavoitteena oli luoda nopeasti uusi palvelu, josta asiakas pystyy helposti hakemaan tietoja terveydestään, kuten vaikkapa diagnooseja ja ajanvarauksia.

Miksi päädyimme Reactiin?

Palvelun rakentaminen edellytti muutoksia olemassa olevaan arkkitehtuuriin. Jotta kehitystyö olisi pitkällä tähtäimellä kustannustehokasta, päätimme, että kaikkien ennen arkkitehtuuriuudistusta tehtävien toiminnallisuuksien on oltava käytettäviä uudessakin arkkitehtuurissa. Tämän vuoksi päädyimme keskittämään suurimman osan ajasta toimivien rajapintojen muodostamiseen. Tässä projektissa oli luonnollista luoda selaimessa toimiva sovellus, koska palvelu ei vaatinut paljoa business-logiikkaa rajapintojen ulkopuolella.

Ember.js sekä React.js valikoituivat arvioitaviksemme, koska näistä tiimiläisillä oli aikaisempia hyviä kokemuksia. Aluksi pyrimme arvioimaan, kumman järjestelmän tuominen nykyiseen arkkitehtuuriin olisi helpointa, mutta totesimme vertailun olevan melko hankalaa, sillä kumpikaan ei tuntunut täyttävän vaatimuksia, jotka alkuvaiheessa asetimme. Niinpä päädyimme vertailemaan yhteisöjen kokoja ja millä tavoin järjestelmiä on käytetty. Lopulta valitsimme Reactin, koska uskoimme sen olevan pitkällä tähtäimellä paremmin tuettu.

Miten projekti sujui?

Uuden teknologian käyttöönotto tuo aina mukanaan haasteita. Tässä projektissa haasteena oli ennen kaikkea se, miten moderni teknologia yhdistetään Aavan jo olemassa olevaan infrastruktuuriin sekä ohjelmistoihin, vaikka kokonaisuus sinänsä olikin jo ennestään moderni. Lisäksi kaikilla tiimimme jäsenillä ei ollut aiempaa kokemusta modernista JavaScriptistä (es2016+). Mutta mehän pidämme haasteista, joten huolehdimme projektin aikana siitä, että kaikki tiimiläiset saivat yhtäläiset valmiudet kehittää projektia.

Aavan olemassa olevaa infrastruktuuria on pidetty ajan tasalla koko yhteistyömme ajan, mutta siitäkin huolimatta kehitystyö tuntui alussa etenevän hitaasti, koska jouduimme keskittymään paljon infrastruktuurin kehittämiseen – pohjatyö vaati oman aikansa. Tähän oli syynä pääosin se, ettei Aavalla aiemmin ollut käytössä vastaavia JavaScript-toteutuksia.

Koska halusimme nopeuttaa projektin alkua, otimme paljon mallia boilerplate-tyyppisistä ratkaisuista. Tämä kuitenkin myöhemmässä vaiheessa kostautui, kun jouduimme selvittämään kopioituihin osiin liittyviä bugeja. Selvittäminen oli haasteellista, koska emme täysin ymmärtäneet kaikkia valintoja tai heikkouksia, joita koodissa oli.

Kun saimme ensimmäiset komponentit valmiiksi, vauhti alkoi kiihtyä ja uusien toiminnallisuuksien teko sujua erittäin nopeasti. Koko projektiin meni lopulta noin kaksi kuukautta, ja noin puolet tästä ajasta käytettiin vanhan infrastruktuurin kehittämiseen. Sovellus on parhaillaan sisäisessä testauksessa ja se julkaistaan helmikuun aikana. 

Tekniset valinnat

Koska edelleenkin laajasti käytetty PHP 5.6 alkaa Aavan korkeiden standardien mukaan vedellä viimeisiään, päätimme tässä yhteydessä myös päivittää palvelun PHP 7.1:een, jotta saimme siihen lisää nopeutta ja uusia ominaisuuksia käyttöön. Monet PHP-kirjastot ovat jo lopettaneet tuen PHP 5 -versioille, mikä omalta osaltaan hankaloittaa uusien asioiden kehittämistä PHP 5 -versioiden päälle. Aava oli ensimmäinen asiakkaamme, joka otti PHP 7.1 -version käyttöön olemassa olevaan projektiin. Tämä herätti myös paljon kiinnostusta Druidin ulkopuolella.

Taustajärjestelmänä sovellukselle toimii tällä hetkellä Drupal 7. Suunnittelemamme API on tehty niin, että frontend-sovellus on tulevaisuudessa helppo siirtää minkä tahansa alustan päälle. Näin Aavan ei tarvitse rajoittaa teknisiä valintojaan meidän teknisten valintojemme vuoksi. Tähän ratkaisuun päädyttiin, koska Drupalin päälle on rakennettu merkittävä määrä olemassa olevia toiminnallisuuksia, jotka nopeuttivat sovelluksen kehittämistä.

API-dokumentaatioiden tekemiseen käytimme Swagger-työkalua. Swagger-dokumentaatio on koostettu JSON-datasta. Samaa tiedostoa käytetään myös rajapintojen generoimiseen.

Yhteenveto

Projekti kokonaisuudessaan oli erittäin mielenkiintoinen. Etenkin jatkuva uusien teknologioiden hyödyntäminen pitää mielen virkeänä ja motivoituneena. Tämä myös varmistaa Aavan järjestelmille pitkän käyttöiän, ja mahdollisimman matalat kustannukset rakennusvaiheessa.