Hajautetut järjestelmät

17.4.1999

Teemu Ikonen
Tik
Teknillinen korkeakoulu
Teemu.Ikonen@iki.fi

Tiivistelmä

Nykyään työvälineiden kehittyminen ja laitteistokannan nopea paraneminen on mahdollistanut yhä tuottavamman ohjelmiston rakentamisen [3]. Osittain on kuitenkin unohtunut se tosiasia, että suurimmat kustannuserät ohjelmiston rakentamisessa ovat järjestelmäintegraatio ja ylläpito. Skaalautuvuus on ollut myös ongelmana perinteisillä järjestelmillä.
Tähän ongelmaan on tarjottu nyt uudenlaista ratkaisua joka perustuu voimakkaaseen ohjelmiston hajauttamiseen ja näiden komponenttien väliseen informaationvaihtoon.


1 Johdanto

1.1 Aihealue

1.2 Huomioitavaa

2 Ohjelmistot

2.1 Määritelmä

2.2 Ominaisuudet

2.3 Ympäristö

2.4 Integraatio

2.5 Vaatimukset

2.5.1 Käytettävyys

2.5.2 Ylläpidettävyys

2.5.3 Skaalautuvuus

3 Perinteiset ratkaisut ja toteutustekniikat

3.1 1-Taso arkkitehtuuri

3.1.1 Rakenne

3.1.2 Integraatio ja skaalautuvuus

3.1.3 Verkko

3.1.4 Tulevaisuus

3.2 2-Taso arkkitehtuuri

3.2.1 Rakenne

3.2.2 Integraatio ja skaalautuvuus

3.2.3 Verkko

3.2.4 Tulevaisuus

4 3-Taso arkkitehtuuri

4.1 Rakenne

4.1.1 MOM-Message Oriented Middleware

4.1.2 Olio-Arkkitehtuurit

4.2 Integraatio ja skaalautuvuus

4.3 Verkko

4.4 Tulevaisuus

Lähdeluettelo

Lisätietoja


1 Johdanto

Suuret monikäyttäjä-järjestelmät toimivat fyysisesti aina samalla tavalla, eli käyttäjät istuvat tietokoneen ääressä, joka on verkolla yhdistetty yhteiseen verkkoon tai suuriin keskuskoneisiin.
Näissä järjestelmissä on tyypillisesti useita erilaisia verkkoratkaisuja nopeasta ATM:stä 64kb ISDN-linjoihin ja jopa dial-in liittymiin. Jotkut arkkitehtuurit vaatiivat suurten datamäärien siirtoa ja verkon tukkeutuminen tekee mahdottomaksi näiden järjestelmien skaalautumisen ilman suunnattomia infrastuktuurikustannuksia. Verkkoresurssien käyttö on yksi ensiarvoisen tärkeitä asioita suunniteltaessa arkkitehtuuriratkaisuja tälläisissä ympäristöissä. Erilaisia variaatioita on useita, mutta näiden järjestelmien arkkitehtuurimallit voidaan jakaa 1-, 2-, ja 3-tasoarkkitehtuureihin. Nämä kaikki käyttävät resursseja ja verkkoja eri tavalla ilman että käyttäjä välttämättä huomaa mitään eroa käytettävyyden kannalta.
 

1.1 Aihealue

Tämä essee käsittelee teknisellä tasolla järjestelmien toteuttamista erilaisilla verkkoliikenteeseen perustuvalla arkkitehtuurilla. Kaikessa, missä järkevää, on aihetta pyritty tarkastelemaan verkkojen näkökulmastä. Tämän vuoksi esim. Ylläpidettävyyskysymykset on jätetty pois arkkitehtuurikuvaukista, sillä ne eivät varsinaisesti liity verkkotekniikkaan.
 

1.2 Huomioitavaa

