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.
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 ===
=== 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 mielekäs-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 ===
=== 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ä'') arkkiehtuuria 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. Koko 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'''
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'''
* [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 ===
=== 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])
* '''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:
=== Viranomaisvaatimukset ===
* [[Laki sähköisestä asioinnista viranomaistoiminnassa]]* [[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]]
== Asioijan tunnistaminen 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.
* 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 Väestörekisterikeskuksen västötietojärjestelmästä ([[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]] on oli Suomen laajimassa laajimmassa käytössä oleva lain tarkoittama vahva tunnistusväline. Siihen liittyminen vaatii vaati sopimuksen kaikkien eri tuettavien pankkien kanssa. Sopimuksista veloitetaan 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 on 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]]
=== Henkilökortti ===
Moni Euroopan [[Maailma|maista ]] on lisännyt henkilökortteihinsa sähköisen sirun jolla on varmenne asioijan tunnistamista varten (poikkeuksena [[Saksa]]). Verkkopalvelussa varmenteella Varmenteella tunnistaminen '''ei maksa palvelun tarjoajalle 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.
=== 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]
* [[X-Road]]
=== PEPS eIDAS ===Euroopan Unioni toteuttaa [[eIDAS]]-direktiivin mukaista kertakirjautumispalvelua [[PEPS]]-palvelinverkostolla johon eri palveluntarjoajien on tarkoitus liittyä. Hanke Suomen valtio on monella tapaa päällekkäinen Palveluväylän kanssa, mutta keskittyy ainoastaan tunnistamiseen ja allekirjoittamiseenollut hidas tukemaan muiden maiden välineitä palvelussaan. Vaikka PEPS-palvelun tunnisteina on yleensä henkilökortti, erona suoraan PKI-tunnistukseen on asioijan metatiedot joita eri jäsenvaltioiden lainsäädännön ja toteutuksen takia ei ole tallennettu kortille, eikä enintä osaa tiedoista edes välitetä HTTPS/SSL-yhteyden mukana. Suomessa PEPS-palveluntarjoaja tulee olemaan Digivirasto [[VäestörekisterikeskusDigivirasto/Notifiointisotku|jätti notifioimatta]]Suomen kortit EU:lle jonka takia suomalaiset eivät voi myöskään tunnistautua ulkomaisiin palveluihin. * [[PEPS]]* [[Väestörekisterikeskus]]
=== Muu maailma ===
* [http://avoindata.fi avoindata.fi]
* [http://data.europa.eu/euodp data.europa.eu - Euroopan Unionin avoimen datan portaali]
* [https://pelikone.eu/ pelikone.eu]
=== Kartat ===
=== SEO palvelut ===
'''SEO''' (''Search Engine Optimization'') tarkoittaa hakukoneiden hakutulosten manipulointia, ''optimointia'' - jos sen haluaa sanoa vähemmän negatiivisessa kontekstissa. Vähän kuten 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 sivun 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. Kunhan asiat liikkuvat eteenpäin.
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 hakutloksia 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.
== Katso myös ==
* [[Palvelulle/Tunnistevälinepyyntö]]
== Lähteet ==