Arkkitehtuurityylejä ja suunnittelutaktiikoita

Samankaltaiset tiedostot
Oppimistavoitteet. Arkkitehtuurityylejä. Microservices. Microservices. Microservices LISÄÄ ARKKITEHTUURITYYLEJÄ. Arkkitehtuurityylejä

Arkkitehtuurityylejä ja suunnittelutaktiikoita

Arkkitehtuurityylejä ja patterneja

Palveluperustaiset arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Ohjelmistoarkkitehtuurit. Kevät

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

6. Arkkitehtuurityylit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmistoarkkitehtuurit. Kevät

Integrointi. Ohjelmistotekniikka kevät 2003

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Ohjelmistoarkkitehtuurit kevät

Rinnakkaistietokoneet luento S

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmistoarkkitehtuurit kevät

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

6. Arkkitehtuurityylit

Ohjelmistojen mallintaminen, sekvenssikaaviot

Kiinnostuspohjainen topologian hallinta järjestämättömissä vertaisverkoissa

Tulevaisuuden Internet. Sasu Tarkoma

OSA II: Hajautettu ympäristö. Sisältö, osa II. Ei yhteistä muistia. Sanomanvälitys. Etäproseduurikutsu. Rendezvous. Rio 2004 / Auvo Häkkinen

VMU-C EM. Asennus ja käyttö

SÄHKÖPOSTIMARKKINOINTI

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

7. Koneenohjausjärjestelmien suunnittelumallit. OhAr Veli-Pekka Eloranta

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Ohjeet ARTSin todistushakemusten käsittelyyn eage-järjestelmässä

Visma Fivaldi sovelluspalvelu: Laskut sähköpostiin ja tulostuspalveluun. 1 Yleistä

Tässä kertauksena SOA ja palvelu.

HOJ J2EE & EJB & SOAP &...

Ohjelmistoarkkitehtuuri

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

T Harjoitustyöluento

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Kuluttajat mukaan verkkolaskujen vastaanottajiksi

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

JMS RIO PR1. TKTL s2008. Tekijät: Aki Valkama Lauri Savolainen Niklas Jahnsson

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Kytkentäkentät, luento 2 - Kolmiportaiset kentät

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Tikon ostolaskujen käsittely

CQRS, -ES, PACS, DICOM, WTF?

TIEDONHAKU INTERNETISTÄ

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Tikon ostolaskujen käsittely

Arkkitehtuurityylejä ja ratkaisumalleja

T Harjoitustyöluento

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

3. Yhteistilaverkko. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Maailma visuaalivalmistajan näkökulmasta

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Sisältö. Työn idea Protokollat. Harjoitustyön käytäntöjä. Työn demoaminen. Etäisyysvektori Linkkitila. Palvelin Moodle SSH-tunnelit

Älykäs verkottuminen ja käyttäjänhallinta. Pekka Töytäri TeliaSonera Finland

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

OSA II: Hajautettu ympäristö. Ei yhteistä muistia. Rio 2004 / Auvo Häkkinen

Toimittajaportaalin pikaohje

OSA II: Hajautettu ympäristö. Sisältö, osa II. Sanomanvälitys. Käsitteistöä. Sanomanvälitys. Kommunikointi. Sanomanvälitys. Etäproseduurikutsu

Hautaako Facebook tahallaan sivun ylläpitäjien julkaisut?

Simulointi. Tapahtumapohjainen

Kytkentäkentät, luento 2 - Kolmiportaiset kentät

Keski Suomen SOTE uudistuksen asiakasraadin huomiot valinnanvapaudesta

ADMIN. Käyttöopas 08Q4

Liikkuvien isäntäkoneiden reititys

IP-reititys IP-osoitteen perusteella. koneelle uusi osoite tässä verkossa?

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Hostingpalvelujen. oikeudelliset kysymykset. Viestintäviraston Abuse-seminaari Jaakko Lindgren

