Thursday, March 22, 2007

SOA ja Web 2.0

SOA ja Web 2.0

1. Johdanto palveluarkkitehtuuriin

(SOA Service Oriented Architecture)

Tietokoneisiin liitettiin näyttöpäätteet 1970-luvun puolivälissä. Päätteen näytöllä oli tilaa vaakasuunnassa 80 merkille ja pystysuunnassa 16 riville. Mitat vastasivat siihen aikaan käytössä olleita reikäkortteja. Tietokoneessa oleva sovellus huolehti tiedon lähettämisestä päätteelle merkki merkiltä ja vastaanotti käyttäjän tekemiä näppäinpainalluksia välittömästi painamisen jälkeen. Sovelluksessa olivat myös varsinainen sovelluksen toimintalogiikka sekä levymuistiin talletetun tiedon haku- ja päivitystehtävät.

1980-luvun puolivälissä yleistyivät henkilökohtaiset tietokoneet (PC). Ne liitettiin lähiverkkoon, johon myös liitettiin palvelintietokoneet, tulostimet jne. Tähän ympäristöön syntyivät ensimmäiset Client-Server ratkaisut. Sovellus kokonaisuudessaan (käyttöliittymä, sovelluslogiikka ja tiedonhallinnan logiikka) oli työasemassa ja palvelimia olivat mm. tietokantapalvelimet ja tulostuspalvelimet. Tätä rakennetta on kutsuttu kaksitasoiseksi rakenteeksi. Toisaalta osoittautui, että saman tietokannan jakaminen monen eri käyttäjän yht´aikaa käytettäväksi ei ollut aivan helppoa eikä tehokasta.

1980-luvun loppupuolella opittiin jakamaan sovellus kahteen osaan. Client-Server mallista tuli jaetun sovelluksen malli, jossa työasemassa toimiva käyttöliittymäosa tukee käyttäjän työtehtäviä ja yhteisellä palvelimella sijaitseva sovellusosa tuottaa liiketoiminnan sääntöjä toteuttavia palveluita ja käsittelee talletettuja tietoja. Tätä rakennetta on kutsuttu kolmitasoiseksi rakenteeksi. Tämän sovellusarkkitehtuurin myötä opittiin myös suunnittelemaan uudelleen käytettäviä palveluita, ts. samaa liiketoiminnan palvelua saatettiin hyödyntää useammassa käyttäjää tukevassa käyttöliittymäsovelluksessa. Esimerkki tällaisesta uudelleen käytettävästä palvelusta voisi olla vaikkapa asiakastietojen selailu, katselu ja päivittäminen. Käyttöliittymäsovellus voi pyytää käyttäjää syöttämään asiakkaan nimen, jonka jälkeen työasema lähettää kyselysanoman asiakastietojen hallintapalvelusovellukselle. Se hakee tietokannasta annettuun nimeen täsmäävät asiakkaat ja lähettää niihin liittyvät tiedot käyttäjälle.

Tähän rakenteeseen liittyy joitakin merkittäviä periaatteita:

- Palvelurajapinta eli yhteinen sopimus siitä, miten palvelua pyydetään ja miten siihen vastataan. Kun palvelusovelluksen rajapinta tehdään julkiseksi, voivat kaikki halukkaat käyttöliittymäsovellukset käyttää tätä palvelua rajapintamääritysten mukaisesti.

- Palvelun kapselointi, joka tarkoittaa sitä, että käyttöliittymäsovellukset eivät tiedä (eivätkä ole kiinnostuneita) palvelun toteutuksen yksityiskohdista, kunhan palvelu tuottaa sovitun lopputuloksen. Tämä antaa mahdollisuuden palvelun toteutuksen päivittämiseen ja kehittämiseen ilman, että kaikkia käyttöliittymäsovelluksia on tarpeen uusia. Sen sijaan käyttöliittymäsovellusten ylläpito vähitellen muodostui työlääksi operaatioksi. Tuhansiin työasemiin asennettujen käyttöliittymäsovellusten versioiden päivitys oli ja on edelleen työtä ja huolellisuutta vaativa urakka.

Yritysten piirissä syntyi ajatus yhteisten palveluiden käyttämisestä eri toimintojen tukemiseen. Esimerkiksi asiakastietoja syötettiin ja ylläpidettiin markkinoinnin, myynnin, tilausten käsittelyn, laskutuksen ja taloushallinnon järjestelmissä, kukin eri sovelluksella ja eri tavoilla. Sovellukset kuitenkin saattoivat toimia eri käyttöjärjestelmillä, sisältää tietoja yhteensopimattomissa muodoissa ja olla eri toimittajien valmistamia, joten yhteisten palveluiden käyttäminen ei ollut käytännössä helppoa.