Suurten järjestelmien arkkitehtuureja ei tehdä ainoastaan akateemisesta mielenkiinnosta, vaan asiakkaan tarpeesta. Yrityksien intressi on tehdä mahdollisimman asiakasta tyydyttävä järjestelmä, sillä tyytyväinen asiakas tilaa lisätöitä ja ylläpitoa. Asiakas taas haluaa ratkaisustaan viime kädessä kilpailuetua, joten on ymmärrettävää että epäonnistumisista tai järjestelmien yksityiskohdista ei kerrota. Ainoat julkaisut mitä aiheesta on saatavilla ovat siis yritysten mainosmiesten puheita joiden objektiivisuus on vähintäänkin kyseenalainen. Toteutustekniikoiden teknisiä yksityskohtia ei ole alan julkaisuista saatavilla.

Esseetä ajatellen aihe on siis huono sillä kaiken asiatiedon pitäisi löytyä viittauksista. Olen kuitenkin valinnut aiheen koska omaan kahden vuoden omakohtaisen kokemuksen tässä esseessä käsiteltyjen arkkitehtuurien evaluoinnista, käytöstä, migraatiosta ja integraatiosta Tieto Oyj:ssä. Suurin osa asiatiedosta on siis kokemuksen kautta kerättyä muilta alan asiantuntijoilta. Olen joutunut kerran viittaamaan omaan tekstiini joka ei luonnollisesti ole julkinen. Muut viittaukset liittyvät lähinnä teknisiin yksityiskohtiin.

2 Ohjelmistot

Ohjelmistoja on lukemattomia erilaisia, koska tämän dokumentin tarkoitus ei ole käsitellä niitä kaikkia, on ohjelmiston käsite on määriteltävä. Tässä kappaleessa on kuvattu ohjelmiston tyypillinen rakenne jota tässä dokumentissa käsitellään.

2.1 Määritelmä

Ohjelmiston määritelmä tässä dokumentissa on suuri järjestelmä jossa on kymmeniä tai jopa tuhansia käyttäjiä. Näitä ovat tyypillisesti kaupallishallinnolliset ja pankkitoimiin liittyvät järjestelmät. Teollisuuden prosessiohjaus tai vastaaavat eivät kuulu tähän joukkoon, sillä niissä suurimman osan muodostaa  kiinteät mittauslaitteet, teollisuusautomaatio tai muu alemman tason toiminta. Tästä eteenpäin tässä kirjoituksessa ohjelmisto käsitetään em. kaltaiseksi.

2.2 Ominaisuudet

Suurten ohjelmistojen  muodot ja käyttötarkoitukset ovat lukemattomat, mutta niitä yhdistävät seuraavat tekijät.

 

2.3 Ympäristö

Ympäristöt ovat luonteltaan erittäin monimuotoisia, sillä isojen yritysten historiassa on ollut monta entistä tietohallinnolista ratkaisua, joten vanhoja käytössä olevia järjestelmiä löytyy aina. Samoin laitteistopuolella löytyy useita erilaisia työasema- ja verkkoratkaisuja. Uusi järjestelmä on siis kyettävä sopeuttamaan näihin oloihin usein vielä korvaten vanhaa järjestelmää ainakin osittain.

2.4 Integraatio

Integraatio eri järjestelmien välillä on vaativimpia  osia järjestelmien toteutuksessa ja käyttöönotossa. Yksittäistä vanhaa järjestelmää ei varmasti aleta muuttamaan enää, joten uuden on sopeuduttava vanhaan toimintatapaan. Tämän integraation lisäongelmana on käytetty protokolla ja se millä tekniikalla tämä toimii.

2.5 Vaatimukset

Suurilla järjestelmillä on muutamia tärkeitä vaatimuksia. Nämä vaatimukset voisi olla millä järjestelmällä tahansa, mutta vaatimusten perusteet ovat tämänkokoisilla järjestelmillä syytä mainita.

2.5.1 Käytettävyys

Suuret järjestelmät ovat usein niin kiinteä osa niitä käyttävien yritysten liiketoiminnassa, että pieninkin katkos voi aiheuttaa suuria taloudellisia menetyksiä tai ainakin maineen menetystä. Järjestelmän vikasietoisuuus ja toipumiskyky ovat siis tärkellä prioriteetilla.

