Ero sivun ”Palvelulle” versioiden välillä

Kohteesta DigiWiki
Siirry navigaatioon Siirry hakuun
 
(309 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
'''Palvelun omistajalle''' digitalisaatio
+
TEKIJÄT: [[:Käyttäjä:TUOMALA JUHA 10000350X|JUHA TUOMALA]]
  
 +
 +
'''Palvelun omistajalle''' (''henkilö, yritys, yhdistys tms yhteisö'') digitalisaatio asettaa isoja haasteita teknologian kehitysnopeuden ja käyttöönottotahdin ollessa muita teollisuudenaloja nopeampi. Monen yhteisön päättäjälle tietotekniikka vain sivuaa itse yhteisön ydintoimintaa - mutta silti sähköisten palveluiden tarjoamiselle kasvaa paineita ja niiden suunnittelu ja rakentaminen vaatii paljon perehtymistä ja asiantuntijaresursseja joita ei välttämättä ole käytettävissä. Vääriä valintoja tehdessä investointi saattaa vaatia uudelleen rakentamista ennen aikojaan ja väärälle valitulle teknologialle sopivan toimittajan löytäminen myöhemmin saattaa olla vaikeaa ja kallista.
 +
 +
Yhteisön johdolle yksi, joskin työläs vaihtoehto tehdä oikeita valintoja vähillä resursseilla on itse perehtyä verkkopalveluiden ratkaisuihin ja analysoida paras vaihtoehto eri arkkitehtuureista, tekniikoista ja kehityksen trendeistä. Huolimatta toteuttajasta, palvelun omistajan tulisi ainakin tietää millä ja miten palvelu on toteutettu ja mitkä vaikutukset valinnoilla on palveluun ja sen elinkaareen.
 +
 +
Sivulle on koottu yhteenveto eri osa-alueista auttamaan päätöksenteossa ja herättämään ajatuksia. Sisältö ei käsittele avaimet-käteen palveluita joissa kaikki edelläoleva on jo sivuutettu ulkoistettuna.
 +
 +
 +
== Kohderyhmät ==
 +
 +
'''Kohderyhmä''' ja sen suhde palveluun yleensä määrittelee palvelun toteutustavan ja arkkitehtuurin. Arkkitehtuurivalintoja on viime aikoina muokannut mobiililaitteiden suosion kasvu ja toisaalta web-käyttöliittymien ulkoasun ja vasteellisuuden kehittyminen, jonka myötä sen kehitysmalleja on kopioitu henkilökohtaisten tietokoneiden käyttöliittymien kehityksestä.
 +
 +
Komponenttien ja arkkitehtuurin valinta perustuu usein kohderyhmän käyttöprofiilista ja siihen investoitujen kehitys- ja ylläpitokustannusten kompromissista. Jos palvelua/palvelu:
 +
* käyetään '''satunnaisesti'''
 +
* käytetään '''toistuvasti'''
 +
* käytetään '''eri päätelaitteilta''' kuten tietokoneelta ja mobiililaitteesta
 +
* käytetään päätelaitteeseen asennetulla '''sovelluksella'''
 +
* käsittelee tekstiä '''monimutkaisempia aineistoja''' kuten karttoja, videota tai ääntä
 +
 +
=== Käytetään satunnaisesti ===
 +
Jos käyttö on satunnaista, enimmäkseen tekstin ja kuvien käsittelyä ja tapahtuu tietokoneelta - yleinen tapa on toteuttaa se web-selaimessa ja valittavana on useita eri sovelluskehyksiä ja arkkitehtuureita.
 +
 +
Tyypillinen esimerkki on henkilön rekisteröinti palveluun, jossa syötetään henkilö- ja yhteystiedot.
 +
 +
=== Käytetään toistuvasti ===
 +
Suuri käyttöaste - suuret käyttäjämäärät tai jatkuva käyttö voi asettaa isommat vaatimukset käytettävyydelle ja siten perustella suuremmat investointikulut, ylläpitokulut ja pidemmän kehitykseen käytetyn ajan. Isoilla resursseilla tehtynä MVC-arkkitehtuuri täyttää mainitut kriteerit parhaiten. Sovelluksen voi toteuttaa joko natiivina päätelaitteen ohjelmana tai web-sovelluksena.
 +
 +
Typillisiä esimerkkejä ovat valtionhallinnon sovellukset, kaupalliset sovellukset kuten sähköposti, tekstinkäsittely, kirjanpito jne.
 +
 +
=== Käytetään eri päätelaitteilta ===
 +
MVC raskas, applikaatioserveri kevyempi, eri alustojen jaettu koodi kustannustehokkaampi
 +
 +
=== Käytetään päätelaitteeseen asennetulla sovelluksella ===
 +
 +
=== Käsitellään tekstiä monimutkaisempia aineistoja ===
 +
kartat, multimedia -> app
  
 
== Arkkitehtuurit ==
 
== Arkkitehtuurit ==
 +
 +
=== Templaattipohjaiset (MVT) ===
 +
'''Esimmäisen sukupolven''' palveluita kehitettiin enimmäkseen templaatti-järjestelmien (''Model View Template, MVT'') avulla. Yksinkertaisimmillaan kaikki tietokantakyselyt tehtiin käsin suoraan käyttöliittymän templaateista ja niiden kehittäminen ja ylläpito oli hidasta ja kallista. Teknologia ei sinänsä rajoita hyviä kehitystapoja ja kehitykseen käytetyn ajan sekä kehityskulujen hallinta on silti mahdollista. Ratkaisu voi olla sopiva pienien kehitysresurssien tarpeeseen vielä nykyäänkin.
 +
 +
=== Asiakas-palvelin ympäristöt (Application Server) ===
 +
'''Toisen sukupolven''' arkkiehtuuriksi voidaan kutsua asiakas-palvelin (''Application Server'') arkkiehtuuria jossa itse sovellus muodostuu palvelimessa jatkuvasti pyörivästä sovelluksesta tietokantoineen ja käyttäjän päässä on käyttöliittymä joka ladataan kerran alussa ja kommunikoi käytön edetessä kevyesti sovelluspalvelimessa pyörivän sovelluksen kanssa. Arkkitehtuurin etu on sovelluksen jatkuva käynnissäolo joka ainakin periaatteessa näkyy käyttäjälle nopeutena koska samoja käynnistyksen alussa tehtäviä rutiineja ei ajeta käyttäjän jokaisesta toimesta käyttöliittymässä. Haittana on sovelluspalvelimen tai sovelluksen kaatuminen virhetilanteessa(?) ja sen näkyminen käyttäjälle jos tilanteesta toipumista ei ole huolehdittu. Suosittu ja tyypillinen esimerkki asiakas-palvelin arkkitehtuurista on [http://tomcat.apache.org/ tomcat.apache.org - Apache Tomcat]
 +
 +
* [https://en.wikipedia.org/wiki/Application_server wikipedia.org - Application Server]
 +
 +
=== Malli-Näkymä-Käsittelijä (MVC) ===
 +
'''Kolmannen sukupolven''' palvelut noudattavat usein MVC (''Model view controller, malli-näkymä-käsittelijä'') arkkitehtuuria jota on jo pitkään käytetty henkilökohtaisen tietokoneiden graafisissa ohjelmistoissa. Tässä käytetty sovellus on toteutettu yleensä javascriptillä (aiemmin saattoi olla myös Java) ja se pyörii kokonaisuudessaan käyttäjän päätelaitteen selaimessa. Webissä käytettäessä koko käyttöliittymän ulkoasu ja sovelluksen ohjelmakoodi ladataan kerran, jonka jälkeen käyttöliittymää päivitetään kevyellä web-liikenteellä palvelun palvelimelta käytön edetessä.
 +
 +
Arkkitehtuurissa on toisen sukupolven edut, etäyhteyden liikennemäärät ovat huomattavasti pienemmät kuin aiemmissa sukupolvissa. Muita selkeitä etuja ovat palvelun palvelimien ja tietoliikenneyhteyksien vähentynyt kuormitus, toteutuksen mahdollistama visuaalinen näyttävyys ja käyttökokemus sekä läheinen suhde tietokoneiden ja mobiililaitteiden täysimittaisiin sovelluksiin jotka hyödyntävät samoja palvelimien rajapintoja.
 +
 +
Haittana kasvaneet vaatimukset selaimien yhteensopivuuksissa monimutkaistuneen asiakaspään toteutuksen takia ja kaikista raskaimmat kehitysvaatimukset taitojen ja ajankäytön kannalta joka johtaa hitaaseen aikatauluun ja korkeisiin kuluihin.
 +
 +
* [https://en.wikipedia.org/wiki/Model–view–controller wikipedia.org - Model View Controller]
 +
* [https://doc.qt.io/qt-5/model-view-programming.html Qt Company - Model View Programming]
 +
 +
'''Java ja applikaatioserverit''', '''Frameworkit''', '''RESTful''', '''rikkaat asiakaat'''
  
 
== Teknologiat ==
 
== Teknologiat ==
Rivi 8: Rivi 64:
 
'''html5'''
 
'''html5'''
  
=== Frameworkit ===
+
=== Palvelimen sovelluskehykset ===
  
'''Drupal''' on selainpohjainen sisällönhallintajärjestelmä (CMS), jonka avulla luot, hallitset ja julkaiset sisältöä verkkosivuille ilman teknistä osaamista verkkosivujen toteuttamisesta. Drupal soveltuu pienten verkkosivujen toteutuksesta aina laajoihin ja haastaviin verkkototeutuksiin.
+
'''Drupal''' on selainpohjainen sisällönhallintajärjestelmä (CMS) sovelluskehys (''framework''), jonka avulla luot, hallitset ja julkaiset sisältöä verkkosivuille ilman teknistä osaamista verkkosivujen toteuttamisesta. Drupal soveltuu pienten verkkosivujen toteutuksesta aina laajoihin ja haastaviin verkkototeutuksiin.  
 +
* [[Drupal]]
  
'''Wordpress'''
+
'''Wordpress''' [http://wordpress.org wordpress.org], lyhyesti WP on sisällönhallintajärjestelmä (''content management system, CMS'') joka on nykyään suosituin sovelluskehys yhteisöjen web-sivujen tai blogien alustaksi jos sisältö on pääasiassa tekstiä. Wordpress on ohjelmoitu php:llä ja käyttää MySQL RDBMS-tietokantaa. WP tukee laajaa valikoimaa vaihdettavia ulkoasuja, liitännäisiä (yli 40k), sillä julkaistuun sisältöön löytyy mobiilisovellukset.
 +
 
 +
WP:ssä on XMLRPC-rajapinta joka on tunnettu ongelmistaan, sitä on käytetty mm DDoS-hyökkäysten proxynä peittämään ja monistamaan todellisen hyökkääjän liikenne<ref name='sucuri-2014'>[https://blog.sucuri.net/2014/03/more-than-162000-wordpress-sites-used-for-distributed-denial-of-service-attack.html More Than 162,000 WordPress Sites Used for Distributed Denial of Service Attack]</ref> - eli saada WP:tä käyttävä taho näyttämään hyökkääjältä.
 +
 
 +
'''Symfony''' on php-sovelluskehys joka kannustaa php-modulien uudelleenkäyttöön.
 +
* [https://symfony.com/ symfony.com]
  
 
'''Joomla'''
 
'''Joomla'''
  
'''Django'''
+
'''Django''' on suosittu ja harvoja Python-ohjelmointikielellä tehtyjä sovelluskehyksiä. Sille löytyy mm sisällönhallintajärjestelmä django-cms.
 +
* [https://djangoproject.com djangoproject.com]
 +
* [https://en.wikipedia.org/wiki/Django_(web_framework) wikipedia.org - Django]
 +
 
 +
'''Apache Struts''' on JavaEE-ohjelmointikielellä sovelluskehys joka kannustaa käyttämään MVC-arkkitehtuuria.
 +
* [http://struts.apache.org/ struts.apache.org]
 +
 
 +
'''Qt WebAssembly''' on vuonna 2018 julkaistu laajennos Qt-kirjastoon joka mahdollistaa Qt-ohjelmien ajon web-selaimessa vaihtoehtona Javascriptille.
 +
* [https://wiki.qt.io/Qt_for_WebAssembly qt.io - Qt for WebAssembly]
 +
 
 +
=== Palvelimen sovellukset ===
 +
 
 +
Verkkokauppasovelluksia, [https://en.wikipedia.org/wiki/Comparison_of_shopping_cart_software täydellinen lista] löytyy wikipediasta. Suurimmat valintaan vaikuttavat tekijät ovat elinkaarikustannukset, paikallisten, skandinavisten maksurajapintojen tuki ja yleiset ominaisuudet.
 +
 
 +
'''Magneto''' on suosittu web-kauppa-alusta [http://magento.com magneto.com].
 +
 
 +
'''OpenCart''' avoimen lähdekoodin verkkokauppaohjelmisto [https://opencart.com opencart.com]
 +
 
 +
'''osCommerce''' [http://oscommerce.com oscommerce.com]
 +
 
 +
'''Odoo''' sisältää monta toimintoa kuten [[Asiakkuudenhallinta|asiakkuudenhallinan]] (CRM), [[Tuotannonohjaus|tuotannonohjauksen]] (ERP) ja web-kaupan. Sen toteutuskieli on Python ja Javascript ja se käyttää Postgresql-tietokantaa. [[Odoo|lisää...]]
 +
 
 +
'''PrestaShop''' [http://prestashop.com prestashop.com]
 +
 
 +
'''VirtueMart''' on verkkokauppasovellus [[Joomla]] CMS-sovelluskehykselle. Ohjelmointikieli on PHP ja tuettu tietokanta MySQL/MariaDB. [http://virtuemart.net virtuemart.net]
 +
 
 +
'''Woo Commerce''' on web-kauppa plugin Wordpressille. [https://woocommerce.com/ woocommerce.com].
 +
 
 +
'''Zen Cart''' on osCommercin vuonna 2003 tehty forkki. [http://zen-cart.com zen-cart.com]
  
=== Javascript ===
+
Magneto on [https://trends.builtwith.com/shop tilastojen perusteella] suosituin (2017-05). Magneto ja PrestaShop poikkeavat toisista OSL-3.0 lisenssillään, kun muut on julkaistu GNU GPL-lisenssillä.
  
 +
=== Palvelimen tietokannat ===
  
'''jQuery'''
+
'''MySQL / MariaDB''' ([http://mariadb.org mariadb.org])
  
'''Angularjs'''
+
'''PostgreSQL''' ([http://postgresql.org postgresql.org])
 +
 
 +
'''Elastic''' ([http://www.elastic.co/products/elasticsearch elasticsearch])
 +
 
 +
'''Firebird''' ([https://firebirdsql.org firebirdsql.org]) on etenkin Microsoft Windows käyttäjäyhteisössä suosittu valinta relaatiotietokannaksi. Toisaalta Windows ei ole suosittu valinta Internetin palveluiden alustaksi.
 +
 
 +
* [[Firebird]]
 +
 
 +
'''Vertica''' ([https://my.vertica.com/ vertica.com])
 +
 
 +
Tapauskohtaisesti voi olla tarpeen hallita tietojen muutoksia (''CDC, Change Data Capture'', [https://en.wikipedia.org/wiki/Change_data_capture en.wikipedia.org]) joka mahdollistaa ei haluttujen muutosten havaitsemisen ja tarvittaessa niiden peruuttamisen.
 +
 
 +
=== Käyttöliittymän Javascript ===
 +
 
 +
 
 +
Arkkitehtuureita:
 +
 
 +
'''jQuery''' ([http://jquery.com jquery.com]) on selainriippumaton, modulaarinen (''core, ui/mobile ja 3. osapuolen pluginit'') abstraktiokirjasto joka helpottaa javascript-toteutuksen toteuttamista (dom-model, ajax, käyttöliittymän elementit - widgetit jne). Kummatkin - sekä jquery-ui, että jquery-mobile käyttävät perus jquery-kirjastoa ja tukevat ulkoasun teemoja jotka ovat sivustokohtaisesti räätälöitävissä.
 +
 
 +
Mobiiliversion on tarkoitus toimia myös työpöytäselaimilla, mutta sen toteutustapa poikkeaa merkittävästi jqueury-ui mallista teknisesti. Mobiilissa eri sivut rakennetaan samaan tiedostoon eri lohkoihin ja ladataan kerralla päätelaitteeseen ja sivunvaihdot tapahtuvat mobiilikirjaston suorittamana. Olemassaolevan sivuston muuttaminen mobiilikirjastolla toteutetuksi todennäköisesti vaatisi työlästä uudelleenorganisointia toteutustasolla edellä mainitussa lohkorakenteissa kuin sen toimintatavan eroavaisuuksissa ja siten sen toteuttamista suositellaan aloittamaan tyhjästä käyttämättä vanhaa, esimerkiksi jquery-ui sivustoa. Eroista vaadittava osaaminen vaatii myös toteuttajalta omaksumista tai kokonaan siihen perehtyneitä henkilöitä.
 +
 
 +
Mobiilikirjastolla tehdyt käyttöliittymät tuntuvat työpöydällä kärsivän mobiililaitteille tyypillisestä elemettien koko ruudun/selaimen leveydestä mikä ei toimi työpöydällä - siitäkin huolimatta, että tätä on pyritty huomioimaan kirjastossa. Ulkoasun poikkeavuudet ja edellä mainitut toteutustavan eroavaisuuksista johtuen näyttäisikin, että markkinoilla olevat saitit käyttävät mobiilikirjastoa ainoastaan mobiililaitteiden tukemiseen ja sivut ovat omassa m.example.com urlissa (''m dot site''). Lupaus yhtenäisestä teknisestä alustasta ei ole ainakaan vielä lyönyt itseään läpi. Tämä taas johtaa kahden eri järjestelmän ylläpitoon ja niiden kustannuksiin.
 +
 
 +
Mobiiliwebin vaihtoehto on toteuttaa palvelu työpöydälle optimoituna webinä ja mobiililaitteille tehdyllä mobiilisovelluksella.
 +
 
 +
* [http://demos.jquerymobile.com/ demos.jquerymobile.com] esimerkkejä mobiilin käyttöliittymäelementeistä
 +
* [http://demos.jquerymobile.com/1.4.5/rwd/ demos.jquerymobile.com - RWD] responsive web design, päätelaitteisiin mukautuva toteutus
 +
 
 +
'''Dojo mobile''' [https://dojotoolkit.org/ dojotoolkit.org]
 +
 
 +
'''JQ.Mobi''' [http://jqmobi.com/ jqmobi.com]
 +
 
 +
'''Sencha Touch''' [https://sencha.com/products/touch/ sencha.com - touch]
 +
 
 +
'''AngularJS''' [https://angularjs.org/ angularjs.org].
 +
 
 +
'''React''' [http://reactjs.com reactjs.com].
 +
 
 +
'''MEAN''' ([http://mean.io mean.io])
 +
 
 +
Lisää aiheesta omalla sivullaan: [[Javascript]]
  
 
=== Mobiiliapplikaatiot ===
 
=== Mobiiliapplikaatiot ===
 +
Dominoivat ekosysteemit, '''Applen iOS''' ja '''Googlen Android''' mobiilikäyttöjärjestelmät eivät ole keskenään yhteensopivia. Halutessaan tukea molempia, molemmille tulee tehdä sovelluksestaan omat versiot. Niiden omat kehitysympäristöt käyttävät eri ohjelmointikieliä joka voi asettaa omat vaatimuksensa kehittäjille. Poikkeuksena tästä on mm Qt jota käytettäessä lopputulokset syntyvät molempiin käyttöjärjestelmiin.
 +
 +
 +
'''Googlen Android''' sovellukset kehitetään [https://developer.android.com/studio/ Android Studio] kehitysympäristössä Java-kielellä. Halutessaan voi käyttää myös ''natiivia, C- tai C++'' -kieliä [https://developer.android.com/ndk/ Android NDK] ympäristöllä joka mahdollistaa mm OpenGL grafiikkakirjastojen käytön.
 +
* [https://developer.android.com/ google.com - Android Developers]
 +
 +
'''Applen iOS''' mobiililaitteiden sovellukset kehitetään Applen [http://developer.apple.com/xcode/ Xcode] työkalulla joka toimii vain Mac OS X käyttöjärjestelmässä. Kehitteillä olevan sovelluksen voi asentaa omaan laitteeseensa kierrättämättä sitä Applen sovelluskaupan kautta, mutta jaellakseen sitä sovelluskaupassa pidempään, tästä tulee maksaa erikseen Applelle.
 +
* [http://developer.apple.com/ apple.com - Developer]
 +
 +
'''Microsoft Windows Phone''' käyttää mm DirectX-kirjastoja OpenGL:n sijasta.
 +
 +
'''Qt'''-kehitysympäristöllä voi tuottaa samasta C++-lähdekoodista suoraan Android, iOS, Windows Phone, BlackBerry ja Sailfish sovellukset ylläpitämättä eri versioita eri alustoille. Käyttöliittymä tehdään Qt:n ''Quick'' tekniikalla. Kehitysympäristöön voi tutustua ilmaiseksi 30 päivän ajan.
 +
* [https://www.qt.io/mobile-app-development/ qt.io - Mobile App Development]
 +
 +
=== Käyttöliittymän Python ===
 +
'''Python''' on kielenä [https://insights.stackoverflow.com/survey/2019 kasvattanut suosiota] tietojenkäsittelyssä käyttökohteesta riippumatta ja yrityksiä käyttää sitä web-palveluissa on ollut jo pitkään, sitä on lähinnä jarruttanut selaivalamistajien tuen puute. Javascript-kieli hallitsee webiä, mutta sen ulkopuolella sitä ei juurikaan käytetä. Tästä johtuen Python-kielen osaajia on huomattavasti enemmän ja loogisesti ajateltuna sen käyttö olisi perusteltua kun raskasta ajattelumallin- ja kielen vaihtoa ei tarvita kun kieli on kaikkialla yksi ja sama. Tämä säästää aikaa ja rahaa.
 +
 +
Jotkut Python-websivusto toteutukset ovat vaatineet selaimen laajennoksia joita ei ole ollut kaikkiin yleisesti käytössä oleviin selaimiin saatavilla ja tämä on myös vaatinut käyttäjältä Python-tuen asentamista laajennusmodulilla jota ei voida pitää kohtuullisena vaatimuksena - varsinkaan aikana kun verkkopalvelujen käyttö on levinnyt tietokoneiden ulkopuolelle mobiililaitteisiin, älytelkkareihin ja olohuoneiden pelikonsoleihin joihin sitä ei ole saatavilla. Viimeisimmät Python-kielellä tehdyt websivustot pohjautuvat Javascriptiin jolloin Python-tuen asentamista ei tarvita ja palvelut toimivat suoraan vaikka ne olisi ohjelmoitu Python-kielellä. Tämä on ollut yllättävä ja mullistava kehityssuunta.
 +
 +
Jos Pythonin käyttö lisääntyy, Javascriptiin pohjautuvat toteutukset saattavat olla vain välivaihe ja lopulta puhdas Python-kielen tuki alkaa yleistyä selaimissa ja palveluiden suoritusnopeudet paranevat. Vaikka näin ei tapahtuisi, mikään ei estä siirtymästä Pythonin käyttöön jos se todetaan toimivaksi kyseisessä käyttötarkoituksessa.
 +
 +
Selaimen JavaScript-Python toteutuksia:
 +
* '''Brython''' ([http://brython.info brython.info])
 +
* '''Skulpt''' ([http://skulpt.org/ skulpt.org])
 +
* '''Pyjs''' ([http://pyjs.org pyjs.org])
 +
* '''Transcrypt''' ([http://transcrypt.org/ transcrypt.org])
 +
* '''PyPy.js''' ([http://pypyjs.org/ pypyjs.org])
 +
* '''PyScript''' ([https://pyscript.net/ pyscript.net])
 +
 +
Yksi vaihtoehto on toteuttaa Python-tuki WASM-binäärinä (''Web Assembly'').
 +
* [https://pythondev.readthedocs.io/wasm.html pythondev.readthedocs.io - CPython WebAssembly]
 +
* [https://pyodide.org pyodide.org - CPython WebAssembly]
 +
 +
Yhteistä kaikille toteutustavoille on niiden raskaus, pelkkä Python-tuen lataaminen vaatii satojen kilotavujen, tai yli megan tiedoston lataamisen selaimeen. Tämän voisi uskoa ratkeavan jos toteutus tehdään osaksi selainta tai muut tavat yleistyvät ja se löytyy jo lataushetkellä välimuistista.
 +
 +
Artikkeleita ja vertailuja:
 +
* [http://stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html Stromberg - python in browser]
 +
* [https://brythonista.wordpress.com/2015/03/28/comparing-the-speed-of-cpython-brython-skulpt-and-pypy-js/ Comparing the speed of CPython, Brython, Skulpt and pypy.js]
 +
 +
== Verkkotunnus ja varmenne ==
 +
=== Verkkotunnus ===
 +
Suomalaisen .fi-päätason verkkotunnuksen (''TLD, top-level domain'') omistaa valtio ja sitä hallinnoi [[Viestintävirasto]]. Sen alta löytyviä tietoja voi tarkastella [http://domain.fi domain.fi] -verkkopalvelussa. Tunnuksen anominen on hajautettu eri verkkotunnusvälittäjille joilta tunnuksia voi rekisteröidä ja hankkia siihen liittyviä palveluita. Verkkotunnusvälittäjäksi voi rekisteröityä myös itse.
 +
 +
Tunnuksella voi olla eri omistaja ja siihen liittyvän tekniikan hoitamiseen erikoistunut taho (haltija). Anottaessa tunnusta loppukäyttäjän tulee varmistua, että rekisteriin merkitään oikea omistaja eikä palveluntarjoajaa koska tällöin täysi omistus- ja määräysvalta ei ole tunnuksen käyttäjällä.
 +
 +
'''Ennen 5.9.2016''' anottuja verkkotunnuksia saattaa yhä olla Viestintäviraston rekisterissä, josta ne piti siirtää kaupalliselle välittäjälle ennen viraston oman hallintakäyttöliittymän sulkemista. Verkkotunnuksen myöntämisen yhteydessä annetut valtuutusavaimet on mitätöity em. päivänä eikä niitä saa enää uusia itsepalvelun kautta, vaan tulee asioida Viestintäviraston kanssa uuden saamiseksi. Palvelun sulkemisen yhteydessä suljettiin myös tunnuksen voimassaolon päättymisestä muistuttavien sähköpostien lähettely, joten riski menettää oma verkkotunnus hallinnan laiminlyönnin takia on suuri ja tämä on jo tapahtunut monelle suomalaiselle tunnuksen käyttäjälle.
 +
 +
* [https://www.viestintavirasto.fi/fiverkkotunnus/fi-verkkotunnuksenhankkiminen/etsivalittajaa.html  viestintavirasto.fi - Etsi välittäjää]
 +
 +
=== Varmenne ===
 +
 +
Palvelu voi tarvita [[varmenne|varmenteen]], jotta kävijä tietää varmasti asioivansa oikeassa palvelussa eikä petosta yrittävällä näköiskopiolla. Varmennetta käytetään aloittamaan suojattu (salattua) SSL-yhteys joka näkyy WWW-selaimessa https-linkin yhteystapana. [[Varmentaja|Varmentajia]] on sekä julkishallinnollisia, kaupallisia että ilmaisia. Niiden myöntämät varmenteet on sidottu verkkotunnuksen nimeen, ne ovat useimmiten maksullisia ja aina määräaikaisia.
 +
 +
* [[Lista varmentajista]]
 +
 +
== Lait, asetukset ja direktiivit ==
 +
 +
 +
=== Käyttöehdot ===
 +
 +
=== Henkilötietolaki ===
 +
 +
Tietosuoja-asetuksen mukaan vanhoja henkilötietolakien rekisteri- ja tietosuojaselostetta [http://tietosuoja.fi/fi/index/ajankohtaista/tiedotteet/on/05/tietosuoja-asetuseiedellytaentisenkaltaistarekisteri-taitietosuojaselostetta.html ei tarvitse enää jatkossa] tehdä.
 +
 +
* [[Henkilötietolaki]]
 +
 +
==== Rekisteriseloste ====
 +
 +
[[henkilötietolaki|Henkilötietolain]] 10 §:n mukaan ''Rekisterinpitäjän on laadittava henkilörekisteristä rekisteriseloste, josta ilmenee'':
 +
 +
1) rekisterinpitäjän ja tarvittaessa tämän edustajan nimi ja yhteystiedot;
 +
 +
2) henkilötietojen käsittelyn tarkoitus;
 +
 +
3) kuvaus rekisteröityjen ryhmästä tai ryhmistä ja näihin liittyvistä tiedoista tai tietoryhmistä;
 +
 +
4) mihin tietoja säännönmukaisesti luovutetaan ja siirretäänkö tietoja Euroopan unionin tai Euroopan talousalueen ulkopuolelle; sekä
 +
 +
5) kuvaus rekisterin suojauksen periaatteista.
 +
 +
Rekisterinpitäjän on pidettävä rekisteriseloste jokaisen saatavilla. Tästä velvollisuudesta voidaan poiketa, jos se on välttämätöntä valtion turvallisuuden, puolustuksen tai yleisen järjestyksen ja turvallisuuden vuoksi, rikosten ehkäisemiseksi tai selvittämiseksi taikka verotukseen tai julkiseen talouteen liittyvän valvontatehtävän vuoksi<ref name='henkilötietolaki-10'>[http://www.finlex.fi/fi/laki/ajantasa/1999/19990523 finlex.fi - Henkilötietolaki 523/1999] Viitattu: 2016-03-07</ref>.
  
 +
* [[Henkilötietolaki#Rekisteriseloste]]
  
=== Tietokannat ===
+
==== Tietoturvaseloste ====
  
'''MariaDB'''
 
  
'''PostgreSQL'''
+
=== Henkilörekisterilaki ===
  
'''Elastic'''
+
* [[Henkilörekisterilaki]]
  
== Lait ja sertifikaatit ==
+
=== Sähköisen viestinnän tietosuojalaki ===
 +
* [http://www.finlex.fi/fi/laki/ajantasa/2004/20040516#L2P7 käyttöä kuvaavien tietojen tallentaminen käyttäjän päätelaitteelle ja niiden käyttö] (evästeet / keksit / cookiet)
  
=== EU direktiivit ===
+
=== EU direktiivit ja asetukset ===
  
 
* [http://ec.europa.eu/ipg/ ec.europa.eu - Information Providers Guide]
 
* [http://ec.europa.eu/ipg/ ec.europa.eu - Information Providers Guide]
 +
 +
==== Tietosuoja-asetus ====
 +
 +
Euroopan parlamentti ja neuvosto sääti 27. hutikuuta 2016 '''asetuksen 2016/679''' luonnollisten henkilöiden tietosuojasta (''General Data Protection Regulation, GDPR'') - ''luonnollisten henkilöiden suojelusta henkilötietojen käsittelyssä sekä näiden tietojen vapaasta liikkuvuudesta''. Asetus tulee voimaan jo 26. toukokuuta 2018, kahden vuoden transitiovaiheen jälkeen, suoraan ilman jäsenvaltioiden kansallista ratifiointia.
 +
 +
* Lisää aiheesta: [[Tietosuoja]]
 +
 +
 +
==== Maksupalveludirektiivi PSD2 ====
 +
Maksupalveludirektiivi (PSD2) on vietävä kansalliseen lainsäädäntöön Euroopan unionin jäsenmaissa, Suomessa se tapahtui 13. tammikuuta 2018.
 +
 +
* [[PSD]]
 +
 +
=== Mediakortti ===
  
 
=== Viranomaisvaatimukset ===
 
=== Viranomaisvaatimukset ===
  
== Tunnistaminen verkossa ==
+
* [[Laki sähköisestä asioinnista viranomaistoiminnassa]]
=== TUPAS ===
+
* [[Laki viranomaisten toiminnan julkisuudesta]]
 +
* [[Laki digitaalisten palvelujen tarjoamisesta]]
 +
* [[Laki julkisen hallinnon tiedonhallinnasta]]
 +
* [[Laki vahvasta sähköisestä tunnistamisesta ja sähköisistä allekirjoituksista]]
 +
* [[EU 2016/2102]] eli saavutettavuusdirektiivi
 +
* [[EIDAS]]
 +
* [[KATAKRI]]
 +
 
 +
== Tunnistaminen ja tiedot ==
 +
 
 +
Palvelun luonteesta riippuu riittääkö pelkkä henkilön tunnistaminen koko asiointiin vai tarvitseeko tapahtuma tietoa myös tunnistetun henkilön oikeuksista eri rooleihin ja valtuuksiin sekä asiojan henkilötietoja. Suurin osa tunnistusmenetelmistä ei sisällä roolitietoa ja palvelun toteuttaminen vaatii tällöin yhteydet taustajärjestelmiin joiden tiedot on tyypilisesti suojattu lailla ja siten yhteys vaatii sopimuksen rekisterinpitäjään ja sen käyttö on maksullista ja valvottua.
 +
 
 +
'''Henkilöasioijan tietoja''':
 +
* nimi
 +
* syntymäaika-, -paikka ja -valtio
 +
* yksilöivät tunnukset: [[HETU]], [[SATU]]
 +
* kansalaisuus
 +
* kotipaikka
 +
* asioijan elossaolon tarkastus
 +
* ikä ja täysi-ikäisyys
 +
* oikeudellisen toimikelpoisuuden rajoitukset
 +
* avioliitto- tai rekisteröity parisuhde
 +
* sukulaissuhteet
 +
* huollettavat (lapset)
 +
* äänioikeus eduskunta-, kunnallis-, presidentti- ja EU-parlamentin vaaleissa.
 +
 
 +
'''Yhteisöasioijan tietoja'''
 +
 
 +
* nimi
 +
* yksilöivät tunnukset: [[Y-Tunnus]], [[LEI]]
 +
* ALV-numero
 +
 
 +
'''Asiointikohteen tietoja''':
 +
* alaikäisen tai edunvalvonnan alaisen edustajan valtuutus
 +
* yhteisöt: yhdistykset, säätiöt, kunnat, seurakunnat, valtio - ja nämä ulkomaalaisina
 +
** edustetun yhteisön [[nimenkirjoitusoikeus]] - toimivalta, kelpoisuus (Kaupparekisteri)
 +
** edustetun yhteisön päätösvaltaisuus - riittävä määrä allekirjoittajia
 +
* käsitellyn asian omistusoikeudet, panttaukset, tms ja valtakirjat
 +
 
 +
 
 +
Osa näistä tiedoista saadaan nykyään [[Tekniikka/Digivirasto|Digiviraston hakemistoista]] ja [[VTJ|västötietojärjestelmästä]], verohallinnon rekisteriin tallennetuista [[KATSO]]-tunnusten välisisistä valtuutuksista ja Patentti- ja rekisterihallituksen [[Kaupparekisteri|Kaupparekisteristä]]. Jatkossa Palveluväylän rooli- ja valtuutuspalvelu [[RoVa]] yhdistää ja korvaa kaikki edellämainitut julkis- ja yksityissektorin yhteisöjen osalta.
 +
 
 +
 
 +
=== Pankkitunnukset ===
 +
'''Pankkitunnukset''' eli [[TUPAS|TUPAS-tunnistuspalvelu]] oli Suomen laajimmassa käytössä oleva lain tarkoittama vahva tunnistusväline. Siihen liittyminen vaati sopimuksen kaikkien eri tuettavien pankkien kanssa. Sopimuksista veloitettiin perusmaksu joka kuukausi ja joka tunnistustapahtumasta noin 0,50 euroa. TUPASta käyttävän palvelun tarjoajan tuli hakeutua [[Traficom]]in valvontaan josta maksetaan ensimmäisenä vuotena liittymismaksu (5000?) euroa ja vuosittain (12000?) euroa valvontamaksua.
 +
 
 +
Verkkopalvelun liittäminen TUPAS-järjestelmään oli myös haastavaa teknisesti koska sen dokumentaatio on salaista, avoimia liityntäkirjastoja tai julkista keskustelua ongelmanratkomisesta ei ole.
 +
 
 +
Lokakuusta 2019 alkaen TUPAS ei enää täyttänyt eIDASin mukaisia vahvan tunnistamisen kriteereitä ja toimijoiden oli siirryttävä jonkun [[Luottamusverkosto]]n jäsenen asiakkaaksi.
 +
 
 +
[[Palvelulle/Pankkitunnukset]]
 +
 
 +
=== Mobiilivarmenne ===
 +
'''Mobiilivarmenne''' on
 +
* [[Mobiilivarmenne]]
 +
 
 +
=== Henkilökortti ===
 +
 
 +
Moni Euroopan [[Maailma|maista]] on lisännyt henkilökortteihinsa sähköisen sirun jolla on varmenne asioijan tunnistamista varten (poikkeuksena [[Saksa]]). Varmenteella tunnistaminen '''ei maksa palvelulle mitään'''. Takaajien juurivarmenteet ja estettyjen tunnisteiden sulkulistat ovat ilmaiseksi saatavilla. Varmenteita käyttävä tunnistustapahtuma (''Client Side Certificate'') on tietotekniikassa laajalti tunnettu toimenpide ja siten sen lisääminen palveluun kehityskustannuksiltaan on kohtuullinen, toisiin kehysohjelmistoihin löytyy valmiit komponentit sitä varten.
 +
 
 +
Henkilökortin tunnistaminen perustuu yleiseen [[PKI]]-teoriaan josta puuttuu laskutuksen mahdollistavat ominaisuudet, sen käyttöä ole siten rajoitettu mitenkään, sillä voivat tunnistaa yksityisen sektorin toimijat kuten julkinen sektori. Henkilökortti mahdollistaa myös allekirjoittamisen palvelussa ja muun käytön (VPN, lähiverkon sisäänkirjautuminen, sähköpostin salaus ym).
 +
 
 +
Suomen tapauksessa tunnistustapahtumassa palveluntarjoaja saa [[Henkilökortti|henkilökorttia]] ja [[Mobiilivarmenne|Mobiilivarmennetta]] käyttävän asioijan erittelevän [[SATU]]-tunnisteen [[HETU]]:n sijasta. [[Väestörekisterikeskus]] myy erikseen kk-laskutettua [[VTJ]]-kyselypalvelua jolla SATU-HETU sidos voidaan haluttaessa tehdä.
 +
 
 +
Aktiivisia henkilökortteja on Suomessa 1,46 miljoonaa kappaletta (2022-03-07).
  
 +
Varmennehierarkiaa tarjoavien EU-maiden lista löytyy [[TSL]]-tilasivulta.
  
[[Palvelulle/TUPAS]]
+
=== Suomi.fi ===
 +
'''Suomi.fi'''-tunnistus on julkishallinnon yhteinen tunnistuspalvelu, yksityisen sektorin toimijat eivät voi liittyä siihen. Sen avulla julkishallinnon asiointipalvelut saavat kaikki suomalaiset vahvat tunnistusvälineet käyttöönsä yhden rajapinnan kautta. <del>Lisäksi palvelu sisältää mahdollisuuden hyödyntää myös [[KATSO]]-tunnistautumista.</del>
  
=== Julkisen Avaimen Infrastruktuuri (PKI) ===
+
Palvelu tarjotaan julkishallinnon asiointipalveluille [[SAML]]-rajapintaan perustuen. Palvelun lähdekoodi on vapaasti saatavilla.
  
 +
* [[suomi.fi]] - aihesivu
 +
 +
=== Palveluväylä ===
 +
'''Palveluväylä''' on Virossa kehitetyn yhteiskunnan taustaväylä [[X-Road]]:n suomalainen instanssi jolla voi myös tunnistaa(?) ja jossa välittyy asioijien metatietoja joita ei lyödy tunnisteesta. Liittyminen vaatii liittymäsopimuksen, oman liityntäpalvelimen ja siitä on ?? kustannuksia kuukausittain.
 +
 +
* [http://beta.suomi.fi beta.suomi.fi]
 +
* [[Palveluväylä]]
 +
* [[X-Road]]
 +
 +
=== eIDAS ===
 +
Euroopan Unioni toteuttaa [[eIDAS]]-direktiivin mukaista kertakirjautumispalvelua [[PEPS]]-palvelinverkostolla johon eri palveluntarjoajien on tarkoitus liittyä. Suomen valtio on ollut hidas tukemaan muiden maiden välineitä palvelussaan. Digivirasto [[Digivirasto/Notifiointisotku|jätti notifioimatta]] Suomen kortit EU:lle jonka takia suomalaiset eivät voi myöskään tunnistautua ulkomaisiin palveluihin.
 +
 +
=== Muu maailma ===
 +
 +
Jos on tarve tunnistaa koko maailman verkon käyttäjät, asia menee monimutkaisemmaksi.
 +
 +
* [[Maailma|Tunnistus- ja allekirjoitusjärjestelmät maailmalla]]
 +
 +
== Kolmannen osapuolen sisällöt / Avoin data ==
 +
Jos palvelu käyttää hyväkseen esimerkiksi karttoja verkkosivuillaan, mistä niitä saa ja millä ehdoilla?
 +
 +
* [http://avoindata.fi avoindata.fi]
 +
* [http://data.europa.eu/euodp data.europa.eu - Euroopan Unionin avoimen datan portaali]
 +
* [https://pelikone.eu/ pelikone.eu]
 +
 +
=== Kartat ===
 +
* [http://maanmittauslaitos.fi/kartat-ja-paikkatieto maanmittauslaitos.fi - kartat ja paikkatieto]
 +
** [http://kartat.kapsi.fi/ kartat.kapsi.fi] Maanmittauslaitoksen peili jota palvellaan HTTP-, FTP- ja rsync-protokollilla.
 +
** [http://mmm.fi/paikkatietoalusta mmm.fi - paikkatietoalusta] oikeus sisältöihin ei selviä sivulta (2017-09)
 +
* [https://support.google.com/maps/?hl=fi google.com - Google Maps ohjeet]
 +
* [http://www.openstreetmap.org openstreetmap.org/]
 +
 +
== Tapahtuman käsittely ==
 +
Tapahtuman elinkaaren eri vaiheisiin löytyy asiointia edistäviä teknisiä ratkaisuja.
 +
 +
=== Muodot ===
 +
'''Tapahtuman muodot''' ovat yleisesti tehtyjen tapahtumien spesifisiä muotoja, formaatteja joilla saadaan koneluettava automaatio toteutettua helpommin. Klassinen esimerkki yleisestä tapahtuman muodosta on laskutus, mutta ostotapahtuman muihin vaiheisiin löytyy määrityksiä ja niitä kehitellään lisää mm EU-tasolla.
 +
* [[Hankinta]]
 +
* [[Laskutus]]
 +
* [[Kuitti]]
 +
 +
=== Allekirjoitus ===
 +
 +
'''Allekirjoitus''' sitoo osapuolet tapahtuman todistavaan dokumenttiin. Aihe on ollut vaikea Suomessa pitkään eikä siitä ole vieläkään laajalle levinnyttä, vaikiintunutta käytäntöä joka olisi kaikkien osapuolien hyväksymä ja tunnustama. Epäselvyyttä on lähes kaikesta: takaajasta, käytännön toteutuksesta ([[Arkkitehtuurivertailu|tavasta]], [[Tekniikka/Allekirjoitus|allekirjoitusmuodosta]], tallennuspaikoista jne).
 +
 +
* [[Allekirjoitus]]
 +
* [[Arkkitehtuurivertailu]]
 +
 +
=== Maksaminen ===
 +
 +
* [[Maksaminen]]
 +
* [[Laskutus]]
 +
 +
=== Perintä ===
 +
 +
* [[Perintä]]
 +
 +
== Käyttäjätilastot ==
 +
'''Google Analytics''' ([http://analytics.google.com analytics.google.com])
 +
 +
'''Chartbeat''' ([http://chartbeat.com chartbeat.com])
 +
 +
'''Woopra''' ([http://woopra.com woopra.com])
 +
 +
== Pilvipalvelut ==
 +
'''Pilvipalvelut'''
 +
 +
* [[Pilvipalvelut]]
 +
 +
== Projektipalvelut ==
 +
 +
=== SEO palvelut ===
 +
'''SEO''' (''Search Engine Optimization'') tarkoittaa hakukoneiden hakutulosten manipulointia, ''optimointia'' - jos sen haluaa sanoa vähemmän negatiivisessa kontekstissa. Vähän kuin kutsua ongelmia haasteiksi. Tässä vaiheessa fiksumpi lukija jo arvaa puolet tulevasta.
 +
 +
Hakukoneiden optimointi tarkoittaa esimerkiksi suositun Google-hakukoneen tulosten järjestyksen muuttamista siten, että optimonnista maksavan palvelu löytyy viidennen tulossivun sijasta ensimmäiseltä sivulta. Jos uusi juuri avattu verkkopalvelu ei tunnu saavan tarpeeksi kävijöitä, SEO-palvelun tarjous saattaa tuntua houkuttelevalta.
 +
 +
Mutta miten he tekevät sen? Suurinta osaa maksajia tämä ei kiinnosta, kunhan asiat liikkuvat eteenpäin. Vaikka ehkä pitäisi.
 +
 +
Hakukoneet toimivat roboteilla (''web crawlers'') jotka penkovat verkon sisältöä taukoamatta ja tallentavat niiden sisältöjen piirteitä tietovarastoihinsa. Hakupalvelun algoritmit indeksoivat tätä valtavaa tietomassaa, osa siitä perustuu myös ihmisten tekemään käsityöhön. Verkon hakukoneen tulokset perustuvat tähän kerättyyn ja käsiteltyyn tietoon.
 +
 +
Internetissä on paljon, jopa suurin osa sisällöstä ilmaista ja vapaata kulutettavaksi. Moni palvelu kuten Wikipedia, Youtube, sosiaalinen media, monet keskustelufoorumit ym ovat ilmaisia käyttäjilleen. Ihmisten tunnistaminen verkossa ei ole yksiselitteistä ja se usein maksaa sitä tekevälle sitä enemmän mitä varmemmin sen haluaa tehdä. Tästä johtuen suurimpaan osaan palveluista voi luoda tekaistuja käyttäjiä. Sama taho voi luoda käyttäjätunnuksensa uudestaan jos entisen käyttö estyy, koska ensitunnistusta ei tehdä eikä käyttäjää yksilöidä.
 +
 +
SEO-palveluntuottajat käyttävät hyväkseen tätä löyhää tunnistamista ja yksilöinnin puutetta, luomalla tekaistuja käyttäjiä verkon avoimiin palveluihin kuten lukuisiin wiki-sivustoihin ja keskustelufoorumihin. Syöttämällä niihin tekstimassoja ja verkon linkkejä, ne samalla syöttävät hakukoneiden roboteille niiden hakutuloksia vääristäviä - ''optimoivia'' sisältöjä. Käytännössä kyse on roskapostista joka leviää postijärjestelmän ulkopuolella.
 +
 +
Sotkeminen, töhriminen ja olemassaolevien sisältöjen pilaaminen aiheuttaa valtavasti turhaa työtä näitä palveluita käyttäville ja niiden omistajille. Moni palvelu on sosiaalisen median paineessa laittanut lopullisesti lapun luukulle kun muuten kivasta palvelusta on alkanut olemaan enemmän riesaa kuin iloa kerta toisensa jälkeen Viagra, peniksenpidennys jne törkeyksien siivoamisen jälkeen.
 +
 +
Miksi SEO-palveluntarjoajat sitten tekeävät tätä? Samasta syystä kuin roskapostittajat lähettävät roskapostia - joku maksaa siitä. Oletko se sinä? Onko se teidän palvelu? Teidän yhteisö?
  
 
== Sopimukset ==
 
== Sopimukset ==
  
 +
Palvelun toteutusta tilattaessa kannattaa miettiä sen eri elinkaaren vaiheita ja palvelun osien ja siihen syötetyn sisällön oikeuksia. Automaattisesti tulee ajateltua, että ainakin sisältö on palvelun '''omistajan''' omaisuutta. Miten toimia tilanteessa jos järjestelmä lakkaa toimimasta tai se tulee rakentaa uudelleen - joko saman '''toteuttajan''' tai nykyisen kilpailijan avustamana? Onko se mahdollista ja mielekästä? Mitä se kaikki maksaa ja kauanko se kestää? Onko halvempaa ja nopeampaa aloittaa tietojen syöttö alusta? Onko se edes mahdollista jos järjestelmä on tuottanut osan tiedosta?
 +
 +
Monet palvelut sisältävät tietokannan joka yleensä on SQL-tyyppinen relaatiotietokanta. Tietokanta koostuu tauluista, sen sarakkeista, taulujen välisistä sidoksista ja monesta muusta yksityiskohtaisesta määrittelystä jonka tekeminen on vaativaa ja aikaa vievää. Tietokannan rakenteen kuvaus on siis itsessään jo arvokas ja voi täyttää immateriaalisen teoksen tunnusmerkit.
 +
 +
Omistaja yleensä haluaa palvelustaan säännölliset varmuuskopiot (''eng database dump'') kaiken varalle. Tietokannasta - tai vastaavasta tehtynä se paljastaa tekotavan ja mahdollistaa ratkaisun monistamisen rajatta. Immateriaalinen teos siis siirtyy toteuttajalta asiakkaalle. Mitkä ovat sen käyttö- ja levitysoikeudet? Saako sillä tai sitä hyödyntäen rakentaa palvelun uudelleen? Toisen toteuttajan, kolmannen osapuolen avustamana? Käyttäen samoja - tai kilpailevan toteuttajan komponentteja? Koskevatko oikeudet vain palvelun nykyistä omistajaa vai myös kolmatta osapuolta joka osti palvelun tai sen nykyisen omistajan?
 +
 +
Mitä jos omistaja ei saa, tai ei ole saanut vuosikausiin kopiota tiedoistaan? Niistä on otettu varmuuskopiot, mutta ne ovat toteuttajan hallussa. Mitä jos osapuolet riitaantuvat, esimerkiksi nousseista hinnoista - tai syötetyn sisällön omistajuudesta keskustellessa - ja palvelusopimus lakkaa, pahimmassa tapauksessa palvelu sammuu verkosta samalla?
 +
 +
Omistajan syöttämien tietojen hallitseminen - olivat ne sitten toteuttajan tai omissa tiloissa, on mahdollista jos niiden normaalia käyttöä laajempi hyödyntäminen on estetty teknisellä muodolla (ei esimerkiksi luovuteta tekstimuotoista tms luettavaa tietokannan varmuuskopiota) tai pääsynestolla. Hallinnan menetys nostaa lähtökynnystä (''barrier to exit'') ja saattaa laskea kynnystä kovempaan hinnoitteluun tai muihin sopimusehtoihin kun tiedetään, että toteutuksen kilpailuttaminen on vaikeaa tai mahdotonta ilman toteuttajan suostumusta.
 +
 +
Kummankin osapuolen näkemys on ymmärrettävä:
 +
* Tietokantasuunnittelu on kallista ja helposti monistettavaa/väärinkäytettävää arvoa, sitä halutaan suojella. Toisaalta alan kilpailu on kovaa ja kokonaisuuden oikeuksista, riitapykälistä ja yhteistyön lopettamisen yksityiskohtia ei haluta tuoda esille hankinta/tarjousvaiheessa.
 +
* Voisi olettaa, että tiedon tuottaja ja lähde omistaa - sekä hallitsee tietonsa täysin. Näin ei kuitenkaan aina ole, koska asia ei ole tullut mieleen hankinta/kilpailutusvaiheesa. Jälkikäteen asiaa on enää vaikea sopia jos oma tieto on jo ulkopuolisen kontrollissa ja tyydyttävään sopimukseen ei olisi päässyt hankintavaiheessakaan.
 +
 +
Tärkeintä olisi, että molemmille osapuolille on selvää alusta asti:
 +
* kenen omaisuutta sisältö on
 +
* kenen omaisuutta palvelun mahdollinen ohjelmakoodi on
 +
* kenen omaisuutta palvelun visuaalinen suunnittelu ja toteutus on (ulkoasu)
 +
* kenen omaisuutta sen tekninen kuvaus on (esim tietokannan rakenne)
 +
* mitkä edelläolevien käyttöoikeudet ovat
 +
* missä muodossa tiedot on tallennettu (jokin tunnettu relaatiotietokanta ja/tai yhdistelmä tms)
 +
* missä sisällön tallennus sijaitsee fyysisesti (omistajan, toteuttajan vai kolmannen osapuolen tiloissa)
 +
* kenellä on rajoittamattomat pääsyoikeudet (tai kopiot) palvelun osiin (ulkoasu, ohjelmakoodi) ja sisältöön (tietokanta, tiedostot)
 +
* kuka ottaa eri osista varmuuskopiot, missä muodossa (tietokannan varmuuskopio, XML-kuvaus tms) ja mihin
 +
* saako omistaja säännöllisen varmuuskopion jota voi itse - tai palkattu kolmas osapuoli tulkita ja millä ehdoin
 +
* jos varmuuskopio ohjelmakoodeista ja sisällöstä luovutetaan, onko niiden toimivuutta / pystyttämistä kokeiltu säännöllisesti
 +
 +
Kaikka ylläolevaa olisi hyvä miettiä jo ennen hankintapäätöstä. Kannattaa miettiä mitä tapahtuu jos osapuolet riitaantuvat ja keskeyttääkö riitaantuminen / sopimuksen tulkinta esim oikeudessa palvelun toiminnan tai sen kehittämisen / siirtämisen uuteen palvelimeen, ohjelmointikieleen, tietokantaan jne. Missä maassa ja missä sen instanssissa erimielisyydet ratkotaan? Mitkä ovat osapuolien vaitolovelvollisuudet? Onko yllämainittuja kohtia mainittu sopimuksessa ja mitä niiden rikkomisesta seuraa? jne yleiset sopimusasiat.
 +
 +
Aiheesta muualla:
 
* [http://it2010.fi/ it2010.fi]
 
* [http://it2010.fi/ it2010.fi]
 +
* [http://it2010.fi/ IT2015 uudistetut sopimusehdot]
 +
* [http://www.jhs-suositukset.fi/web/guest/jhs/recommendations/166 jhs-suositukset.fi - HS 166 Julkisen hallinnon IT-hankintojen yleiset sopimusehdot (JIT 2015)]
 +
 +
== Katso myös ==
 +
* [[Palvelulle/Tunnistevälinepyyntö]]
 +
 +
== Lähteet ==
 +
<references/>
 +
 +
== Aiheesta muualla ==
 +
* [https://www.axelos.com/best-practice-solutions/itil axelos.com - ITIL, IT Infrastructure Library, service management process framework]
 +
* [http://itsmf.fi itsmf.fi - ITIL-foorumi Suomessa]

Nykyinen versio 7. marraskuuta 2023 kello 09.59

TEKIJÄT: JUHA TUOMALA


Palvelun omistajalle (henkilö, yritys, yhdistys tms yhteisö) digitalisaatio asettaa isoja haasteita teknologian kehitysnopeuden ja käyttöönottotahdin ollessa muita teollisuudenaloja nopeampi. Monen yhteisön päättäjälle tietotekniikka vain sivuaa itse yhteisön ydintoimintaa - mutta silti sähköisten palveluiden tarjoamiselle kasvaa paineita ja niiden suunnittelu ja rakentaminen vaatii paljon perehtymistä ja asiantuntijaresursseja joita ei välttämättä ole käytettävissä. Vääriä valintoja tehdessä investointi saattaa vaatia uudelleen rakentamista ennen aikojaan ja väärälle valitulle teknologialle sopivan toimittajan löytäminen myöhemmin saattaa olla vaikeaa ja kallista.

Yhteisön johdolle yksi, joskin työläs vaihtoehto tehdä oikeita valintoja vähillä resursseilla on itse perehtyä verkkopalveluiden ratkaisuihin ja analysoida paras vaihtoehto eri arkkitehtuureista, tekniikoista ja kehityksen trendeistä. Huolimatta toteuttajasta, palvelun omistajan tulisi ainakin tietää millä ja miten palvelu on toteutettu ja mitkä vaikutukset valinnoilla on palveluun ja sen elinkaareen.

Sivulle on koottu yhteenveto eri osa-alueista auttamaan päätöksenteossa ja herättämään ajatuksia. Sisältö ei käsittele avaimet-käteen palveluita joissa kaikki edelläoleva on jo sivuutettu ulkoistettuna.


Kohderyhmät

Kohderyhmä ja sen suhde palveluun yleensä määrittelee palvelun toteutustavan ja arkkitehtuurin. Arkkitehtuurivalintoja on viime aikoina muokannut mobiililaitteiden suosion kasvu ja toisaalta web-käyttöliittymien ulkoasun ja vasteellisuuden kehittyminen, jonka myötä sen kehitysmalleja on kopioitu henkilökohtaisten tietokoneiden käyttöliittymien kehityksestä.

Komponenttien ja arkkitehtuurin valinta perustuu usein kohderyhmän käyttöprofiilista ja siihen investoitujen kehitys- ja ylläpitokustannusten kompromissista. Jos palvelua/palvelu:

  • käyetään satunnaisesti
  • käytetään toistuvasti
  • käytetään eri päätelaitteilta kuten tietokoneelta ja mobiililaitteesta
  • käytetään päätelaitteeseen asennetulla sovelluksella
  • käsittelee tekstiä monimutkaisempia aineistoja kuten karttoja, videota tai ääntä

Käytetään satunnaisesti

Jos käyttö on satunnaista, enimmäkseen tekstin ja kuvien käsittelyä ja tapahtuu tietokoneelta - yleinen tapa on toteuttaa se web-selaimessa ja valittavana on useita eri sovelluskehyksiä ja arkkitehtuureita.

Tyypillinen esimerkki on henkilön rekisteröinti palveluun, jossa syötetään henkilö- ja yhteystiedot.

Käytetään toistuvasti

Suuri käyttöaste - suuret käyttäjämäärät tai jatkuva käyttö voi asettaa isommat vaatimukset käytettävyydelle ja siten perustella suuremmat investointikulut, ylläpitokulut ja pidemmän kehitykseen käytetyn ajan. Isoilla resursseilla tehtynä MVC-arkkitehtuuri täyttää mainitut kriteerit parhaiten. Sovelluksen voi toteuttaa joko natiivina päätelaitteen ohjelmana tai web-sovelluksena.

Typillisiä esimerkkejä ovat valtionhallinnon sovellukset, kaupalliset sovellukset kuten sähköposti, tekstinkäsittely, kirjanpito jne.

Käytetään eri päätelaitteilta

MVC raskas, applikaatioserveri kevyempi, eri alustojen jaettu koodi kustannustehokkaampi

Käytetään päätelaitteeseen asennetulla sovelluksella

Käsitellään tekstiä monimutkaisempia aineistoja

kartat, multimedia -> app

Arkkitehtuurit

Templaattipohjaiset (MVT)

Esimmäisen sukupolven palveluita kehitettiin enimmäkseen templaatti-järjestelmien (Model View Template, MVT) avulla. Yksinkertaisimmillaan kaikki tietokantakyselyt tehtiin käsin suoraan käyttöliittymän templaateista ja niiden kehittäminen ja ylläpito oli hidasta ja kallista. Teknologia ei sinänsä rajoita hyviä kehitystapoja ja kehitykseen käytetyn ajan sekä kehityskulujen hallinta on silti mahdollista. Ratkaisu voi olla sopiva pienien kehitysresurssien tarpeeseen vielä nykyäänkin.

Asiakas-palvelin ympäristöt (Application Server)

Toisen sukupolven arkkiehtuuriksi voidaan kutsua asiakas-palvelin (Application Server) arkkiehtuuria jossa itse sovellus muodostuu palvelimessa jatkuvasti pyörivästä sovelluksesta tietokantoineen ja käyttäjän päässä on käyttöliittymä joka ladataan kerran alussa ja kommunikoi käytön edetessä kevyesti sovelluspalvelimessa pyörivän sovelluksen kanssa. Arkkitehtuurin etu on sovelluksen jatkuva käynnissäolo joka ainakin periaatteessa näkyy käyttäjälle nopeutena koska samoja käynnistyksen alussa tehtäviä rutiineja ei ajeta käyttäjän jokaisesta toimesta käyttöliittymässä. Haittana on sovelluspalvelimen tai sovelluksen kaatuminen virhetilanteessa(?) ja sen näkyminen käyttäjälle jos tilanteesta toipumista ei ole huolehdittu. Suosittu ja tyypillinen esimerkki asiakas-palvelin arkkitehtuurista on tomcat.apache.org - Apache Tomcat

Malli-Näkymä-Käsittelijä (MVC)

Kolmannen sukupolven palvelut noudattavat usein MVC (Model view controller, malli-näkymä-käsittelijä) arkkitehtuuria jota on jo pitkään käytetty henkilökohtaisen tietokoneiden graafisissa ohjelmistoissa. Tässä käytetty sovellus on toteutettu yleensä javascriptillä (aiemmin saattoi olla myös Java) ja se pyörii kokonaisuudessaan käyttäjän päätelaitteen selaimessa. Webissä käytettäessä koko käyttöliittymän ulkoasu ja sovelluksen ohjelmakoodi ladataan kerran, jonka jälkeen käyttöliittymää päivitetään kevyellä web-liikenteellä palvelun palvelimelta käytön edetessä.

Arkkitehtuurissa on toisen sukupolven edut, etäyhteyden liikennemäärät ovat huomattavasti pienemmät kuin aiemmissa sukupolvissa. Muita selkeitä etuja ovat palvelun palvelimien ja tietoliikenneyhteyksien vähentynyt kuormitus, toteutuksen mahdollistama visuaalinen näyttävyys ja käyttökokemus sekä läheinen suhde tietokoneiden ja mobiililaitteiden täysimittaisiin sovelluksiin jotka hyödyntävät samoja palvelimien rajapintoja.

Haittana kasvaneet vaatimukset selaimien yhteensopivuuksissa monimutkaistuneen asiakaspään toteutuksen takia ja kaikista raskaimmat kehitysvaatimukset taitojen ja ajankäytön kannalta joka johtaa hitaaseen aikatauluun ja korkeisiin kuluihin.

Java ja applikaatioserverit, Frameworkit, RESTful, rikkaat asiakaat

Teknologiat

html5

Palvelimen sovelluskehykset

Drupal on selainpohjainen sisällönhallintajärjestelmä (CMS) sovelluskehys (framework), jonka avulla luot, hallitset ja julkaiset sisältöä verkkosivuille ilman teknistä osaamista verkkosivujen toteuttamisesta. Drupal soveltuu pienten verkkosivujen toteutuksesta aina laajoihin ja haastaviin verkkototeutuksiin.

Wordpress wordpress.org, lyhyesti WP on sisällönhallintajärjestelmä (content management system, CMS) joka on nykyään suosituin sovelluskehys yhteisöjen web-sivujen tai blogien alustaksi jos sisältö on pääasiassa tekstiä. Wordpress on ohjelmoitu php:llä ja käyttää MySQL RDBMS-tietokantaa. WP tukee laajaa valikoimaa vaihdettavia ulkoasuja, liitännäisiä (yli 40k), sillä julkaistuun sisältöön löytyy mobiilisovellukset.

WP:ssä on XMLRPC-rajapinta joka on tunnettu ongelmistaan, sitä on käytetty mm DDoS-hyökkäysten proxynä peittämään ja monistamaan todellisen hyökkääjän liikenne[1] - eli saada WP:tä käyttävä taho näyttämään hyökkääjältä.

Symfony on php-sovelluskehys joka kannustaa php-modulien uudelleenkäyttöön.

Joomla

Django on suosittu ja harvoja Python-ohjelmointikielellä tehtyjä sovelluskehyksiä. Sille löytyy mm sisällönhallintajärjestelmä django-cms.

Apache Struts on JavaEE-ohjelmointikielellä sovelluskehys joka kannustaa käyttämään MVC-arkkitehtuuria.

Qt WebAssembly on vuonna 2018 julkaistu laajennos Qt-kirjastoon joka mahdollistaa Qt-ohjelmien ajon web-selaimessa vaihtoehtona Javascriptille.

Palvelimen sovellukset

Verkkokauppasovelluksia, täydellinen lista löytyy wikipediasta. Suurimmat valintaan vaikuttavat tekijät ovat elinkaarikustannukset, paikallisten, skandinavisten maksurajapintojen tuki ja yleiset ominaisuudet.

Magneto on suosittu web-kauppa-alusta magneto.com.

OpenCart avoimen lähdekoodin verkkokauppaohjelmisto opencart.com

osCommerce oscommerce.com

Odoo sisältää monta toimintoa kuten asiakkuudenhallinan (CRM), tuotannonohjauksen (ERP) ja web-kaupan. Sen toteutuskieli on Python ja Javascript ja se käyttää Postgresql-tietokantaa. lisää...

PrestaShop prestashop.com

VirtueMart on verkkokauppasovellus Joomla CMS-sovelluskehykselle. Ohjelmointikieli on PHP ja tuettu tietokanta MySQL/MariaDB. virtuemart.net

Woo Commerce on web-kauppa plugin Wordpressille. woocommerce.com.

Zen Cart on osCommercin vuonna 2003 tehty forkki. zen-cart.com

Magneto on tilastojen perusteella suosituin (2017-05). Magneto ja PrestaShop poikkeavat toisista OSL-3.0 lisenssillään, kun muut on julkaistu GNU GPL-lisenssillä.

Palvelimen tietokannat

MySQL / MariaDB (mariadb.org)

PostgreSQL (postgresql.org)

Elastic (elasticsearch)

Firebird (firebirdsql.org) on etenkin Microsoft Windows käyttäjäyhteisössä suosittu valinta relaatiotietokannaksi. Toisaalta Windows ei ole suosittu valinta Internetin palveluiden alustaksi.

Vertica (vertica.com)

Tapauskohtaisesti voi olla tarpeen hallita tietojen muutoksia (CDC, Change Data Capture, en.wikipedia.org) joka mahdollistaa ei haluttujen muutosten havaitsemisen ja tarvittaessa niiden peruuttamisen.

Käyttöliittymän Javascript

Arkkitehtuureita:

jQuery (jquery.com) on selainriippumaton, modulaarinen (core, ui/mobile ja 3. osapuolen pluginit) abstraktiokirjasto joka helpottaa javascript-toteutuksen toteuttamista (dom-model, ajax, käyttöliittymän elementit - widgetit jne). Kummatkin - sekä jquery-ui, että jquery-mobile käyttävät perus jquery-kirjastoa ja tukevat ulkoasun teemoja jotka ovat sivustokohtaisesti räätälöitävissä.

Mobiiliversion on tarkoitus toimia myös työpöytäselaimilla, mutta sen toteutustapa poikkeaa merkittävästi jqueury-ui mallista teknisesti. Mobiilissa eri sivut rakennetaan samaan tiedostoon eri lohkoihin ja ladataan kerralla päätelaitteeseen ja sivunvaihdot tapahtuvat mobiilikirjaston suorittamana. Olemassaolevan sivuston muuttaminen mobiilikirjastolla toteutetuksi todennäköisesti vaatisi työlästä uudelleenorganisointia toteutustasolla edellä mainitussa lohkorakenteissa kuin sen toimintatavan eroavaisuuksissa ja siten sen toteuttamista suositellaan aloittamaan tyhjästä käyttämättä vanhaa, esimerkiksi jquery-ui sivustoa. Eroista vaadittava osaaminen vaatii myös toteuttajalta omaksumista tai kokonaan siihen perehtyneitä henkilöitä.

Mobiilikirjastolla tehdyt käyttöliittymät tuntuvat työpöydällä kärsivän mobiililaitteille tyypillisestä elemettien koko ruudun/selaimen leveydestä mikä ei toimi työpöydällä - siitäkin huolimatta, että tätä on pyritty huomioimaan kirjastossa. Ulkoasun poikkeavuudet ja edellä mainitut toteutustavan eroavaisuuksista johtuen näyttäisikin, että markkinoilla olevat saitit käyttävät mobiilikirjastoa ainoastaan mobiililaitteiden tukemiseen ja sivut ovat omassa m.example.com urlissa (m dot site). Lupaus yhtenäisestä teknisestä alustasta ei ole ainakaan vielä lyönyt itseään läpi. Tämä taas johtaa kahden eri järjestelmän ylläpitoon ja niiden kustannuksiin.

Mobiiliwebin vaihtoehto on toteuttaa palvelu työpöydälle optimoituna webinä ja mobiililaitteille tehdyllä mobiilisovelluksella.

Dojo mobile dojotoolkit.org

JQ.Mobi jqmobi.com

Sencha Touch sencha.com - touch

AngularJS angularjs.org.

React reactjs.com.

MEAN (mean.io)

Lisää aiheesta omalla sivullaan: Javascript

Mobiiliapplikaatiot

Dominoivat ekosysteemit, Applen iOS ja Googlen Android mobiilikäyttöjärjestelmät eivät ole keskenään yhteensopivia. Halutessaan tukea molempia, molemmille tulee tehdä sovelluksestaan omat versiot. Niiden omat kehitysympäristöt käyttävät eri ohjelmointikieliä joka voi asettaa omat vaatimuksensa kehittäjille. Poikkeuksena tästä on mm Qt jota käytettäessä lopputulokset syntyvät molempiin käyttöjärjestelmiin.


Googlen Android sovellukset kehitetään Android Studio kehitysympäristössä Java-kielellä. Halutessaan voi käyttää myös natiivia, C- tai C++ -kieliä Android NDK ympäristöllä joka mahdollistaa mm OpenGL grafiikkakirjastojen käytön.

Applen iOS mobiililaitteiden sovellukset kehitetään Applen Xcode työkalulla joka toimii vain Mac OS X käyttöjärjestelmässä. Kehitteillä olevan sovelluksen voi asentaa omaan laitteeseensa kierrättämättä sitä Applen sovelluskaupan kautta, mutta jaellakseen sitä sovelluskaupassa pidempään, tästä tulee maksaa erikseen Applelle.

Microsoft Windows Phone käyttää mm DirectX-kirjastoja OpenGL:n sijasta.

Qt-kehitysympäristöllä voi tuottaa samasta C++-lähdekoodista suoraan Android, iOS, Windows Phone, BlackBerry ja Sailfish sovellukset ylläpitämättä eri versioita eri alustoille. Käyttöliittymä tehdään Qt:n Quick tekniikalla. Kehitysympäristöön voi tutustua ilmaiseksi 30 päivän ajan.

Käyttöliittymän Python

Python on kielenä kasvattanut suosiota tietojenkäsittelyssä käyttökohteesta riippumatta ja yrityksiä käyttää sitä web-palveluissa on ollut jo pitkään, sitä on lähinnä jarruttanut selaivalamistajien tuen puute. Javascript-kieli hallitsee webiä, mutta sen ulkopuolella sitä ei juurikaan käytetä. Tästä johtuen Python-kielen osaajia on huomattavasti enemmän ja loogisesti ajateltuna sen käyttö olisi perusteltua kun raskasta ajattelumallin- ja kielen vaihtoa ei tarvita kun kieli on kaikkialla yksi ja sama. Tämä säästää aikaa ja rahaa.

Jotkut Python-websivusto toteutukset ovat vaatineet selaimen laajennoksia joita ei ole ollut kaikkiin yleisesti käytössä oleviin selaimiin saatavilla ja tämä on myös vaatinut käyttäjältä Python-tuen asentamista laajennusmodulilla jota ei voida pitää kohtuullisena vaatimuksena - varsinkaan aikana kun verkkopalvelujen käyttö on levinnyt tietokoneiden ulkopuolelle mobiililaitteisiin, älytelkkareihin ja olohuoneiden pelikonsoleihin joihin sitä ei ole saatavilla. Viimeisimmät Python-kielellä tehdyt websivustot pohjautuvat Javascriptiin jolloin Python-tuen asentamista ei tarvita ja palvelut toimivat suoraan vaikka ne olisi ohjelmoitu Python-kielellä. Tämä on ollut yllättävä ja mullistava kehityssuunta.

Jos Pythonin käyttö lisääntyy, Javascriptiin pohjautuvat toteutukset saattavat olla vain välivaihe ja lopulta puhdas Python-kielen tuki alkaa yleistyä selaimissa ja palveluiden suoritusnopeudet paranevat. Vaikka näin ei tapahtuisi, mikään ei estä siirtymästä Pythonin käyttöön jos se todetaan toimivaksi kyseisessä käyttötarkoituksessa.

Selaimen JavaScript-Python toteutuksia:

Yksi vaihtoehto on toteuttaa Python-tuki WASM-binäärinä (Web Assembly).

Yhteistä kaikille toteutustavoille on niiden raskaus, pelkkä Python-tuen lataaminen vaatii satojen kilotavujen, tai yli megan tiedoston lataamisen selaimeen. Tämän voisi uskoa ratkeavan jos toteutus tehdään osaksi selainta tai muut tavat yleistyvät ja se löytyy jo lataushetkellä välimuistista.

Artikkeleita ja vertailuja:

Verkkotunnus ja varmenne

Verkkotunnus

Suomalaisen .fi-päätason verkkotunnuksen (TLD, top-level domain) omistaa valtio ja sitä hallinnoi Viestintävirasto. Sen alta löytyviä tietoja voi tarkastella domain.fi -verkkopalvelussa. Tunnuksen anominen on hajautettu eri verkkotunnusvälittäjille joilta tunnuksia voi rekisteröidä ja hankkia siihen liittyviä palveluita. Verkkotunnusvälittäjäksi voi rekisteröityä myös itse.

Tunnuksella voi olla eri omistaja ja siihen liittyvän tekniikan hoitamiseen erikoistunut taho (haltija). Anottaessa tunnusta loppukäyttäjän tulee varmistua, että rekisteriin merkitään oikea omistaja eikä palveluntarjoajaa koska tällöin täysi omistus- ja määräysvalta ei ole tunnuksen käyttäjällä.

Ennen 5.9.2016 anottuja verkkotunnuksia saattaa yhä olla Viestintäviraston rekisterissä, josta ne piti siirtää kaupalliselle välittäjälle ennen viraston oman hallintakäyttöliittymän sulkemista. Verkkotunnuksen myöntämisen yhteydessä annetut valtuutusavaimet on mitätöity em. päivänä eikä niitä saa enää uusia itsepalvelun kautta, vaan tulee asioida Viestintäviraston kanssa uuden saamiseksi. Palvelun sulkemisen yhteydessä suljettiin myös tunnuksen voimassaolon päättymisestä muistuttavien sähköpostien lähettely, joten riski menettää oma verkkotunnus hallinnan laiminlyönnin takia on suuri ja tämä on jo tapahtunut monelle suomalaiselle tunnuksen käyttäjälle.

Varmenne

Palvelu voi tarvita varmenteen, jotta kävijä tietää varmasti asioivansa oikeassa palvelussa eikä petosta yrittävällä näköiskopiolla. Varmennetta käytetään aloittamaan suojattu (salattua) SSL-yhteys joka näkyy WWW-selaimessa https-linkin yhteystapana. Varmentajia on sekä julkishallinnollisia, kaupallisia että ilmaisia. Niiden myöntämät varmenteet on sidottu verkkotunnuksen nimeen, ne ovat useimmiten maksullisia ja aina määräaikaisia.

Lait, asetukset ja direktiivit

Käyttöehdot

Henkilötietolaki

Tietosuoja-asetuksen mukaan vanhoja henkilötietolakien rekisteri- ja tietosuojaselostetta ei tarvitse enää jatkossa tehdä.

Rekisteriseloste

Henkilötietolain 10 §:n mukaan Rekisterinpitäjän on laadittava henkilörekisteristä rekisteriseloste, josta ilmenee:

1) rekisterinpitäjän ja tarvittaessa tämän edustajan nimi ja yhteystiedot;

2) henkilötietojen käsittelyn tarkoitus;

3) kuvaus rekisteröityjen ryhmästä tai ryhmistä ja näihin liittyvistä tiedoista tai tietoryhmistä;

4) mihin tietoja säännönmukaisesti luovutetaan ja siirretäänkö tietoja Euroopan unionin tai Euroopan talousalueen ulkopuolelle; sekä

5) kuvaus rekisterin suojauksen periaatteista.

Rekisterinpitäjän on pidettävä rekisteriseloste jokaisen saatavilla. Tästä velvollisuudesta voidaan poiketa, jos se on välttämätöntä valtion turvallisuuden, puolustuksen tai yleisen järjestyksen ja turvallisuuden vuoksi, rikosten ehkäisemiseksi tai selvittämiseksi taikka verotukseen tai julkiseen talouteen liittyvän valvontatehtävän vuoksi[2].

Tietoturvaseloste

Henkilörekisterilaki

Sähköisen viestinnän tietosuojalaki

EU direktiivit ja asetukset

Tietosuoja-asetus

Euroopan parlamentti ja neuvosto sääti 27. hutikuuta 2016 asetuksen 2016/679 luonnollisten henkilöiden tietosuojasta (General Data Protection Regulation, GDPR) - luonnollisten henkilöiden suojelusta henkilötietojen käsittelyssä sekä näiden tietojen vapaasta liikkuvuudesta. Asetus tulee voimaan jo 26. toukokuuta 2018, kahden vuoden transitiovaiheen jälkeen, suoraan ilman jäsenvaltioiden kansallista ratifiointia.


Maksupalveludirektiivi PSD2

Maksupalveludirektiivi (PSD2) on vietävä kansalliseen lainsäädäntöön Euroopan unionin jäsenmaissa, Suomessa se tapahtui 13. tammikuuta 2018.

Mediakortti

Viranomaisvaatimukset

Tunnistaminen ja tiedot

Palvelun luonteesta riippuu riittääkö pelkkä henkilön tunnistaminen koko asiointiin vai tarvitseeko tapahtuma tietoa myös tunnistetun henkilön oikeuksista eri rooleihin ja valtuuksiin sekä asiojan henkilötietoja. Suurin osa tunnistusmenetelmistä ei sisällä roolitietoa ja palvelun toteuttaminen vaatii tällöin yhteydet taustajärjestelmiin joiden tiedot on tyypilisesti suojattu lailla ja siten yhteys vaatii sopimuksen rekisterinpitäjään ja sen käyttö on maksullista ja valvottua.

Henkilöasioijan tietoja:

  • nimi
  • syntymäaika-, -paikka ja -valtio
  • yksilöivät tunnukset: HETU, SATU
  • kansalaisuus
  • kotipaikka
  • asioijan elossaolon tarkastus
  • ikä ja täysi-ikäisyys
  • oikeudellisen toimikelpoisuuden rajoitukset
  • avioliitto- tai rekisteröity parisuhde
  • sukulaissuhteet
  • huollettavat (lapset)
  • äänioikeus eduskunta-, kunnallis-, presidentti- ja EU-parlamentin vaaleissa.

Yhteisöasioijan tietoja

Asiointikohteen tietoja:

  • alaikäisen tai edunvalvonnan alaisen edustajan valtuutus
  • yhteisöt: yhdistykset, säätiöt, kunnat, seurakunnat, valtio - ja nämä ulkomaalaisina
    • edustetun yhteisön nimenkirjoitusoikeus - toimivalta, kelpoisuus (Kaupparekisteri)
    • edustetun yhteisön päätösvaltaisuus - riittävä määrä allekirjoittajia
  • käsitellyn asian omistusoikeudet, panttaukset, tms ja valtakirjat


Osa näistä tiedoista saadaan nykyään Digiviraston hakemistoista ja västötietojärjestelmästä, verohallinnon rekisteriin tallennetuista KATSO-tunnusten välisisistä valtuutuksista ja Patentti- ja rekisterihallituksen Kaupparekisteristä. Jatkossa Palveluväylän rooli- ja valtuutuspalvelu RoVa yhdistää ja korvaa kaikki edellämainitut julkis- ja yksityissektorin yhteisöjen osalta.


Pankkitunnukset

Pankkitunnukset eli TUPAS-tunnistuspalvelu oli Suomen laajimmassa käytössä oleva lain tarkoittama vahva tunnistusväline. Siihen liittyminen vaati sopimuksen kaikkien eri tuettavien pankkien kanssa. Sopimuksista veloitettiin perusmaksu joka kuukausi ja joka tunnistustapahtumasta noin 0,50 euroa. TUPASta käyttävän palvelun tarjoajan tuli hakeutua Traficomin valvontaan josta maksetaan ensimmäisenä vuotena liittymismaksu (5000?) euroa ja vuosittain (12000?) euroa valvontamaksua.

Verkkopalvelun liittäminen TUPAS-järjestelmään oli myös haastavaa teknisesti koska sen dokumentaatio on salaista, avoimia liityntäkirjastoja tai julkista keskustelua ongelmanratkomisesta ei ole.

Lokakuusta 2019 alkaen TUPAS ei enää täyttänyt eIDASin mukaisia vahvan tunnistamisen kriteereitä ja toimijoiden oli siirryttävä jonkun Luottamusverkoston jäsenen asiakkaaksi.

Palvelulle/Pankkitunnukset

Mobiilivarmenne

Mobiilivarmenne on

Henkilökortti

Moni Euroopan maista on lisännyt henkilökortteihinsa sähköisen sirun jolla on varmenne asioijan tunnistamista varten (poikkeuksena Saksa). Varmenteella tunnistaminen ei maksa palvelulle mitään. Takaajien juurivarmenteet ja estettyjen tunnisteiden sulkulistat ovat ilmaiseksi saatavilla. Varmenteita käyttävä tunnistustapahtuma (Client Side Certificate) on tietotekniikassa laajalti tunnettu toimenpide ja siten sen lisääminen palveluun kehityskustannuksiltaan on kohtuullinen, toisiin kehysohjelmistoihin löytyy valmiit komponentit sitä varten.

Henkilökortin tunnistaminen perustuu yleiseen PKI-teoriaan josta puuttuu laskutuksen mahdollistavat ominaisuudet, sen käyttöä ole siten rajoitettu mitenkään, sillä voivat tunnistaa yksityisen sektorin toimijat kuten julkinen sektori. Henkilökortti mahdollistaa myös allekirjoittamisen palvelussa ja muun käytön (VPN, lähiverkon sisäänkirjautuminen, sähköpostin salaus ym).

Suomen tapauksessa tunnistustapahtumassa palveluntarjoaja saa henkilökorttia ja Mobiilivarmennetta käyttävän asioijan erittelevän SATU-tunnisteen HETU:n sijasta. Väestörekisterikeskus myy erikseen kk-laskutettua VTJ-kyselypalvelua jolla SATU-HETU sidos voidaan haluttaessa tehdä.

Aktiivisia henkilökortteja on Suomessa 1,46 miljoonaa kappaletta (2022-03-07).

Varmennehierarkiaa tarjoavien EU-maiden lista löytyy TSL-tilasivulta.

Suomi.fi

Suomi.fi-tunnistus on julkishallinnon yhteinen tunnistuspalvelu, yksityisen sektorin toimijat eivät voi liittyä siihen. Sen avulla julkishallinnon asiointipalvelut saavat kaikki suomalaiset vahvat tunnistusvälineet käyttöönsä yhden rajapinnan kautta. Lisäksi palvelu sisältää mahdollisuuden hyödyntää myös KATSO-tunnistautumista.

Palvelu tarjotaan julkishallinnon asiointipalveluille SAML-rajapintaan perustuen. Palvelun lähdekoodi on vapaasti saatavilla.

Palveluväylä

Palveluväylä on Virossa kehitetyn yhteiskunnan taustaväylä X-Road:n suomalainen instanssi jolla voi myös tunnistaa(?) ja jossa välittyy asioijien metatietoja joita ei lyödy tunnisteesta. Liittyminen vaatii liittymäsopimuksen, oman liityntäpalvelimen ja siitä on ?? kustannuksia kuukausittain.

eIDAS

Euroopan Unioni toteuttaa eIDAS-direktiivin mukaista kertakirjautumispalvelua PEPS-palvelinverkostolla johon eri palveluntarjoajien on tarkoitus liittyä. Suomen valtio on ollut hidas tukemaan muiden maiden välineitä palvelussaan. Digivirasto jätti notifioimatta Suomen kortit EU:lle jonka takia suomalaiset eivät voi myöskään tunnistautua ulkomaisiin palveluihin.

Muu maailma

Jos on tarve tunnistaa koko maailman verkon käyttäjät, asia menee monimutkaisemmaksi.

Kolmannen osapuolen sisällöt / Avoin data

Jos palvelu käyttää hyväkseen esimerkiksi karttoja verkkosivuillaan, mistä niitä saa ja millä ehdoilla?

Kartat

Tapahtuman käsittely

Tapahtuman elinkaaren eri vaiheisiin löytyy asiointia edistäviä teknisiä ratkaisuja.

Muodot

Tapahtuman muodot ovat yleisesti tehtyjen tapahtumien spesifisiä muotoja, formaatteja joilla saadaan koneluettava automaatio toteutettua helpommin. Klassinen esimerkki yleisestä tapahtuman muodosta on laskutus, mutta ostotapahtuman muihin vaiheisiin löytyy määrityksiä ja niitä kehitellään lisää mm EU-tasolla.

Allekirjoitus

Allekirjoitus sitoo osapuolet tapahtuman todistavaan dokumenttiin. Aihe on ollut vaikea Suomessa pitkään eikä siitä ole vieläkään laajalle levinnyttä, vaikiintunutta käytäntöä joka olisi kaikkien osapuolien hyväksymä ja tunnustama. Epäselvyyttä on lähes kaikesta: takaajasta, käytännön toteutuksesta (tavasta, allekirjoitusmuodosta, tallennuspaikoista jne).

Maksaminen

Perintä

Käyttäjätilastot

Google Analytics (analytics.google.com)

Chartbeat (chartbeat.com)

Woopra (woopra.com)

Pilvipalvelut

Pilvipalvelut

Projektipalvelut

SEO palvelut

SEO (Search Engine Optimization) tarkoittaa hakukoneiden hakutulosten manipulointia, optimointia - jos sen haluaa sanoa vähemmän negatiivisessa kontekstissa. Vähän kuin kutsua ongelmia haasteiksi. Tässä vaiheessa fiksumpi lukija jo arvaa puolet tulevasta.

Hakukoneiden optimointi tarkoittaa esimerkiksi suositun Google-hakukoneen tulosten järjestyksen muuttamista siten, että optimonnista maksavan palvelu löytyy viidennen tulossivun sijasta ensimmäiseltä sivulta. Jos uusi juuri avattu verkkopalvelu ei tunnu saavan tarpeeksi kävijöitä, SEO-palvelun tarjous saattaa tuntua houkuttelevalta.

Mutta miten he tekevät sen? Suurinta osaa maksajia tämä ei kiinnosta, kunhan asiat liikkuvat eteenpäin. Vaikka ehkä pitäisi.

Hakukoneet toimivat roboteilla (web crawlers) jotka penkovat verkon sisältöä taukoamatta ja tallentavat niiden sisältöjen piirteitä tietovarastoihinsa. Hakupalvelun algoritmit indeksoivat tätä valtavaa tietomassaa, osa siitä perustuu myös ihmisten tekemään käsityöhön. Verkon hakukoneen tulokset perustuvat tähän kerättyyn ja käsiteltyyn tietoon.

Internetissä on paljon, jopa suurin osa sisällöstä ilmaista ja vapaata kulutettavaksi. Moni palvelu kuten Wikipedia, Youtube, sosiaalinen media, monet keskustelufoorumit ym ovat ilmaisia käyttäjilleen. Ihmisten tunnistaminen verkossa ei ole yksiselitteistä ja se usein maksaa sitä tekevälle sitä enemmän mitä varmemmin sen haluaa tehdä. Tästä johtuen suurimpaan osaan palveluista voi luoda tekaistuja käyttäjiä. Sama taho voi luoda käyttäjätunnuksensa uudestaan jos entisen käyttö estyy, koska ensitunnistusta ei tehdä eikä käyttäjää yksilöidä.

SEO-palveluntuottajat käyttävät hyväkseen tätä löyhää tunnistamista ja yksilöinnin puutetta, luomalla tekaistuja käyttäjiä verkon avoimiin palveluihin kuten lukuisiin wiki-sivustoihin ja keskustelufoorumihin. Syöttämällä niihin tekstimassoja ja verkon linkkejä, ne samalla syöttävät hakukoneiden roboteille niiden hakutuloksia vääristäviä - optimoivia sisältöjä. Käytännössä kyse on roskapostista joka leviää postijärjestelmän ulkopuolella.

Sotkeminen, töhriminen ja olemassaolevien sisältöjen pilaaminen aiheuttaa valtavasti turhaa työtä näitä palveluita käyttäville ja niiden omistajille. Moni palvelu on sosiaalisen median paineessa laittanut lopullisesti lapun luukulle kun muuten kivasta palvelusta on alkanut olemaan enemmän riesaa kuin iloa kerta toisensa jälkeen Viagra, peniksenpidennys jne törkeyksien siivoamisen jälkeen.

Miksi SEO-palveluntarjoajat sitten tekeävät tätä? Samasta syystä kuin roskapostittajat lähettävät roskapostia - joku maksaa siitä. Oletko se sinä? Onko se teidän palvelu? Teidän yhteisö?

Sopimukset

Palvelun toteutusta tilattaessa kannattaa miettiä sen eri elinkaaren vaiheita ja palvelun osien ja siihen syötetyn sisällön oikeuksia. Automaattisesti tulee ajateltua, että ainakin sisältö on palvelun omistajan omaisuutta. Miten toimia tilanteessa jos järjestelmä lakkaa toimimasta tai se tulee rakentaa uudelleen - joko saman toteuttajan tai nykyisen kilpailijan avustamana? Onko se mahdollista ja mielekästä? Mitä se kaikki maksaa ja kauanko se kestää? Onko halvempaa ja nopeampaa aloittaa tietojen syöttö alusta? Onko se edes mahdollista jos järjestelmä on tuottanut osan tiedosta?

Monet palvelut sisältävät tietokannan joka yleensä on SQL-tyyppinen relaatiotietokanta. Tietokanta koostuu tauluista, sen sarakkeista, taulujen välisistä sidoksista ja monesta muusta yksityiskohtaisesta määrittelystä jonka tekeminen on vaativaa ja aikaa vievää. Tietokannan rakenteen kuvaus on siis itsessään jo arvokas ja voi täyttää immateriaalisen teoksen tunnusmerkit.

Omistaja yleensä haluaa palvelustaan säännölliset varmuuskopiot (eng database dump) kaiken varalle. Tietokannasta - tai vastaavasta tehtynä se paljastaa tekotavan ja mahdollistaa ratkaisun monistamisen rajatta. Immateriaalinen teos siis siirtyy toteuttajalta asiakkaalle. Mitkä ovat sen käyttö- ja levitysoikeudet? Saako sillä tai sitä hyödyntäen rakentaa palvelun uudelleen? Toisen toteuttajan, kolmannen osapuolen avustamana? Käyttäen samoja - tai kilpailevan toteuttajan komponentteja? Koskevatko oikeudet vain palvelun nykyistä omistajaa vai myös kolmatta osapuolta joka osti palvelun tai sen nykyisen omistajan?

Mitä jos omistaja ei saa, tai ei ole saanut vuosikausiin kopiota tiedoistaan? Niistä on otettu varmuuskopiot, mutta ne ovat toteuttajan hallussa. Mitä jos osapuolet riitaantuvat, esimerkiksi nousseista hinnoista - tai syötetyn sisällön omistajuudesta keskustellessa - ja palvelusopimus lakkaa, pahimmassa tapauksessa palvelu sammuu verkosta samalla?

Omistajan syöttämien tietojen hallitseminen - olivat ne sitten toteuttajan tai omissa tiloissa, on mahdollista jos niiden normaalia käyttöä laajempi hyödyntäminen on estetty teknisellä muodolla (ei esimerkiksi luovuteta tekstimuotoista tms luettavaa tietokannan varmuuskopiota) tai pääsynestolla. Hallinnan menetys nostaa lähtökynnystä (barrier to exit) ja saattaa laskea kynnystä kovempaan hinnoitteluun tai muihin sopimusehtoihin kun tiedetään, että toteutuksen kilpailuttaminen on vaikeaa tai mahdotonta ilman toteuttajan suostumusta.

Kummankin osapuolen näkemys on ymmärrettävä:

  • Tietokantasuunnittelu on kallista ja helposti monistettavaa/väärinkäytettävää arvoa, sitä halutaan suojella. Toisaalta alan kilpailu on kovaa ja kokonaisuuden oikeuksista, riitapykälistä ja yhteistyön lopettamisen yksityiskohtia ei haluta tuoda esille hankinta/tarjousvaiheessa.
  • Voisi olettaa, että tiedon tuottaja ja lähde omistaa - sekä hallitsee tietonsa täysin. Näin ei kuitenkaan aina ole, koska asia ei ole tullut mieleen hankinta/kilpailutusvaiheesa. Jälkikäteen asiaa on enää vaikea sopia jos oma tieto on jo ulkopuolisen kontrollissa ja tyydyttävään sopimukseen ei olisi päässyt hankintavaiheessakaan.

Tärkeintä olisi, että molemmille osapuolille on selvää alusta asti:

  • kenen omaisuutta sisältö on
  • kenen omaisuutta palvelun mahdollinen ohjelmakoodi on
  • kenen omaisuutta palvelun visuaalinen suunnittelu ja toteutus on (ulkoasu)
  • kenen omaisuutta sen tekninen kuvaus on (esim tietokannan rakenne)
  • mitkä edelläolevien käyttöoikeudet ovat
  • missä muodossa tiedot on tallennettu (jokin tunnettu relaatiotietokanta ja/tai yhdistelmä tms)
  • missä sisällön tallennus sijaitsee fyysisesti (omistajan, toteuttajan vai kolmannen osapuolen tiloissa)
  • kenellä on rajoittamattomat pääsyoikeudet (tai kopiot) palvelun osiin (ulkoasu, ohjelmakoodi) ja sisältöön (tietokanta, tiedostot)
  • kuka ottaa eri osista varmuuskopiot, missä muodossa (tietokannan varmuuskopio, XML-kuvaus tms) ja mihin
  • saako omistaja säännöllisen varmuuskopion jota voi itse - tai palkattu kolmas osapuoli tulkita ja millä ehdoin
  • jos varmuuskopio ohjelmakoodeista ja sisällöstä luovutetaan, onko niiden toimivuutta / pystyttämistä kokeiltu säännöllisesti

Kaikka ylläolevaa olisi hyvä miettiä jo ennen hankintapäätöstä. Kannattaa miettiä mitä tapahtuu jos osapuolet riitaantuvat ja keskeyttääkö riitaantuminen / sopimuksen tulkinta esim oikeudessa palvelun toiminnan tai sen kehittämisen / siirtämisen uuteen palvelimeen, ohjelmointikieleen, tietokantaan jne. Missä maassa ja missä sen instanssissa erimielisyydet ratkotaan? Mitkä ovat osapuolien vaitolovelvollisuudet? Onko yllämainittuja kohtia mainittu sopimuksessa ja mitä niiden rikkomisesta seuraa? jne yleiset sopimusasiat.

Aiheesta muualla:

Katso myös

Lähteet

Aiheesta muualla