Verkkosovellusten mallintaminen Luento 5 58153003 Ohjelmistojen suorituskyky 1 VERKKOSOVELLUKSET 58153003 Ohjelmistojen suorituskyky 2 Helsingin Yliopisto / Tktl 1
Taustaa Monet nykyiset kuluttajasovellukset ovat joko verkon yli selaimen kautta käytettäviä palveluja Verkkopankki, web-kaupat, google docs, tai päätelaitteella (PC, tabletti) suoritettavia natiivi -applikaatioita, jotka käyttävät pilvessä olevia resursseja internetin yli Musiikkipalvelut, yhteisöpalvelut, tiedostonjakopalvelut, uutispalvelut, navigointi jne. Thin client, fat client, RIA, 58153003 Ohjelmistojen suorituskyky 3 Taustaa Tällaisten sovellusten suorituskykyyn vaikuttavat seuraavat seikat Toimintaan osallistuvien objektien/komponenttien sijoittelu eri laitteille ja niiden prosessointiyksiöille (omiksi prosesseikseen) Objektien välisen kommunikoinnin frekvenssi Kommunikaation synkronisuus Kommunikaatiossa siirretyn data määrä Objektien tekemän prosessoinnin määrä Monisäikeisten objektien käyttö 58153003 Ohjelmistojen suorituskyky 4 Helsingin Yliopisto / Tktl 2
Web-sovellukset Tyypillisessä web-sovelluksessa asiakasohjelma (client, yleensä web-selain) kommunikoi http-yhteyttä käyttäen internetin yli palvelinohjelmiston (web server) kanssa Kts. Client-Server arkkitehtuurityyli Asiakkaan pyynnön ottaa vastaan web-palvelin, joka tulkitsee pyynnön käynnistäen varsinaisen sovelluksen (web application) Web sovellus käyttää erilaisia resursseja (esim. tietokanta) muodostaaksen vastauksen asiakkaan pyyntöön esim. html sivun tai data-objektin, jonka asiakasohjelma renderöi eli näyttää käyttäjälle käyttöliittymässään Web sovellus voi myös toimia fasaadina (wrapper) johonkin legacyjärjestelmään (perinteinen keskuskone- eli mainframe-ratkaisu), joka ei itse tarjoa web-liittymää asiakkaille 58153003 Ohjelmistojen suorituskyky 5 Geneerinen web-sovelluksen arkkitehtuuri 58153003 Ohjelmistojen suorituskyky 6 Helsingin Yliopisto / Tktl 3
Suorituskyky Sekä responssivisuus että skaalautuvuus ovat tärkeitä ominaisuuksia web-sovelluksille Käyttäjät (asiakkaat) eivät halua odottaa pitkään 1, vaan siirtyvät herkästi käyttämään toista palvelua Internetissä avoimesti saatavilla oleviin palveluihin voi kohdistua yhtäkkisiä ryntäyksiä, jolloin käyttäjämäärät kasvavat hvyin suuriksi lyhyessä ajassa 1 Nah, Fiona Fui-Hoon. "A study on tolerable waiting time: how long are web users willing to wait?. Behaviour & Information Technology 23.3 (2004): 153-163. http://csi.ufs.ac.za/resres/files/nah.pdf 58153003 Ohjelmistojen suorituskyky 7 Suorituskyvyn kannalta huomionarvoisia seikkoja on monia Käyttäjämäärien ja työkuormien ennakointi Web applikaatio teknologian valinta (framework) Komponenttien sijoittelu prosessointiyksiköihin Virtualisoinnin vaikutus Tietokantaliittymien ja tietokantojen suorituskyky (SQL, No-SQL, dfs+map-reduce), palvelinten sijoittelu Käyttäjien autentikointi, pääsyn valvonta ja muu tietoturvaan liittyvä Instrumentointi käytön profiloimiseksi Liittymät legacy-järjestelmiin Mobiili koodi (JavaScript-komponenttien lataus clientiin) 58153003 Ohjelmistojen suorituskyky 8 Helsingin Yliopisto / Tktl 4
Hajautetut oliot eli DISTRIBUTED OBJECT TECHNOLOGY 58153003 Ohjelmistojen suorituskyky 9 Distributed Object Technology Smith & Williams:in kirjan ilmestymisen aikaan olioteknologia oli vahvassa nousussa ja sen ajateltiin sopivan luontevasti myös hajautettujen järjestelmien toteuttamiseen Kehitettiin käyttöjärjestelmätason oliomalleja ja väliohjelmistoja (middleware), joiden ideana oli piilottaa olion fyysinen sijoittelu (prosessi ja laite) sen kanssa vuorovaikutuksessa olevilta toisilta olioilta CORBA, COM+, J2EE 58153003 Ohjelmistojen suorituskyky 10 Helsingin Yliopisto / Tktl 5
DOT:n rajoitukset Hajautettujen olioiden käyttäjän kannalta niiden ohjelmallinen käyttö ei näennäisesti eroa paikallisten ( tavallisten ) olioiden käyttämisestä Rajapinta on täysin samanlainen, eikä käyttäjällä ole mitään tietoa varsinaisen olion (palvelun toteuttajan) fyysisestä sijainnista Eri prosessissa samalla tietokoneella, palvelinkoneessa samassa lähiverkossa tai jossain palvelinkeskuksessa WAN yhteyden takana Palvelun toteutuksen fyysistä sijaintia voidaan jopa siirtää käyttäjien sitä huomaamatta 58153003 Ohjelmistojen suorituskyky 11 DOT:n rajoitukset Teoriassa DOT vähentää ohjelman kompleksisuutta koodin tasolla, mutta suorituskyvyn hallinnan kannalta tekniikan käytöllä on haitallisia sivuvaikutuksia Hajautettujen olioiden operaatioiden kutsuissa on aina viivettä (väliohjelmiston yleisrasite, tiedon siirto), jonka suuruutta ohjelmoijan voi olla hyvin vaikea arvioida - sikäli kuin hän edes tietää viiveestä Suorituskyvyn parantamiseksi olioiden sijoittelu täytyy usein kuitenkin kiinnittää ja väliohjelmistot ohittaa paikallisia olioita käytettäessä 58153003 Ohjelmistojen suorituskyky 12 Helsingin Yliopisto / Tktl 6
Hajautetut ohjelmistot DOT perustuu oletuksille, jotka ovat vääriä hajautettujen ohjelmistojen suorituskyvyn kannalta: Sovelluksilla on luonnollinen olioperustainen muoto, joka on riippumaton sijoittelusta suoritusympäristöön Suorituskyky riippuu komponenttien sisäisestä implementaatiosta, eikä sovelluksen arkkitehtuuri vaikuta siihen Olion rajapinta on riippumaton sen käyttökontekstista (esim. tuki rinnakkaiselle käytölle) 58153003 Ohjelmistojen suorituskyky 13 Hajautetut ohjelmistot Hajautettu laskenta eroaa paikallisesta neljällä perustavalla osa-alueella 1. Operaatioiden viive (latency) 2. Muistiviittaukset (memory access) 3. Osittainen toimintahäiriö (partial failure) 4. Rinnakkaisuus Käytännössä näitä ei voi jättää huomiotta suorituskykyisiä hajautettuja ohjelmistoja kehitettäessä 58153003 Ohjelmistojen suorituskyky 14 Helsingin Yliopisto / Tktl 7
Viive (latency) Viiveellä tarkoitetaan paikallisen operaation ja etäoperaation kutsun vastausajan välistä eroa Suuruus monta kertaluokkaa Viiveeseen vaikuttavat Tietoliikenneyhteyden nopeus Väliohjelmiston aiheuttama yleisrasite Muistiviittaukset eri osoiteavaruuksien välillä Kommunikaatio on laskentaa kalliimpaa suoritusajan suhteen joten kommunikaatiokustannukset dominoivat hajautetuissa ohjelmissa 58153003 Ohjelmistojen suorituskyky 15 Muistiviittaukset (memory access) Paikallisia, samassa muistiavaruudessa sijaitsevia olioita voidaan käsitellä suorien osoittimien kautta ilman suurta viivettä Eri muistiavaruuksissa sijaitsevia (etä-)olioita on käsiteltävä erityisten kahvojen (handle) tai viiteobjektien kautta (references), mikä lisää yleisrasitetta suoriin osoittimiin verrattuna Rasite kertautuu viittausten määrän suhteessa 58153003 Ohjelmistojen suorituskyky 16 Helsingin Yliopisto / Tktl 8
Osittaiset häiriöt (partial failures) Hajautetun ohjelmiston komponentit voivat vikaantua toisistaan riippumatta Tietoliikenneyhteys, yksittäiset laitteet tai suorittimet Häiriöistä toipuminen on hankalaa, koska järjestelmällä ei ole yhtä globaalia tilaa, jonka voisi tallettaa ja palauttaa keskitetysti Kaksi periaatteellista tapaa käsitellä Käsitellä kaikkia olioita paikallisina, ja luottaa väliohjelmiston poikkeuskäsittelyyn Käsitellä kaikkia olioita etäolioina, mikä poistaa epädeterminismin mutta lisää viivettä ja tekee paikallisten olioiden käytöstä tarpeettoman monimutkaista 58153003 Ohjelmistojen suorituskyky 17 Rinnakkaisuus Hajautetussa sovelluksessa olion metodeja voidaan suorittaa rinnakkaisissa säikeissä Olion datan eheyden säilyttämiseksi metodit täytyy koodata sopivia poissulkemismekanismeja (mutual exclusion) käyttäen Jos olioita ei haluta koodata niin, että jokaisen rinnakkaista käyttöä täytyy erikseen miettiä, vaihtoehtoja on periaatteessa kolme 1. Ei välitetä koko ongelmasta -> vakavien häiriöiden riski suuri 2. Suojataan kaikki oliot niin, että niitä voi käyttää vain yhdestä säikeestä kerrallaan -> suorituskykyongelmat voivat vaatia olioiden muuttamista monisäikeisiksi myöhemmin 3. Tehdään kaikista olioista monisäikeistä käyttöä tukevia -> aidosti yksisäikeisistä olioista tulee turhan monimutkaisia ja metodikutsuihin tulee lisää viivettä 58153003 Ohjelmistojen suorituskyky 18 Helsingin Yliopisto / Tktl 9
Hajautettujen ohjelmistojen kehittäminen Hajautettujen (olio-) sovellusten kehittäminen miettimättä komponenttien fyysistä sijoittelua ja niitten välisiä kommunikaatiomekanismeja on kaunis mutta epärealistinen ajatus Realistisempi lähestymistapa on miettiä olioiden hajatutusta jo kehityksen alkuvaiheessa, koska tällaisten suunnittelupäätösten muuttaminen myöhemmin on hankalaa Esimerkiksi jos tiedetään jonkin olion/palvelun olevan etäolio, kannattaa valita arkkitehtuuri, joka minimoi olion/palvelun kutsujen määrän ja maksimoi kutsujen tuottaman hyödyn 58153003 Ohjelmistojen suorituskyky 19 SPE JA HAJAUTETUT JÄRJESTELMÄT 58153003 Ohjelmistojen suorituskyky 20 Helsingin Yliopisto / Tktl 10
SPE Paitsi komponenttien toteutuksesta, hajautetun ohjelmiston tai verkkosovelluksen suorituskyky riippuu pitkälti eri komponenttien välisen kommunikaation luonteesta ja taajuudesta (frequency) SPE-menetelmät tarjoavat mahdollisuuden ottaa olioiden hajautus ja verkkosovellusten erityispiirteet huomioon ohjelmistokehityksen aikaisessa vaiheessa SPE:n mallinnustrategiaa noudattaen aluksi mallinnetaan etäpalvelupyyntöjen suoritus yksinkertaisesti tietyn suuruisena viiveenä ohjelmasuoritusmalleissa Myöhemmässä vaiheessa malleihin lisätään synkronointipiirteitä, jolla (palvelin-) osamallien ratkaisut saadaan kytkettyä niitä käyttäviin malleihin 58153003 Ohjelmistojen suorituskyky 21 Kommunikaation ja synkronoinnin tyyppi Itsenäisten (osa-) järjestelmien välisessä vuorovaikutuksessa tunnistetaan neljä kommunikaatiotyyppiä Synkroninen Asynkroninen Viivästetty synkroninen Asynkroninen takaisinkutsuun perustuva Kommunkikaation tyyppi vaikuttaa kutsuvan komponentin/prosessin toiminnan ajoitukseen ja siten sen havaittuun suorituskykyyn 58153003 Ohjelmistojen suorituskyky 22 Helsingin Yliopisto / Tktl 11
Ajoituskaaviot Seuraavissa ajoituskaavioissa aktiivinen tila tarkoittaa asiakkaan pyyntöön liittyvää prosessointia ja toimeton tila, että elementti ei tee mitään asiakkaan pyyntöön liittyvää juuri silloin Toimintaa tarkastellaan siis asiakkaan näkökulmasta Oletetaan asiakkaan ja palvelimen sijaitsevan eri laitteissa, joita yhdistää tietoliikenneverkko 58153003 Ohjelmistojen suorituskyky 23 Synkronisen kommunikaation ajoituskaavio Client Network Server Active Idle Active Idle Active Idle Asiakkaan toiminta ei voi jatkua, ennen kuin palvelimelta tulee vastaus 58153003 Ohjelmistojen suorituskyky 24 Helsingin Yliopisto / Tktl 12
Asynkronisen kommunikaation ajoituskaavio Client Network Server Active Idle Active Idle Active Idle Asiakkaan toiminta jatkuu, eikä se odota mitään vastausta 58153003 Ohjelmistojen suorituskyky 25 Viivästetyn synkronisen kommunikaation ajoituskaavio Client Network Server Active Idle Active Idle Active Idle Asiakkaan toiminta jatkuu vielä pyynnön lähetyksen jälkeen, mutta jonkin ajan kuluttua se pysähtyy odottamaan vastausta 58153003 Ohjelmistojen suorituskyky 26 Helsingin Yliopisto / Tktl 13
Asynkroninen takaisinkutsu Ajoituskaavio on samannäköinen kuin viivästetyn synkronisen kutsun kaavio Erona on, että asiakkaan tekemän asynkroninen kutsu palvelimelle sisältää tarvittavan informaation, jotta palvelin voi puolestaan tehdä asiakkaan suuntaan asynkronisen kutsun pyynnön valmistuttua 58153003 Ohjelmistojen suorituskyky 27 Synkronoinnin esitys suoritusverkoissa Kutsuva prosessi Kutsuttu prosessi Nimi Synkroninen kutsu - Kutsuja odottaa vastausta Vastaus Viivästetty synkroninen kutsu - Prosessointia tapahtuu, mutta odota vastausta Ei vastausta Asynkroninen kutsu - Ei odoteta vastausta Huom! synkronointi tapahtuu kutsuvassaprosessissa, ja siksi kutsuttua prosessia ei kiinnosta kutsun tyyppi, vaan halutaanko vastaus vai ei 58153003 Ohjelmistojen suorituskyky 28 Helsingin Yliopisto / Tktl 14
Väliohjelmistojen yleisrasitteen käsittely Kommunikaatioprotokolliin liittyy oma yleisrasitteensa, joka näkyy viiveenä viestinvälityksessä DOT:aan enemmän kuin muihin mekanismeihin SPE:ssä yleisrasitetta ei mallinneta eksplisiittisesti, vaan se sisällytetään palvelinprosessien kutsuihin Ajatuksena on, että rasite voidaan mitata ja arvioida benchmark -mittauksin 58153003 Ohjelmistojen suorituskyky 29 HAJAUTETUN OHJELMISTON SUORITUSMALLI 58153003 Ohjelmistojen suorituskyky 30 Helsingin Yliopisto / Tktl 15
Likimääräiset ratkaisut Yksityiskohtaisten synkronoitua käyttäytymistä sisältävien mallien ratkaiseminen (simuloimalla) voi vaatia paljon aikaa SPE:n mallinnusstrategian mukaan mallien likimääräiset ratkaisut ovat riittävän hyviä vakavien ongelmien havaitsemiseksi ja erilaisten vaihtoehtojen analysoimiseksi Arkkitehtuurin valinnan jälkeen kehitysprojektin myöhemmissä vaiheissa voidaan sitten käyttää yksityiskohtaisempia malleja ja simulointia tarkempien tulosten saamiseksi 58153003 Ohjelmistojen suorituskyky 31 Suoritusmallin rakenne Malli rakennetaan hajautetun järjestelmän eri laskentasolmujen eli laitosten (facility, location) tarjoamien resurssien perustalta Ohjelmiston prosessointi tapahtuu laitoksissa Mallinnetaan laitokset, joiden arvioidaan vaikuttavan eniten koko järjestelmän suorituskykyyn Valitaan laitokset, joihin kohdistuu suurin kysyntä -> ne tekevät paljon työtä tai ovat suhteellisen hitaita 58153003 Ohjelmistojen suorituskyky 32 Helsingin Yliopisto / Tktl 16
Suoritusmallin rakenne Jokaiselle mallinnettavaksi valitulle laitokselle laaditaan suorituskykyskenaario Aktiivisille olioille (palveluille, sovelluksille) määritellään niiden tarvitsemat resurssit ja arvioidaan niiden välisen kommunikaation viive Aktiivisten olioiden mallinnus voidaan myöhemmin viedä prosessien tasolle, jos on tarpeen 58153003 Ohjelmistojen suorituskyky 33 Koordinaatio Jos toiminnan koordinaatio perustuu asynkronisiin takaisinkutsuihin tai viivästettyihin synkronisiin kutsuihin ja kutsuttu prosessi ehtii palauttaa tuloksen ennen kuin kutsuja tarvitsee sitä, kutsujan kokema viive on 0 Asynkronisiin kutsuihin ei liity viivettä (paitsi viestin lähetyksen aiheuttama prosessointi) Synkronisiin kutsuihin liittyy kutsujan kokema viive 58153003 Ohjelmistojen suorituskyky 34 Helsingin Yliopisto / Tktl 17
Suoritusmallin ratkaiseminen Mallin ratkaisemiseksi täytyy tietää Suoritusverkkojen solmujen resurssitarpeet (ohjelmisto- ja laiteresurssit) Viiveet synkronointisolmuissa (kutsujan kokema) Verkon yli lähetettyjen viestien määrä Etäkutsujen käsittelystä väliohjelmistossa aiheutuva yleisrasite 58153003 Ohjelmistojen suorituskyky 35 Suoritusmallin ratkaiseminen Asiakasprosessin skenaariossa esiintyvän palvelinkutsun synkronointitapaan liittyvä viive arvioidaan aluksi Kun palvelinprosessin kutsuttua skenaariota vastaava suoritusverkko on ratkaistu, arviota voidaan ratkaisun perusteella täsmentää ja malli ratkaistaan uudestaan Muutaman iteraatiokierroksen jälkeen ratkaisu yleensä vakiintuu Huom! samanaikaisesti palveltavien asiakkaiden lukumäärän vaikutusta vastausaikaan ja asiakkaiden kokemaan viiveeseen arvioidaan järjestelmätason suoritusmalleilla, ei näillä malleilla 58153003 Ohjelmistojen suorituskyky 36 Helsingin Yliopisto / Tktl 18
Suoritusmallin ratkaiseminen Näiden likimääräisten suoritusmallien ratkaisut tuottavat kvantitatiivista tietoa eri valintojen yhteisvaikutuksesta Objektien sijoittelu prosesseihin ja laskentasolmuihin Objektien välisen kommunikoinnin taajuus Kommunikaatioon liittyvä synkronointi (koordinaatio) Kommunikaatiossa siirretyn datan määrä Objektien tekemän prosessoinnin määrä 58153003 Ohjelmistojen suorituskyky 37 Suoritusmallin ratkaiseminen Suorituskykyongelmien korjaaminen vaatii arkkitehtuurivaihtoehtojen evaluointia Vaihtoehtoja tutkitaan malleilla Objektien sijoittelua muuttamalla Kommunikaation määrää vähentämällä Muuttamalla käytettyä syknronointitapaa Muuttamalla objektien vastuita ja prosessointia 58153003 Ohjelmistojen suorituskyky 38 Helsingin Yliopisto / Tktl 19
ESIMERKKI 58153003 Ohjelmistojen suorituskyky 39 Web -kauppa Yksinkertainen e-kauppasovellus Käyttäjä menee selaimella web-kaupan sivulle ja alkaa valita tuotteita ostettavaksi Kun tuotteet on valittu, käyttäjä menee kassalle (check out), ja web-kauppa muodostaa tilauksen Kun tilaus on valmis, käyttäjälle näytetään tilauksen vahvistus Järjestelmä on koottu legacy-komponenteista Tämä esimerkki perustuu todelliseen sovellukseen 58153003 Ohjelmistojen suorituskyky 40 Helsingin Yliopisto / Tktl 20
Web -kauppa Esimerkki on tarkoituksella pidetty yksinkertaisena, ja monia yksityiskohtia on jätetty pois Varsinaisia sovelluskutsuja edeltävä Web palvelinpyyntöjen (http) prosessointi Palomuuri, viestien salaus ja purkaminen, autentikointi jne. Mielenkiinnon kohteena on nimenomaan pyynnön totetutus web-kaupan näkökulmasta ( time in the box ), joten käyttäjälle näytettävien web-sivujen lähetys ja renderöinti on jätetty pois Esimerkin perusteellisempi käsittely on myöhemmin kurssikirjassa (Luvussa 6) 58153003 Ohjelmistojen suorituskyky 41 checkout -skenaario Synkronisia kutsuja 58153003 Ohjelmistojen suorituskyky 42 Helsingin Yliopisto / Tktl 21
checkout querydb updatedb trigger OrderProcess ack Web Server Network Mainframe Active Idle Active Idle Active Idle 58153003 Ohjelmistojen suorituskyky 43 Skenaarion suoritusverkko Käyttäjä kassalle enterorder checkout Vahvistus käyttäjälle Tämä verkko vastaa koko sekvenssiä enterorder vastaa ostoskorin täyttämistä (yksityiskohdat jätetty pois tästä mallista) Mallinnuksen varsinaisena kohteena oleva toiminta on solmussa checkout, jonka suoritusaika halutaan selvittää Viivästetty synkroninenkutsu, koska käyttäjä voi tehdä jotain muuta odottaessaan tilausvahvistusta 58153003 Ohjelmistojen suorituskyky 44 Helsingin Yliopisto / Tktl 22
startcheckout initiateorder trigger OrderProcess Web Server laitos checkout -solmun laajennos querydb updatedb WorkUnits 2 DB 2 Msgs 0 Delay 0 WorkUnits 2 DB 0 Msgs 1 Delay 1 WorkUnits 2 DB 10 Msgs 0 Delay 0 WorkUnits 2 DB 0 Msgs 1 Delay 1 WorkUnits 1 DB 0 Msgs 1 Delay 0 Ohj.resurssit DB: ordertaker:n paikallinen tietokanta WorkUnits: CPU Msgs: viestien määrä etäobjektien välillä Delay: arvioitu etäobjektin operaation keston aiheuttama viive Synkronisten kutsujen WorkUnits tarkoittaa synkronisten tietokantakutsujen muodostamiseen ja lähettämiseen kuluvaa aikaa 58153003 Ohjelmistojen suorituskyky 45 Web Server laitoksen Prosessointikustannukset Device CPU Disk Delay GINet Quantity 1 1 1 1 Service Unit Kinstr. I/Os Visits Msgs. Paikallinen tietokanta Sisältää väliohjelmiston yleisrasitteen WorkUnits 25 DB 500 4 Msgs 25 1 1 Delay 1 Service time (per unit of service) 0.00000 1s 0.05s 0.5s 0.1s Laitoksesta erillinen resurssi, jota muutkin objektit voivat käyttää 58153003 Ohjelmistojen suorituskyky 46 Helsingin Yliopisto / Tktl 23
checkout verkon ratkaisu startcheckout querydb 0.4011 0.6501 CPU 0.0063 Disk 2.5500 GINet 1.0000 Delay 0.3000 Yht: 3.8563 initiateorder 2.0050 updatedb 0.6501 trigger OrderProcess 0.1500 58153003 Ohjelmistojen suorituskyky 47 dbprocess Mainframe laitos Tietokantaskenaario WorkUnits 2 p = 0.5 p = 0.5 query update WorkUnits 0 DB 1 Msgs 1 Delay 0 WorkUnits 0 DB 2 Msgs 1 Delay 0 p = 0.0 write WorkUnits 0 DB 1 Msgs 1 Delay 0 Vastaa Database objektia alkuperäisessä skenaariossa Tässä skenaariossa write operaation todennäköisyys on 0 Verkon ratkaisu tuottaa ajan 0.24 sekuntia, joka on OK eikä aiheuta tarvetta tarkistaa checkout verkon arvioita 58153003 Ohjelmistojen suorituskyky 48 Helsingin Yliopisto / Tktl 24
Mainframe laitos orderprocess -skenaario processdetails WorkUnits 200 DB 20 Msgs 0 Delay 0 Vastaa OrderProcess objektia alkuperäisessä skenaariossa Ratkaisu tuottaa ajan 1.6 sekuntia, mikä ei sekään aiheuta toimenpiteitä koko skenaariota ajatellen Asynkroninen kutsu web serveriltä 58153003 Ohjelmistojen suorituskyky 49 MALLINNUSVINKKEJÄ 58153003 Ohjelmistojen suorituskyky 50 Helsingin Yliopisto / Tktl 25
Vinkkejä Suorituskykyskenaariot Tee jokaiselle laitokselle (laskentasolmulle) omat suorituskykyskenaarionsa Määrittele laitosten aktiivisten toimijoiden (objektien) resurssivaatimukset ja arvioi niiden välinen viive Vie tarkastelu prosessien tasolle myöhemmin, jos on tarpeen 58153003 Ohjelmistojen suorituskyky 51 Vinkkejä Varhaiset mallit Kehitysprojektin aikaisessa vaiheessa malleissa ei ole tarpeen käyttää synkronointisolmuja Etäobjektien kanssa kommunikoiville perussolmuille voi määritellä yksinkertaisesti Delay ohjelmistoresurssin (viive), jonka käyttö solmussa vastaa arviota todellisesta viiveestä Yksinkertaisuus on tärkeätä alkuvaiheessa, jossa pyritään karsimaan selvästi ongelmalliset ratkaisut ja miettimään vaihtoehtoja Viivesolmut voi myöhemmin korvata synkronoinnilla 58153003 Ohjelmistojen suorituskyky 52 Helsingin Yliopisto / Tktl 26
Vinkkejä Synkronointi Käytä varhaisissa malleissa synkronista kommunikaatiota vain, jos vastaus tarvitaan Muuten käytä asynkronista kommunikaatiota Mallin ratkaisu osoittaa tapaukset, joissa synkroninen kommunikaatio aiheuttaa liikaa viivettä, jolloin pitää keskittyä viivettä pienentäviin vaihtoehtoihin Jos objektien sijoittelun tai kommunikaation kulun muuttaminen eivät auta, kokeile kutsujen muuttamista viivästetyiksi synkronisiksi tai asynkronisiksi takaisinkutsuiksi 58153003 Ohjelmistojen suorituskyky 53 Vinkkejä Implementoinnin ja testauksen helpottamiseksi pitäydy synkronisessa ja asynkronisessa kommunikaatiossa niin pitkään kuin mahdollista Huomaa kuitenkin, että modernit ohjelmistokehitysympäristöt ja kielet tukevat aikaisempaa paremmin viivästettyä synkronista ja asynkronista takaisinkutsuihin perustuvaa kommunikaatiota 58153003 Ohjelmistojen suorituskyky 54 Helsingin Yliopisto / Tktl 27