2.5.2 Ylläpidettävyys

Organisaatiot sopeuttavat itseään talouden ja hallinnon muutoksiin, lakimuutokset tai uuden toimialan valtaus voi aiheuttaa suuriakin muutoksia järjestelmän logiikkaan.  Ohjelmistot ovat siis aina jatkuvan muutospaineen kohteena. Usein näitä muutoksia tulee jo ohjelmiston kehitysvaiheessa. Ellei järjestelmää voida sopeuttaa näihin muutoksiin, muuttuu se arvottomaksi käyttäjälleen, ylläpidettävyys on näin ollen ohjelmiston tärkein kriteeri. [1]

2.5.3 Skaalautuvuus

"Ainoa varma asia on muutos" - on konsulttien suosikkimantra tällä hetkellä. Valitettavasti se on myös totta. Muutospaineet, jotka toivottavasti järjestelmän korkea ylläpidettävyys pystyy hoitamaan, aiheuttavat useimmiten aina kasvua. Kasvu tarkoittaa aina lisää käyttäjiä, liittymiä tai jopa kolmannen osapuolen järjestelmiä. Skaalautuvuus voidaan tiettyyn rajaan hallita ostamalla suurempia koneita, mutta keino on suhteettoman kallis jos ohjelmistoa ei voida sijoittaa pienempiin osiin

3 Perinteiset ratkaisut ja toteutustekniikat

Tämäntyyppisiä ohjelmistoja on tehty jo pitkään, joten niitä on tehty kaikilla kolmella erilaisella tekniikalla. Edellä mainitut ohjelmiston vaatimukset eivät ole pitkään muuttuneet mihinkään joten ne on täytynyt tyydyttää perinteisillä ratkaisuilla. Näillä ratkaisulla on tyypilliset ongelmansa varsinkin integraation, ylläpidettävyyden  ja skaalautuvuuden osalta.
 

3.1 1-Taso arkkitehtuuri

Tämä on ohjelmistojen toteuttamisessa vanhin malli. jossa käytetään yhtä suurta keskuskonetta joka palvelee verkon kautta ns. tyhmiä päätteitä.  Nämä päätteet ovat tavallisesti olleet normaaleja vt-terminaaleja. Tähän ratkaisuun päädyttiin aikanaan jo kustannussyistä, sillä henkilökohtaiset tietokoneet olivat varsin kalliita. Tämä ratkaisu tunnetaan nimellä 1-taso arkkitehtuuri.

3.1.1 Rakenne

Järjestelmä koostuu yhdestä tai usemmasta keskuskoneesta, joissa ohjelmistoa ajetaan. Käyttäjät käyttävät ohjelmistoa tyhmistä päätteistä jotka vain ovat ikkunana pääjärjestelmään. Tyypillinen esimerkki tästä on tavallinen UNIX-järjestelmä. Käyttäjät loggaavat terminaalilla sisään ja käyttävät järjestelmää. Kaikki ohjelmat on siis ajettava yhdessä ainoassa tietokoneessa [1]. Arkkitehtuuri ei siis ole hajautettu muuten kuin käyttäjien osalta.

3.1.2 Integraatio ja skaalautuvuus

Integraatio on hyvin ongelmallista. Yhdessä suuressa koneessa on tietysti tuki TCP/IP-liikenteeseen ja ehkä muihin olemassaoleviin protokolliin. Järjestelmän rakenne kuitenkin vaatii, että integraatiomoduli on aina toteutettava tällä yhdessä alustassa. Samoin looginen protokolla jolla integraatio tehdään on aina erilainen riippuen tekijöistä ja tarpeista.
1-tasoarkkitehtuurin akilleen kantapäät ovat skaalautuvuus ja intergraatio. Ohjelmisto skaalautuu vain niin paljon kuin alla oleva mainframe-tietokone ja sen käyttöjärjestelmä kestää. Koneen uusiminen tulee erittäin kalliiksi. Integraatio esim. uudenlaisiin tekniikoihin on vaikeaa, koska yhteen ainoaan laitteistoon ja käyttöjärjestelmään sidottu ohjelma ei sovi suoraan yhteen minkään 3:n osapuolen ohjelmiston kanssa.