Algoritmit 1. Luento 7 Ti Timo Männikkö

ArcGIS.com. uusia tapoja jakaa paikkatietoa

Samanaikaisuuden hallinta

Suomi.fi-palveluväylä. Palvelulupaus ja tiekartta

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

Tekninen suunnitelma - StatbeatMOBILE

Opus SMS tekstiviestipalvelu

Muutamia peruskäsitteitä

Ohjelmoinnin peruskurssien laaja oppimäärä

Tiedonsiirto- ja rajapintastandardit

Pikaviestinnän tietoturva

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Aimo-ohjauspaneelin käyttöohje Sisällys

Suunnitteluvaihe prosessissa

Teoria. Prosessin realisaatioiden tuottaminen

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Suomi.fi-palveluväylä

Transkriptio:

Arkkitehtuurityylejä ja suunnittelutaktiikoita Luento 5 1. osa 16.9.2014 581385 Ohjelmistoarkkitehtuurit 1 Oppimistavoitteet Arkkitehtuurityylejä (esityksen 1. osa) jaettu tietovarasto, viestinvälitysarkkitehtuurit, vertaisverkkoarkkitehtuuri, map-reduce Suunnittelutaktiikoita laatuominaisuuksien saavuttamiseksi (esityksen 2. osa) Suorituskyky-, muunneltavuus- ja testattavuustaktiikat 16.9.2014 581385 Ohjelmistoarkkitehtuurit 2 1

LISÄÄ ARKKITEHTUURITYYLEJÄ 16.9.2014 581385 Ohjelmistoarkkitehtuurit 3 Jaettuun tietovarastoon perustuva arkkitehtuuri Data centered - Shared state - Repository Joukko komponentteja ylläpitää yhteistä tilaa tietovarastossa Erilaisia muunnelmia sen mukaan, kuinka aktiivinen rooli tietovarastolla on Kahdenlaisia komponentteja Keskitetty tietorakenne: tietovarasto Asiakaskomponentit: hakevat tietoa tietovarastosta ja muokkaavat sitä Järjestelmän kontrolli määräytyy tietovaraston tilan mukaan 16.9.2014 581385 Ohjelmistoarkkitehtuurit 4 2

Jaetun tietovaraston arkkitehtuuri processor 1 processor 2 state Käsittelijät toisistaan riippumattomia 16.9.2014 581385 Ohjelmistoarkkitehtuurit 5 Jaetun tietovaraston arkkitehtuuri Vuorovaikutus käsittelijöiden välillä tapahtuu ainoastaan tietovaraston kautta Käsittelijöiden tietovarastoon tekemät muutokset johtavat vaiheittain haluttuun lopputulokseen Käsittelijän aktivointi Käsittelijät voivat pollata tietovarastoa tutkiakseen onko tila sellainen, mistä käsittelijä pystyy jatkamaan toimintaa jos on, käsittelijä tuottaa tuloksia, jotka kirjaa tietovarastoon Tietovarasto voi aktivoida käsittelijän jonkin säännön perusteella, esimerkiksi sisällön muuttumisen perusteella vrt tietokantatriggerit 16.9.2014 581385 Ohjelmistoarkkitehtuurit 6 3

Jaetun tietovaraston arkkitehtuuri Käsittelijät voivat toimia rinnakkain Edellyttää samanaikaisuuden hallintaa: tiedon lukitus miten estetään yhtä käsittelijää varaamasta koko tietovarastoa itselleen (liian pitkäksi aikaa)? Esimerkkejä Tekoälysovellukset (blackboard-arkkitehtuuri), Wikit, Google docs, MS Sharepoint, muut verkkotyöalustat 16.9.2014 581385 Ohjelmistoarkkitehtuurit 7 Jaetun tietovaraston arkkitehtuuri Etuja Muunneltavuus & laajennettavuus (itsenäiset, toisistaan riippumattomat käsittelijät) Rinnakkaisuuden hyödyntäminen Haittoja Rinnakkaisuuden ja päällekkäisten päivitysten hallinta on mietittävä tarkkaan 16.9.2014 581385 Ohjelmistoarkkitehtuurit 8 4