1990-luvulla Internet yleistyi voimakkaasti. Toisaalta tietoliikenneyhteydet nopeutuivat ja antoivat mahdollisuudet yritysten väliseen ja myös yritysten ja kuluttajien väliseen tietojenvaihtoon. Toisaalta taas iso merkitys oli www-teknologioilla, http-tietoliikenneprotokollalla, html-sivunkuvauskielellä ja www-selaimilla. Työasemassa sijaitsevalla yksinkertaisella käyttöliittymäsovelluksella tai pikemminkin työkalulla oli mahdollista selata sivuja eri palvelimilla kunhan vain tiesi palvelimen osoitteen. Tärkeätä on myös havaita, että osoite sanotaan loogisella nimellä esim. www.tut.fi ja alla olevassa verkossa nimipalvelimet huolehtivat varsinaisen tietoliikenneosoitteen kytkemisestä loogiseen nimeen.Yksi tekijä www:n voimakkaaseen kasvuun oli yksinkertaisuus: Riitti, että työasemaan oli valmiiksi asennettu selain. Sen versiohallinta ja päivittäminen ei enää ollut sivujen tekijöiden tehtävä.

Suunnilleen 1990-luvun puolivälin jälkeen yleistyi selaimen käyttö muuhunkin kuin staattisten sivujen selaamiseen. Selainta voitiin käyttää myös tiedon syöttämiseen ja välittämiseen palvelimelle. Selain saattoi ladata työasemaan pieniä sovelluskomponentteja, jotka puolestaan keskustelivat palvelimella olevien käyttöliittymäkomponenttien kanssa. Nämä taas saattoivat käyttää samalla tai toisella palvelimella toimivia liiketoimintapalveluita toteuttavia komponentteja, jotka taas puolestaan käyttivät samalla tai eri palvelimella sijaitsevia tietokantoja. Tätä rakennetta on kutsuttu n-tasoiseksi rakenteeksi. Tätä rakennetta edustavia sovellusarkkitehtuureja ovat pääasiassa Sunin aloitteesta toteutettu Java-kieli ja J2EE sovellusympäristö sekä Microsoftin toteuttama .Net arkkitehtuuri.

1990-luvun lopussa ja 2000-luvun alussa W3C-konsortio (World Wide Web Consortium) julkaisi xml-kielen määritykset ja sitä hyödyntäviä työvälineitä tuli markkinoille. Kun html-kielen on tarkoitettu sivun ulkoasun kuvaamiseen niin xml-kieltä voi käyttää sivun tai sille tarkoitetun dokumentin merkityksen kuvaamiseen. Xml-kielen voima on sen avoimuudessa: tageja eli avainsanoja, joilla sivun merkitys kuvataan voidaan sopia eri käyttötarkoituksia varten vapaasti. Näitä xml-sanastoja tai -kieliä onkin sitten kehittynyt moneen tarkoitukseen runsaasti.

2000-luvulle tultaessa joukko yrityksiä laati W3C:lle eri sovellusten integrointiin tarkoitettuja tekniikoita sisältävän määrityksen nimeltään Web Services. Määritykset pohjautuivat xml-kielen käyttöön. Tärkeimpiä määrityksiä ovat SOAP (Simple Object Access Protocol) sovellusten väliseen tietojen vaihtoon, WSDL (Web Services Description Language) sovelluksen tarjoamien palveluiden kuvaamiseen ja UDDI (Universal Description, Discovery and Integration) palveluhakemiston toteuttamiseen.

Näiden avulla on mahdollista toteuttaa käyttöjärjestelmä- ja ohjelmointikielistä riippumattomia yleiskäyttöisiä sovelluspalveluita, Web Services. Niitä on luonnehdittu mm. seuraavasti:

Web Services -palvelut ovat itsensä kuvaavia, itsenäisesti toimivia modulaarisia sovelluskomponentteja, joita voidaan yhdistellä toisten Web Services- palveluiden kanssa ja joiden avulla voidaan toteuttaa tuotteita, prosesseja ja arvoketjuja innovatiivisilla tavoilla. Web Services -palvelut ovat Internet-sovelluksia, jotka toteuttavat jonkin tietyn tehtävän. Niitä voidaan tarpeen mukaan hakea esille ja yhdistellä sillä hetkellä kuin niitä tarvitaan kokonaisen palvelun tuottamiseksi. Niiden vaihtaminen ja liittäminen uusilla tavoilla on mahdollista uusien liiketoiminnan palveluiden aikaansaamiseksi. Internetissä saatavilla olevia palveluita voidaan hakea ja käyttää ilman tarkempaa tietoa niiden rakenteesta tai toteutustavasta. (Viite IBM Alphaworks).