3.1.3 Verkko

Verkkoliikenne on vähäistä, sillä tietoverkoissa liikkuu pääosin pelkkä käyttöliittymädataa. X-protokollan komentoja tai terminaalien ohjauskoodeja. Integraatio eri järjestelmien välillä tuottaa myös liikennettä, mutta tämä liikenne voidaan optimoida minimaaliseksi.

3.1.4 Tulevaisuus

Monet valmistajat, kuten esim SUN, on lanseerannut niin sanottua network-computing periaatetta joka käytännössä on 1-tasoarkkitehtuuri.   Sunin JavaStation on markkinoiden ensimmäinen alusta, pitäen verkkotietokoneeksi suunniteltu työasema [5].

3.2 2-Taso arkkitehtuuri

Henkilökohtaisen tietokoneiden lisääntyessä yleiseen käyttöön ja graafisten käyttöliittymien kehittyessä nämä uudet tietokoneet  luonnollisesti tulivat alustoiksi uusille ohjelmistoille. Samalla keksittiin käyttää näiden työasemien teho hyödyksi ja laittaa osa keskuskoneiden taakkaa näiden koneiden harteille. Suuret koneet ajavat tietokantaa ja joitan suurempia kokonaisuuksia ja operatiivista osaa järjestelmää ajetaan nyt myös työasemissa jotka ovat suorassa yhteydessä tietokantaan. Tämä ratkaisu on 2-tasoarkkitehtuuri. Microsoft on tämän tekniikan suurin osaaja alalla. Windows on tehty tämän tyyppisten ratkaisujen käyttöön.  

3.2.1 Rakenne

Näissä järjestelmissä tietokanta ainoana yhtenä suurena kokonaisuutena tarvitsee ison koneen. Muu järjestelmä on hajautettu moniin erilaisiin osa-ohjelmiin tai prosesseihin joita ajetaan loppukäyttäjän työasemassa sekä suurkoneissa. Olennaisena erona 1-taso arkkitehtuurin on se, että ohjelmistoa ajetaan myös työasemissa, eli järjestelmä on hajautettu. .

3.2.2 Integraatio ja skaalautuvuus

Integraatio-ongelmat eivät näissä järjestelmissä ole sen helpompia kuin 1-taso arkkitehtuureissä, sillä perusteiltaan ongelmat ovat samoja. Järjestelmäintegraatiota on vaikea tehdä työasematasolle järjestelmien erilaisuuden vuoksi, joten ainoa ratkaisu on tehdä integraatiomoduli mahdollisimman lähelle tietokantaa. Tämä vastaa 1-tasoarkkitehtuurin rakennetta.
Skaalautuvuuden pullonkaula on verkko, sillä jokainen lisätty tietokone lisää verkon rasitusta. Varsinkin järjestelmissä jossa työasemat eivät enää sijaitse samassa runkoverkossa tämä aiheuttaa verkkoliikenteen solmukohtien, kuten reitittimien tukkeutumista.

3.2.3 Verkko

Arkkitehtuuri on vaativa verkolle, sillä suurin osa liikenteestä on tietokantatietojen massiivistakin siirtoa. Suuret haut tietokantaan voivat tukkia verkon kun tietoa siirretään tietokannan ja käyttöliittymän välillä.

3.2.4 Tulevaisuus

Suurin osa toteututeista järjestelmistä on tehty 2-tasoarkkitehtuurilla, mutta  em. ongelmien vuoksi mallin paras sovellusalue on keskisuuret järjestelmät joissa verkkoympäristö on mahdollisimman homogeeninen. Se pysynee tässä käytössä edelleenkin.  

4 3-Taso ratkaisu

Uusin arkkitehtuurimalli, jota nyt on alettu tarjota ratkaisuksi perinteisten järjestelmin ongelmiin, on 3-taso arkkitehtuuri. 3-tasoarkkitehtuurin idea on loppukäyttäjän suhteen fyysisesti samantyyppinen kuin 1-tasoarkkitehtuurin. Arkkitehtuurissa on pääosin kahta eri tyyppiä: MOM ja Olio-tyyppiset ratkaisut.