Miten toteutetaan asiakkaiden ja palvelujen välinen kommunikointi hajautetussa, heterogeenisessä palveluympäristössä? Komponentit kommunikoivat lähettämällä toisilleen viestejä Viesti voidaan lähettää tietylle kohteelle tai yleislähetyksenä kaikille tunnetuile kohteille tai kaikille kiinnostuneille kohteille Viestintä voi olla synkronista (lähettäjä jää odotamaan) tai asynkronista (lähettäjä jatkaa toimintaansa) 16.9.2014 581385 Ohjelmistoarkkitehtuurit 9 Julkaisija Tilaaja (Publish Subscribe) Tuottaja Kuluttaja (Supplier- Consumer) Yksinkertaisimmillaan julkaisija pitää kirjaa vastaanottajista ja tietosisällön muuttuessa välittää tiedon tilaajille proseduurikutsun välityksellä. Tilaaja rekisteröityy vastaanottajaksi ja toimittaa rekisteröinnin yhteydessä vastaanottorajapinnan (callback) Yllä oleva toimii ohjelman sisäisesti Verkkoratkaisussa tarvitaan kommunikointiprotokolla ja välittäjä (broker) huolehtimaan viestinvälityksestä 16.9.2014 581385 Ohjelmistoarkkitehtuurit 10 5

Välittäjä Välittäjä tietää vastaanottajat (rekisteröityminen tai konfigurointi) Julkaisija toimittaa viestin välittäjälle Välittäjä toimittaa viestin edelleen siitä kiinnostuneille tilaajille Tilaaja käsittelee viestin Välittäjään (broker) ja asynkroniseen viestintään perustuvaa arkkitehtuuria voidaan käyttää yleisesti palveluarkkitehtuurin runkona perinteisemmän etäproseduurikutsuihin perustuvan Asiakas-Palvelin arkkitehtuurin sijaan Palveluekosysteemit 16.9.2014 581385 Ohjelmistoarkkitehtuurit 11 Välittäjä Arkkitehtuurissa määriteltävä seuraavat asiat: Keskenään kommunikoivat komponentit Viestit, joiden avulla kommunikointi tapahtuu ilman, että lähettäjä tuntee vastaanottajan (tai vastaanottaja lähettäjän) sijaintia Operaatiot, joilla komponentit reagoivat viesteihin (komponenttien ymmärtämä kieli) Säännöt, joiden avulla komponentit ja viestit rekisteröidään järjestelmälle 16.9.2014 581385 Ohjelmistoarkkitehtuurit 12 6

Julkaisija - Tilaaja Säännöt, joiden perusteella välittäjä tietää, mille komponentille viesti on lähetettävä Viestin vastaanottajan selvittäminen: yleisviesti (multiple dispatch; viesti kaikille, jotkut käsittelevät, toiset eivät) etu: vastaanottajan ei tarvitse etukäteen kertoa, mitä viestejä se haluaa vastaanottaa komponentit kertovat rekisteröinnin yhteydessä, mitä viestejä ne haluavat vastaanottaa (tai keneltä) 16.9.2014 581385 Ohjelmistoarkkitehtuurit 13 Rinnakkaisuus: missä määrin välittäjä ja komponentit toimivat rinnakkain viestinvälittäjillä ja vastaanottajilla viestijonot (välittäjän laatikko, vastaanottajan laatikko) Puskurointi, palvelutasot 16.9.2014 581385 Ohjelmistoarkkitehtuurit 14 7