Web Services -tekniikat ovat kehittyneet 2000 -luvulla siten, että olemassaolevia toiminnanohjauksen, toimitusketjun hallinnan, asiakashallinnan ja tuotetiedon hallinnan sovelluksia voidaan kuorruttaa Web Services -palvelurajapinnoilla ja avata niitä ulkopuolisten tahojen käyttöön. Tämä ilmiö sai nimen palveluarkkitehtuuri, Service Oriented Architecture, SOA. Sittemmin käsitteeseen on liitetty liiketoiminnan sääntöjen pohjalta tapahtuva palveluiden kutsuminen tietyn toimintaprosessin suorituksen edetessä. Toimintaprosessien automatisointi ja hallinta, Business Process Management, BPM on nykyään oleellinen osa palveluarkkitehtuuria.

BPM työvälineiden avulla on mahdollista kuvata yrityksen tai sen osan toimintaprosessia ja tuottaa kuvauksesta automaattisesti toimintaprosessin suoritusta ohjaavaa koodia BPEL (Business Process Execution Language) -kielellä. Koodia suorittava prosessimoottori toteuttaa toimintaprosessin tehtäviä ja kutsuu tehtävissä tarvittavia Web Services -palveluita. Toimintaprosessin kuvauksen pohjalta automaattisesti tuotettu prosessia suorittava koodi, joka hyödyntää yrityksen ydinpalveluita on merkittävä parannus sovellustyön tuottavuuteen verrattuna aikaisempaan määrittely ja ohjelmointi -malliin.