4.1 Rakenne

Arkkitehtuurit eroavat toisistaan, joten ne on käsitelty rakenteen osalta erillään.

4.1.1 MOM - Message Oriented Middleware

Tämä arkkitehtuuri koostuu kolmesta kerroksesta; asiakassovellukset, palvelimet ja tietokanta. Kuten nimestä voidaan päätellä, keskustelevat asiakassovellukset ja palvelimet tietyllä protokollalla, eli sanomilla toistensa kanssa.

4.1.2 Olio-arkkitehtuurit

Arkkitehtuurin idea on tarjota objekteja joita voidaan sitten käyttää niiden fyysisestä sijainnista riippumatta. Käyttäjän ohjelmalla voidaan tarjota liittymä objektiin jonka implementaatio voikin olla aivan toisessa koneessa eri laitteistoalustalla. Arkkitehtuuri välittää metodien parametrit verkon yli kuten myös paluuarvotkin. Tämä arkkitehtuuri on teknisesti monimutkaisin. Esimerkkejä tästä arkkitehtuurista on COM ja CORBA tyyppiset järjestelmät.

4.2 Integraatio ja skaalautuvuus

Järjestelmien integraatio näillä arkkitehtuureilla on helpompaa kuin perinteisillä ratkaisuilla, sillä protokolla on sidottu. Kaikkien osa-aluiden on ymmärrettävä samanlaisia sanomia ja toimintatapoja. Täten integraatiossa voidaan keskittyä loogisiin ongelmiin teknisten sijaan.[2]

Skaalautuvuus näissä järjestelmissä on erinomainen, sillä mikä tahansa palvelin voi sijaita missä koneessa tahansa millä laitealustalla tahansa. Näin ollen järjestelmän kasvaessa sitä voidaan kasvattaa pienissä paloissa pienillä investoinneilla. [2]

4.3 Verkko

Hyvin suunnitellun järjestelmän verkkoliikenne on erittäin vähäistä, sillä sanomissa välitetään vain tarvittu tieto ja vain se. Asiakassovelluksen pyytäessä jonkin tiedon se voidaan tehdä yksinkertaisella sanomalla. Samoin vastaus sisältää vain sen tiedon mitä tarvitaan.

4.4 Tulevaisuus

Tekniikasta odotetaan tällä hetkellä ratkaisua integraatio ja skaalautuvuusongelmiin joista vanhat arkkitehtuurit kärsivät. Tällä hetkellä markkinajohtaja on Bea Systems jonka BEA TUXEDO on tämän hetken käytetyin middleware [4]. Ohjelmistoalojen yritykset ovat siirtymässä tämän tekniikan käyttöön suurten järjestelmien toteuttamisessa huolimatta siitä ettei pitkän ajan kokemusta vielä ole.

 

 

Lähdeluettelo

[1] Comer, E. D., Internetworking with TCP/IP 3rd Edition, Prentice Hall, New Jersey 1995. 604 s.[viitattu 17.4.1999]
[2] Ikonen, T., Selvitys 3-tasoarkkitehtuurin rakentamisesta. Tieto Oyj, Espoo, 20.1.1999. [viitattu 17.4.1999]
[3] Haikala, I., & Märijärvi, J., Ohjelmistotuotannon perusteet, 3. Painos, Suomen ATK-kustannus Oy, Jyväskylä 1997, 358 s. [viitattu 17.4.1999]
[4] BEA-TUXEDO, BEA Systems, 1999 [viitattu 17.4.1999]

<http://www.beasys.com/products/tuxedo/index.html>

[5] Sun micrososystems Oy, 8.1.1999 [viitattu 17.4.1999]

<http://www.sun.fi/tuotteet/index.html>

Lisätietoja

Microsoft
Tämän hetken markkinajohtaja henkilökohtaisen työasemasovellusten ohjelmistoalustana
Beasys