Tapahtumapohjaiset Tapahtumapohjaiset arkkitehtuurit (event-based, event driven) Komponentit kommunikoivat aiheuttamalla tapahtumia (event) Tapahtumat voivat välittyä kaikille muille komponenteille, joista jotkut käsittelevät ja toiset eivät noteeraa Tapahtumien lähetys voidaan myös rajoittaa julkaisija tilaaja rakenteen tapaan tapahtuma lähetetään vain tapahtuman tyypistä kiinnostuneille komponentteja ei ole kuitenkaan lokeroitu joko julkaisijoiksi tai tilaajiksi vaan komponentti voi toimia kumpanakin 16.9.2014 581385 Ohjelmistoarkkitehtuurit 15 Tapahtumapohjainen viestintä :Component :Component :Component Väylä / Event bus :Component :Component publish subscribe 16.9.2014 581385 Ohjelmistoarkkitehtuurit 16 8

Tapahtumapohjaiset Tapahtuma Tilanne, joka voi sattua ohjelman suorituksen aikana Edellyttää reagointia joiltain järjestelmän osilta Lähde = tapahtuman synnyttävä komponentti Tarkkailija = tapahtumaan reagoiva komponentti Lähde lähettää tapahtumailmoituksen sitä tarkkailemaan rekisteröityneelle tarkkailijalle Esimerkiksi Signals & Slots 1 Qt-sovelluskehyksen olioarkkitehtuurissa Lähde tietää dynaamisesti tarkkailijoidensa olemassaolon, mutta ei niiden tarkkaa tyyppiä Tapahtumaväylää käytettäessä lähteet eivät tiedä tarkkailijoistaan (vrt. MVC, Observer -mallit) Ilmoituksen lähetys voidaan hoitaa proseduurikutsuna tai sanomanvälityksenä (event bus, message bus) proseduurikutsu synkroninen (esim Qt Signals & Slots) Sanomajono asynkroninen/synkroninen 1 http://en.wikipedia.org/wiki/signals_and_slots, http://qt-project.org/doc/qt-5.0/qtcore/signalsandslots.html 16.9.2014 581385 Ohjelmistoarkkitehtuurit 17 EventObject Javan tapahtumamalli Vapaasti toteutettavissa EventListener MyEvent EventSource ListenerContainer addeventlistener(evli) notifyall Observer calls EventListenerInterface eventhappened(myevent) update implements ConcreteEventListerner Ev1 creates ES1 addeventlistener( ) eventhappened(event) Instance of calls CEL-1 eventhappened( ) 16.9.2014 581385 Ohjelmistoarkkitehtuurit 18 9

Etuja Joustavuus, muunneltavuus, modulaarisuus Uusien tuottajien/julkaisijoiden ja kuluttajien/tilaajien dynaaminen lisääminen Välittäjän/väylän tekemät automaattiset esitystapamuunnokset, erilaisia palvelutasoja toteutettavissa (varmistettu perillemeno vs. fire and forget) Komponenttien omatahtinen evoluutio Paljon käytettyjen välittäjä-/väyläratkaisujen hyväksi kehittynyt laatu Luotettavuus, skaalautuvuus, suorituskykyoptimoinnit, jne. 16.9.2014 581385 Ohjelmistoarkkitehtuurit 19 Haittoja Välittäjän tai tapahtumaväylän tuoma suoritusrasite (overhead) ja suorituskyvyn optimointimahdollisuuksien kaventuminen verrattuna suoriin (point-to-point) yhteyksiin Välittäjä tai väylä on kriittinen komponentti (single point of failure), jonka luotettavuus pitää saada paljon korkeammaksi kuin kommunikoivien komponenttien 16.9.2014 581385 Ohjelmistoarkkitehtuurit 20 10