SOA vaikuttaa tällä hetkellä olevan ohjelmistokehityksen valtavirtaa. Vuonna 2005 Gartner ( http://www.gartner.com/ ) ennusti, että 80% kaikesta ohjelmistokehityksestä perustuu SOA-malliin vuonna 2008. SOA periaatteita selvittäviä linkkejä löytyy todella lukuisasti.

2. SOA ja Web 2.0

Yhdistelmälle SOA Web 2.0 Google antaa seuraavan tuloksen:
Tulokset 1 - 30 noin 26 200 000 osuman joukosta haulle SOA Web 2.0. (0,11 sekuntia).

Aihe on ilmeisen kiinnostava ja siitä on paljon sanottu netissäkin.

Eräs siteeratuimpia keskustelijoita on Dion Hinchcliffe. Hänen keskusteluteemansa kuuluu: "Onko Web 2.0 yhtäkuin globaali SOA?"

Yhtäläisyyksiä löytyy jo ensi tutustumisella kumpaankin. Molemmat perustuvat ajatukseen hajautetuista, itsenäisistä palveluista, joita voidaan yhdistellä uusien palveluiden aikaansaamiseksi. Näyttäisi siltä, että kyseessä on fraktaalinen rakenne. Samanlaisia rakenteita voidaan yhdistellä isommiksi rakenteiksi, joita taas voidaan yhdistellä isommiksi jne. Voisiko Web 2.0 olla laajin mahdollinen palveluarkkitehtuurin ilmentymä, joka on mittakaavaltaan globaali ja ulottuu kaikkialle?

Lähtökohtaisesti SOA ja Web 2.0 perustuvat tietokantaan ja sen päälle rakennettuihin Web Services palveluihin, joita muut sovellukset voivat hyödyntää. Siitä eteenpäin yhtäläisyydet eivät ehkä olekaan niin ilmeisiä. Yhtäläisyyksiä ja eroavuuksia voidaan tarkastella Tim O´Reillyn määrittelemien Web 2.0 ominaisuuksien pohjalta.

Palvelualusta

SOA sisältää oletusarvoisesti palvelualustan käsitteen. Palveluarkkitehtuurin mukaisesti nykyaikainen sovellusohjelmisto muodostuu palveluista, jotka on rekisteröity palveluhakemistoon ja joita voidaan sieltä tarpeen tullessa hakea ja käyttää. Samoin Web 2.0 käsittää palveluita, joita voi käyttää ja yhdistellä. Ehkä eroja löytyy siitä, mihin palvelualustaa käytetään. Yritykset käyttävät sovelluspalveluitaan pääsääntöisesti toimintaprosessiensa tukemiseen. Toimintaprosessien on oltava sujuvia, ennakoituja ja tuotettava asiakkaan tarvitsemat palvelut ja tuotteet ajallaan. Vaikka teoriassa on mahdollista hakea tarvittavia sovelluspalveluja sillä hetkellä kuin niitä tarvitaan, on käytännössä yritysten toiminnassaan tarvitsemien palvelujen oltava jo ennalta sovittuja ja käytettävissä. Yksittäisistä palveluista muodostetut yhdistelmäpalvelut toteuttavat liiketoiminnan tarvitsemia toimintoja ja ovat hyvin vahvasti etukäteen suunniteltuja ja hallittuja.

Web 2.0 tarjoaa myös palveluita. Niitä on kuitenkin mahdollista yhdistellä vapaasti ja mahdollisesti eri yritysten kesken. Yksi esimerkki on Google Maps palvelurajapintoja hyödyntävät erilaiset yhdistelmäpalvelut (mashups), joita ProgrammableWeb.com on luetteloinut yli 600. Tämä palveluiden vapaa yhdisteleminen ja syntyneiden palveluiden päälle uusien palveluiden rakentaminen on ilmiö, joka leviää Web 2.0 :ssa kiihtyvällä vauhdilla aivan toisella tavalla kuin yrityksen sisäisessä palvelutarjonnassa.

Kollektiivisen tietämyksen valjastaminen ja kertyvän datan hyödyntäminen

Yritysten tietokantoihin kertyy dataa yleensä lineaarista vauhtia liiketoiminnan tapahtumien volyymien tahtiin, koska se on tarkoitettu yrityksen omien työntekijöiden käyttöön. Web 2.0 :ssa kertyvä data on tarkoitettu palveluiden käyttäjien yhteiseen käyttöön. Se saa aikaan ilmiön: Mitä enemmän Web 2.0 tyyppiseen palveluun kertyy dataa, sitä enemmän sitä kannattaa käyttää ja kerryttää syntyvää dataa. Eli syntyy itseään vahvistava takaisinkytkentä, joka ruokkii kasvua. Hyviä esimerkkejä ovat mm. Amazon.com, jossa asiakkaiden ostoksien perusteella annetaan vinkkejä muista kirjoista, joita voisit ostaa tai YouTube, johon voi kerryttää ottamiasi videoleikkeitä jne. Tiedon kertymisen vauhti on niissä lähempänä eksponentiaalista kasvua. Wikipediaan kertyy tietoa käyttäjien itsensä keräämänä. Bloggaamiseen liittyy mahdollisuus viitata toisen blogiin ja siellä olevaan kirjoitukseen jolloin linkkien muodostama verkko laajenee valtavaa vauhtia. Tällaista itseään vahvistavaa ilmiötä harvoin näkee yritysten palveluarkkitehtuurin myötävaikuttamana.

Ohjelmistoversioiden hallinta

Yritysten sovellusten versiointi on edelleen vaativa tehtävä ja varsinkin työasemassa olevien sovellusten päivittäminen on työlästä ja tarkkuutta vaativaa toimintaa. Web 2.0 maailmassa käyttäjä ei ole tietoinen ohjelmistoversioista. Työasemassa vaaditaan ainoastaan vakioselain ja kaikki sovellustoiminnallisuus tulee palvelimelta. Sovelluksen versiota voidaan päivittää vaikka käyttäjän kahden eri käyttökerran välillä käyttäjän tarvitsematta itse vaikuttaa asiaan lainkaan.

Kevyet ohjelmointimallit

Palveluarkkitehtuurin periaatteisiin kuuluu suurten ohjelmakokonaisuuksien purkaminen pienemmiksi palveluiksi, joita voidaan joustavasti käyttää uusien toimintojen toteuttamiseen. Web 2.0 :ssa ohjelmointimallien keveys ja yksinkertaisuus menee pidemmälle. Mitä yksinkertaisempia palveluiden rajapinnat ovat, ja mitä kätevämpiä työvälineet ovat sitä nopeammin saa rakennettua uusia palveluita.

Ohjelmistot ulottuvat yksittäisten laitteiden yli

Perinteisessä mallissa ohjelmisto on sidottu tiettyyn laitteeseen, oli se palvelinsovellus tai selainsovellus. Web 2.0:ssa ohjelmisto ei erota laiterajoja. Esimerkkinä Applen iPod/iTunes yhdistelmä, jossa ohjelmisto ulottuu kädessä pidettävästä laitteesta välissä olevan työaseman yli keskitetyllä palvelimella olevaan massiiviseen tietokantaan asti.

Rikas käyttäjäkokemus

Perinteisessä Client-Server mallissa käyttöliittymäsovellus sijaitsee työasemassa ja voi monipuolisella tavalla ohjata käyttäjän toimintaa näppäinten painallusten ja kursorin liikkeiden perusteella. Perinteisessä selainkäyttöliittymässä palvelinsovellus saa tiedon käyttäjän liikkeistä vasta kun selain lähettää päivitetyn sivun palvelimelle. Uudet teknologiat kuten Ajax ja Flash antavat mahdollisuuden selaimen ja palvelimen väliseen reaaliaikaiseen tietojenvaihtoon. Web 2.0 :n keskeinen ominaisuus on näiden uusien teknologioiden hyödyntäminen käyttöliittymän toteuttamiseksi käyttäjää palvelevalla tavalla. Hyvä esimerkki on mm. Google Earth, jossa hiiren avulla voi reaaliajassa ohjata liikkumista maapallosta otettujen satelliittikuvien päällä.

SOA oikeastaan ei ota lainkaan kantaa käyttöliittyymään. Se olettaa, että jokin ohjelma keskustelee käyttäjänkin kanssa, mutta pääpaino on palvelujen tuottamisella ja uudelleenkäytöllä.

Yhteenvetona voisi todeta, että SOA asemoituu vielä vahvasti atk-osastojen ajatus- ja toimintamalliksi, kun taas Web 2.0 sijoituu sinne kansalaisten ja yhteisöjen alueelle, sosiaalisen kanssakäymisen mahdollistajaksi ja edistäjäksi.

Lähteitä:

Ron Schmelzer et al. XML and Web Services Unleashed. Sams Publishing, 2002.

Clive Finkelstein. Enterprise Architecture for Integration. Rapid Delivery Methods and Technologies. Artech House, 2006.

Luentomoniste. Web 2.0 Sosiaalisen median ja yhteisöllisen sovellukset. Professori Jari Multisilta. Tampereen teknillinen yliopisto 2007.

Internetlähteet

http://www.alphaworks.ibm.com/webservices 20.3.2007

http://www.gartner.com/ 21.3.2007

http://soa.sys-con.com/read/346363.htm 22.3.2007

http://web2.wsj2.com/is_web_20_the_global_soa.htm 22.3.2007

http://www.java.sys-con.com/read/325192_1.htm 22.3.2007

6 comments:

Arttu Perttula said...

Mainitsit, että jätät tekniset yksityiskohdat vähemmälle esityksessäsi. Toisaalta olisi ollut mielenkiintoista kuulla myös hieman enemmän sitä puolta.

Liisa Peltomäki said...

Hyvä esitys: web 2.0 ja palveluarkkitehtuuri selkiintyi.

Clienttien versiopäivityksen lähestyessä selainpohjaiset ratkaisut tuntuvat todella houkuttelevalta.

Mikko Koskela said...

Erinomaisen selventävä esitys polttavasta aiheesta. Olen Timon kanssa samoilla linjoilla siitä, että SOA on vielä pitkälti yritysten heiniä ja Web 2.0 enemmänkin kansalaisten ja yhteisöjen alueella. Toki poikkeukset vahvistavat säännön, mutta yleisesti ottaen näin. Web 2.0 nojaa ehkä SOAP:ia mielummin REST:iin, joka on simppelimpi ja nopeampi tapa päästä kiinni palveluresursseihin. Ylipäänsä Web 2.0 menee ennemminkin siitä mistä helpoiten ja nopeiten saa näyttävää aikaiseksi, kun taas SOA nojaa standardointiin ja yhteistoiminnallisuuteen. Standardointi tulee Web 2.0:aan vasta jälkijunassa.

toveri said...

Mielenkiintoinen esitys ja valotti hyvin aihetta. Sisältö aukesi hyvin tällaiselle ei-niin-teknisen ajattelukyvyn omaavallekin henkilölle. Yhdisti hyvin seminaarin eri osioita.

Tiina said...

Kiinnostava esitys. Web 2.0:n palveluarkkitehtuuri oli hyvin esitetty ja selkiytyi jopa minulle. Kiva, ettei esityksessä menty liian syvälle teknisiin yksityiskohtiin.

Pertti Salo said...

Tietokannat ja tietojärjestelmät ja niihin liittyvät web-selain- yhteys sovellukset ja palvelut ovat keskeinen alue yritystoiminnassa.