Vertaisverkkoarkkitehtuuri peer-to-peer Verkko, jonka solmut voivat toimia sekä asiakkaina että palvelimina Uusi solmu kytkeytyy verkkoon liittymällä suoraan johonkin tuntemaansa verkon solmuun Solmut voivat dynaamisesti liittyä ja poistua Puhtaassa vertaisverkossa kaikki solmut ovat tasavertaisia Verkko on symmetrinen ja ei-hierarkinen 16.9.2014 581385 Ohjelmistoarkkitehtuurit 21 Vertaisverkkoarkkitehtuuri Palvelupyyntö etenee verkossa solmusta solmuun kunnes löytyy solmu, joka kykenee täyttämään pyynnön Pyytäjän ja pyynnön täyttäjän välille voidaan muodostaa suora yhteys - tai sitten ei Rakenteettomassa verkossa pyynnön eteneminen sokeaa Solmut tuntevat suorat naapurinsa, mutta eivät näiden tarjoamia palveluita Rakenteellisessa solmut jakavat rakennetietoa palveluista ja tätä käytetään ohjaamaan etenemistä Edellyttää verkkoprotokollaa 16.9.2014 581385 Ohjelmistoarkkitehtuurit 22 11

Vertaisverkkoarkkitehtuuri Etuja Saatavuus paranee, jos palvelu/resurssi on hajautettu useina (osa-)kopioina verkon solmuihin (esimerkiksi jonkin mediatiedoston fragmentit) Vikasietoisuus kasvaa, koska yksittäisen solmun vikaantuminen ei ole kriittistä (tiedon/palvelun toisteisuus, vaihtoehtoiset saantipolut) Skaalautuvuus ja laajennettavuus ovat hyvät, ei yksittäistä kriittistä komponenttia (no single point of failure) 16.9.2014 581385 Ohjelmistoarkkitehtuurit 23 Haittoja Vertaisverkkoarkkitehtuuri Verkkoon voi muodostua saaria tai klikkejä, jonka solmut eivät ole yhteydessä klikin ulkopuolisiin solmuihin Yksittäiset haut saattavat aiheuttaa paljon turhaa liikennettä (resurssia etsitään turhaan, tai se löytyy monista solmuista) Verkon rakenne ei ole vakaa (solmuja tulee ja lähtee) 16.9.2014 581385 Ohjelmistoarkkitehtuurit 24 12

Vertaisverkkoarkkitehtuuri Vertaissolmujen rinnalle onkin usein pakko luoda pysyviä Super- tai Ultra-solmuja jotka Liittävät uusia solmuja verkkoon Kytkeytyvät suoraan moniin alempiin solmuihin ja toisiinsa hakujen optimoimiseksi Katso esimerkiksi Gnutella, Skype 16.9.2014 581385 Ohjelmistoarkkitehtuurit 25 Map-Reduce -arkkitehtuuri Motivaatio Hyvin suuren datamäärän hajautettu tallennus ja prosessointi Data ja käsittelyoperaatiot suhteellisen yksinkertaisia, mutta niitä on todella paljon Perusperiaate Koko datamassa jaetaan pienempiin samankaltaisiin osiin (splits) Osat käsitellään rinnakkain suoritettavissa tehtävissä, jotka tuottavat paikallisen välituloksen (map-operaatio) Välitulokset yhdistetään globaaliksi tulokseksi (reduceoperaatio) Katso hyvä esimerkki (YouTube Intro To MapReduce by MapRAcademy) http://www.youtube.com/watch?v=hfplubebhcm 16.9.2014 581385 Ohjelmistoarkkitehtuurit 26 13

Map-Reduce -arkkitehtuuri Etuja Skaalautuvuus, saatavuus, suorituskyky Rinnakkaisen käsittelyn massiivinen hyödyntäminen Katso esim. Rackspace esimerkki 1. luennolta Huomattavaa Suoritusnopeus riippuu siitä, miten split-operaatio onnistuu jakamaan syötedatan yhtä vaativiin ja keskenään samantyyppisiin, rinnakkain käsiteltäviin palasiin Reduce-operaatioita voidaan ketjuttaa, mutta monimutkaisten operaatioiden koordinointi voi osoittautua hankalaksi 16.9.2014 581385 Ohjelmistoarkkitehtuurit 27 14