Ohjelmistoarkkitehtuurit 2016. Kevät 2016 Arkkitehtuurityylit, osa 1

Samankaltaiset tiedostot
6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

6. Arkkitehtuurityylit

HOJ J2EE & EJB & SOAP &...

Ohjelmistoarkkitehtuurit. Kevät

Arkkitehtuurityylejä ja ratkaisumalleja

Viestinvälitysarkkitehtuurit

HSMT J2EE & EJB & SOAP &...

Arkkitehtuurityylejä ja patterneja

Ohjelmistoarkkitehtuuri

Viestinvälitysarkkitehtuurit Lähtökohta:

9. Muunneltavuuden hallinta

Ohjelmistoarkkitehtuurit, syksy

Oppimistavoitteet. Arkkitehtuurityylejä ja patterneja. Tyylien ja patternien käytöstä. Kolmitasoarkkitehtuuri (N-Tier) Kolmitasoarkkitehtuuri (N-Tier)

Sovellusarkkitehtuurit

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Kansallinen palveluväylä Kuntien kokonaisarkkitehtuuri -seminaari

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

Suunnitteluvaihe prosessissa

Työkalujen yleinen arkkitehtuuri. Ylläpitoon liittyvät työkalut. Ylläpitotehtävien mukaiset työkalut. Työkalujen jaotteluperusteita

SOA & Ajax Sanahelinää vai toimivaa käytäntöä sähköisessä asioinnissa? Fenix hankejohtaja Harri Juuti Projektipäällikkö Teemu Karvonen

Veto-visualisointityökalu

10. Muunneltavuuden hallinta: variaatiopisteet

10. Muunneltavuuden hallinta: variaatiopisteet

Liiketoimintajärjestelmien integrointi

Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä ! Java luokkia n. 5000

Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja. Komponenttien palveluja ei tiedetä tarkasti etukäteen

Palveluperustaiset arkkitehtuurityylit

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko


Liiketoimintajärjestelmien integrointi

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

Johdatus diskreettiin matematiikkaan Harjoitus 7,

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

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

Viestinvälitysarkkitehtuurit

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

Tech Conference Windows 10 viimeinen Windowsversio? Sami Laiho Senior Technical Fellow, MVP. #TechConfFI

Järjestelmäarkkitehtuuri (TK081702)

OHJ-5010 Hajautettujen järjestelmien perusteet

SAP. Lasse Metso

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla

Ohjelmistoarkkitehtuurit kevät

Ohjelmiston testaus ja laatu. Testaus yleistä

Ohjelmistoarkkitehtuurit

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Ohjelmistojen suunnittelu

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Muunneltavuuden hallinta (Variability management):

9 Edistynyt PHP-ohjelmointi

10. Tuoterunkoarkkitehtuurit

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

in condition monitoring

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Ohjelmistoarkkitehtuurit

Suorituskyvyn varmistaminen sovelluskehityksen eri vaiheissa Paavo Häkkinen, Presales Teamleader Compuware Finland

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

Osoitteena O365. Toimisto ja yhteydet pilvestä

Tiedon suojaaminen ja hallinta. Sytyke seminaari

Käyttöönotto-ohje. DNA Sähköposti

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

-versiot) Mozilla Firefox Safari Chrome. selaimista. Windows. Windows. Vista. Windows

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Ohjelmistoteknologioiden koulutus: Web-sovelluskehitys, Java Server. Infotilaisuus klo 10:00

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

Valtakunnallisen yhteishaun vaikutus opiskelijavalintaan

Tietoliikenne II (2 ov)

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

Web Services tietokantaohjelmoinnin perusteet

Tässä kertauksena SOA ja palvelu.

Windows Live SkyDrive - esittely

Arkkitehtuuriperustainen. Tuoterunkoihin perustuva ohjelmistotuotanto. Tuoterunkoarkkitehtuurien hyödyntäminen uudistamisessa

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

Tietoliikenne II (2 ov)

Luotettavuuden mittaamisesta. Ilkka Norros ja Urho Pulkkinen

Webinaariin liittyminen Skype for

Kiekun arkkitehtuuri ja tekniikka. Ghita von Gerdten projektipäällikkö

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

YTHS Raportointijärjestelmähankkeen

Harri Kaukovuo Senior Sales Consultant Technology Sales Oracle Finland Oy

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

BookIT DDM Helppoa viestintää kännykkään Teknologiakuvaus

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

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

HAKURATKAISUN ANATOMIA - KURKISTUS PELLIN ALLE

Loppukäyttäjän ohje Asennus- ja käyttöohje Mac

Työasema- ja palvelinarkkitehtuurit IC Storage. Storage - trendit. 5 opintopistettä. Petri Nuutinen

Transkriptio:

Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit, osa 1 Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 1

Yleistä 2

Kertausta Mitä suunnittelumallia käyttäisit seuraavassa ongelmatilanteessa? 3

Kertausta 1 Olet kasailemassa kotiisi sääasemaa ja ameriikan-englantilainen serkkusi on toteuttanut anturille ja lämpötilojen keskilaskennalle kivan komponentin, mutta tiedot saa vain Fahrenheitteina ja sademäärän mittaus käyttää tilavuusmittana ¼ pässinkivespussia. Mikä avuksi? 4

Kertausta 2 Olet ostanut BlueberryPie-härpättimen ja aiot koodata siihen musiikki- ja videosoittimen, koska muiden tekemät sovellukset sisältävät mm. NSA:n vakoiluohjelmistoja. Blueperryn päässä pitäisi pystyä hakemaan tiedostoja myös toisilta koneilta (esim. pöytäkoneesi ja läppärisi) ja näissä pyörivän pääteohjelman pitäisi kertoa jotenkin soitto-ohjelmalle päällä olostaan/sijainnistaan. Mikä auttaa? 5

Kertausta 3 Olet tekemässä strategiapeliä, jossa voi antaa komentoja yksittäiselle sotilaalle, useille sotilaille, joukko-osastolle, useammalle joukko-osastolle jne. (+muodostaa uusia kokonaisuuksia valitojen perusteella). Haluaisit, että komentojen käskytys toimisi koodissa samaan tapaan riippumatta siitä, minkä kokoiselle muodostelmalle tämä tehdään. Mikä suunnittelumalli voisi auttaa? 6

Kertausta 4 Sulautettuun ympäristöön koodailemasi älykotijärjestelmä saa tapahtumia eri laitteilta ja käyttöliittymän eri elementtien kautta. Yhdistelet tapahtumia niiden käsittelijöihin siellä täällä, mutta nyt kaipaisit ohjelmaan selkeyttä, mikä auttaisi? 7

Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit (rakenteen ositus) Tietovuoarkkitehtuurit (toiminnan ositus) Palveluihin perustuvat arkkitehtuurityylit Asiakas-palvelin arkkitehtuurit Peer-to-peer Viestinvälitysarkkitehtuurit Publish-subscribe Erikoisarkkitehtuurityylit MVC arkkitehtuurit Tulkkiarkkitehtuurit 8

Mitä ovat arkkitehtuurityylit? Arkkitehtuurityyli = yleinen malli, joka kertoo miten järjestelmä organisoidaan ylimmällä abstraktiotasolla, määräten järjestelmän yleisen teknisen luonteen Arkkitehtuurityylit eivät sulje toisiaan pois! Kysymyksiä, jotka voivat johtaa arkkitehtuurityylin valintaan: - Koostuuko järjestelmä komponenteista, jotka ovat selvästi eri käsitetasoilla? - Onko järjestelmän päätarkoitus jalostaa tietoa? - Jaetaanko järjestelmässä jotain resurssia tai tietoa erillisille sovelluksille? - Koostuuko järjestelmä joukosta komponentteja, jotka kommunikoivat keskenään etukäteen tuntemattomilla tavoilla? Ovatko komponentit usein vaihtuvia? 9

Kerrosarkkitehtuurit Kerrosarkkitehtuuri (layer/tier architecture): Järjestelmän organisointi käsitetasoltaan nouseviin kerroksiin.. 10

Abstraktiotasojen rikkominen ja ohitus Ohitus käyttää toteuttamiseen Abstraktiotasojen rikkominen 11

Takaisinkutsut kerrosarkkitehtuurissa Sovelluskerros normaali kutsu takaisinkutsu Alustakerros Takaisinkutsulla voidaan rikkoa kerrosarkkitehtuurin periaatetta ilman, että alempi kerros riippuu ylemmästä 12

Kerrosarkkitehtuurien kuvaus: hampurilainen Ei ohituksia Ohituksia Ohituksia 13

Kerrosten rajapinnat Kerros A Comp1 Comp2 Comp3 takaisinkutsurajapinta Kerros B Comp4 Comp5 Comp6 Ks. Fasaadi 14

Esimerkki: tyypillinen liiketoimintajärjestelmä Käyttöliittymä Sovelluskohtainen logiikka Sovellusaluekohtainen logiikka Tietokanta 15

16

17

Kerrosrakenne ja komponentteja http://www.edureka.co/blog/beginners-guide-android-architecture/ 18

Kerrosarkkitehtuuri voi olla moniulotteinen Core GUI Default GUI App GUI GUI Käyttöliittymä Core Logic Default Logic App Logic Logic Core Support Default Support App Support Support Peruspalvelut 19

Kerrosarkkitehtuuri voi olla moniulotteinen Core GUI Default GUI App GUI Core Logic Default Logic App Logic Core Support Default Support App Support Yleiskäyttöinen Tuotekohtainen Core Default App Domain-Yritys-Tuote 20

Kerrosten riippuvuusanalyysi rivikerros riippuu sarakeker P1 P2 P3 P4 P5 P1 X X P2 X X P3 X X OK, ohitusaste = 1 P4 X P5 21

Kerrosten riippuvuusanalyysi row depends on col P1 P2 P3 P4 P5 P1 X X P2 X Ei OK, mitä tehdä? P3 X X X P4 X P5 Vaihdetaan P2:n ja P3:n paikat, jos P2 ei ole selvästi korkeammalla käsitetasolla 22

Kerrosten riippuvuusanalyysi row depends on col P1 P2 P3 P4 P5 P1 X X P2 X X Ei OK, mitä tehdä? P3 X X X P4 X Yhdistetään P2 ja P3? P5 23

Kerrosten riippuvuusanalyysi Kerros P2 Yksittäisten komponenttien siirto Comp1 Comp2 Comp3 Kerros P3 Siirto OK, jos ei käsitetason ristiriitaa Comp4 Comp5 Comp6 24

Kerrosten riippuvuusanalyysi Kerros P2 Yksittäisten komponenttien vaihto Comp1 Comp2 Comp3 Kerros P3 Ei voi siirtää Comp4 Comp5 Comp6 25

Harjoitus Suunnittele kerrosarkkitehtuuri seikkailupelille. Järjestelmään kuuluvat seuraavat osat: - Yleinen seikkailupelilogiikka (AL) - Tietokanta (DB) - Pelikäyttöliittymä (GUI) - Graafinen tuki seikkailupeleille (GS) - Pelitietokantapalvelut (GB) - Pelin logiikka (GL) - Yleinen graafinen kirjasto (GLIB) Sijoita nämä osat kerroksiin. 26

Game data Database Common Graphics Library Graphic Support (GS) Common Adventure game logic Game Logic GUI 27

Kerrosarkkitehtuurien edut ja ongelmat Etuja Melkein aina sovellettavissa Tukee järjestelmän ymmärtämistä ja hallintaa Vähentää riippuvuuksia (ylläpidettävyys, muunneltavuus) Helppo liittää yrityksen organisaatioon (Conway) Tukee uudelleenkäyttöä (tuoterunkoarkkitehtuurin pohjana) Ongelmia Suorituskyky voi heikentyä (epäsuoruus) Saattaa johtaa tarpeettomaan/moninkertaiseen laskentaan Poikkeusten käsittely 29

Esimerkki (patologinen) GUI OrderApplication OrderPlatform OrderApplication:orderCheck(XMLdoc apporder) parse apporder check apporder (app specific checking) g = make XMLdoc genorder generalordercheck(g) OrderPlatform:generalOrderCheck(XMLdoc genorder) parse genorder check genorder(general checking) 30

Kolmikerrosarkkitehtuuri Yleinen lähestymistapa webissä: Presentation layer/tier / front-end: selaimessa pyörivä osa Application/Logic tier: Sovellustason toiminnallisuus, sovelluspalvelimen ajamaa koodia (Ruby, Java, PHP, ASP.NET, Perl ) Back-end / Data tier: tietokanta ja tietokannan hallinta, miten tallennettuihin tietoihin päästään käsiksi 31

Kolmikerrosesimerkki 32

https://devcentral.f5.com/articles/the-new-distribution-of-the-3-tiered-architecture-changes-everything 33

Kerrosarkkitehtuurit, ominaisuudet/featuret ja tiimit https://labs.spotify.com/2013/03/15/backend-infrastructure-at-spotify/#more-189 34

Kysyttävää?

Ongelma-aluetta A1 C Erilliset itsenäisesti kehitetyt komponentit Molemmissa samaa toiminnallisuutta, mutta sopeutettu muihin Sisäisiin komponentteihin Ei uudelleenkäyttöä Sisäisellä tasolla suorituskyvyn optimointi hankalaa Muokkaaminen vaikeampaa... Kutsu & tietoja lähteestä 1 B1 D A2 E Kutsu & tietoja lähteestä 2 B2 F 36

Tietovuoarkkitehtuurit (pipes and filters) Tietovuoarkkitehtuuri koostuu komponenteista (filter), jotka tuottavat ja kuluttavat tietoalkioita, ja tietoalkioita komponentilta toiselle kuljettavista väylistä (pipe). filter pipe filter pipe filter pipe pipe filter pipe filter 37

Erikoistapaus: liukuhihnatyyli (pipeline) pipe pipe filter1 filter2 filter3 38

Kontrollin toteutus liukuhihnatyylissä: push/työntävä tapa 39

Kontrollin toteutus liukuhihnatyylissä: pull / vetävä tapa 40

Tyypillistä tietovuoarkkitehtuurille Prosessointiyksiköt toimivat toisistaan riippumattomasti (eivät jaa tilatietoa) Prosessointiyksiköt eivät tunne toisiaan, ainoastaan väylien vaatiman tietoformaatin Tieto voidaan prosessoida paloittain Yksiköt ovat tilattomia 41

Tietovuoarkkitehtuuria Kuva: https://msdn.microsoft.com/en-us/library/dn568100.aspx 42

Rinnakkaiset yksiköt: puskurointi Puskuri filter filter Kukin yksikkö omassa prosessissaan Hitain yksikkö määrää kokonaisajan Puskurien koko on kriittinen tekijä Puskuri on tyypillisesti jonorakenne 43

Sisääntuleva viesti filter, noutaa tehtävän jonosta viestijono Kokonaan käsitelty viesti 44

Kuormituksen jakoa (load balance) Kuva: https://msdn.microsoft.com/en-us/library/dn568100.aspx 45

Mihin käyttäisit tietovuoarkkitehtuuria/missä olet nähnyt sellaisen? 46

Esimerkki: yksivaihekääntäjä Selaaja Jäsentäjä Koodin generointi merkkejä tekstialkioita kielen rakenteita koodi ongelma: ohjelmatekstin kontekstisidonnainen käsittely ratkaisu: (i) tietoa kerätään globaaliin symbolitauluun (data) (ii) jäsentäjä toimii pääohjelmana (kontrolli) 47

Tietovuorakkitehtuurin edut ja ongelmat? 48

Esimerkki: kuvankäsittely (Photoshop lightroom) Alkuperäinen kuvadata terävöinti väritasapaino... Valmis kuva Alkuperäinen säilyy, käsitelty kuva ohjelmassa alkuperäinen + operaatiot Poista filtteri välistä, kuva muuttuu, vaihda paikkaa jne. sama homma Konvertointi esim. verkkojulkaisua tai paperikuvatilausta varten, prosessin ajaminen läpi Mahdollisuus valita koko kuvakirjastolle samat operaatiot jne. (moniajo, rinnakkaisuustuet) 49

Esimerkki: MapReduce http://aws.amazon.com/ 50

Esimerkkejä Komentorivi (nix) ja komentojen putkittaminen Grafiikka, (GPU-laskenta) ja rinnakkaistuvat tehtävät 51

Tietovuoarkkitehtuurien edut ja ongelmat Etuja: Mutkikas tiedon käsittelyprosessi voidaan jakaa helpommin hallittaviin palasiin Tukee uudelleenkäyttöä: prosessointiyksiköitä voidaan kombinoida eri tavoin Tukee ylläpitoa: prosessointiyksikköä voidaan helposti muuttaa Tukee rinnakkaisuutta Ongelmia: Ei sovi interaktiivisille järjestelmille (tai riippuu interaktiosta, esim. hakukone) Tiedon tulkinnasta tulee suorituskykyrasitetta Virhetilanteiden käsittely voi olla vaikeaa 52

Virheidenkäsittelyä Yksi mahdollisuus, oma erillinen virhevuo, normaali data ja virhedata erikseen (kuten unix-komentorivi Virhepuolella oma filter-osa, joka käsittelee saamansa syötteen ja toimii sen mukaan 53

Kääntely-jäsentely virheenkäsittelyn kera Konekielelle kääntö (machine code generator) Selaaja (scanner) Jäsentäjä (parser) Semanttinen tarkistus Semantic checker Tavukoodin tuottaminen (bytecode generator) optimointi konekieltä tavukoodi + + + virheet

Kysyttävää?

Palveluihin perustuvat arkkitehtuurityylit Oliot (1970-luku) olio lista lisää Käyttävä yksikkö poista 56

Palveluihin perustuvat arkkitehtuurityylit Komponentit (1980-luku) Suomenkielen tavutus komponentti Tavutusrajapinta Tekstijärjestelmä 57

Palveluihin perustuvat arkkitehtuurityylit Asiakas-palvelin (1990-luku) Palvelun pyytäjä Palvelun tarjoaja Palvelun pyytäjä Esim. EJB verkko 58

Palveluihin perustuvat arkkitehtuurityylit Service-Oriented Architecture (SOA) (2000-luku) kysyy palvelua Palvelurekisteri verkko rekisteröityy Palvelun pyytäjä palvelun saaminen Palvelun tarjoaja Esim. Web services 59

Palveluihin perustuvat arkkitehtuurityylit Palveluväylä (Enterprise Service Bus, ESB) Sovellus Sovellus Sovellus Sovellus Sovitin Sovitin Sovitin Sovitin Väylä - sovellukset tarjoavat palvelujaan väylän kautta - idea: viestin reititys riippuu viestistä -> ei synny riippuvuuksia sovellusten välille 60

SOA-henkisyyttä Itsenäisiä, itsenäisesti ylläpidettävissä & hallittavissa olevia komponentteja Ohjelmistojen koostaminen näistä Ei tiukkaan sidottuja yhteyksiä komponenttien välillä, viestien tms. käyttö kommunikaatiossa Helppo ketjuttaa komponenttien toimintoja jne. SOA ei välttämättä Oracle, Microsoft tms. järkäleen käyttöä 61

Asiakas-palvelin arkkitehtuurit Asiakas-palvelin arkkitehtuuri: järjestelmä koostuu jotakin resurssia kontrolloivista ja siihen liittyviä palveluja tarjoavista palvelimista (server) ja palveluja tarvitsevista asiakkaista (client). 62

Asiakas-palvelin arkkitehtuurit Palvelut tarjotaan istunnoissa, tiettyyn kokonaisuuteen kuuluvat palvelut annetaan saman yhteyden aikana kontrolloidusti (transaktioina) Asiakkaat ja palvelimet toimivat omissa prosesseissaan, tyypillisesti hajautettuina Asiakkaat ovat tyypillisesti omia sovelluksia, jotka eivät tunne toisiaan Palvelimet eivät tunne asiakkaita Palvelimet tyypillisesti hallinnoivat jotain resurssia tai tietovarastoa 63

Missä käyttäisit asiakaspalvelin arkkitehtuuria? 64

Esimerkkejä Tietovarastopalvelimet Sovelluspalvelimiin perustuvat järjestelmät Sähköpostiohjelmat (palvelin-pääteohjelma) Verkkosovellukset jne. Yleinen ratkaisutapa, REST-rajapinnat ja käyttäjät Suurin osa nykyisistä sovelluksista ja laitteista jollain tavalla asiakas-palvelinmallin mukaisia, yhteys johonkin nettipalveluun Symbian ja laitteiden näkyminen palveluina 65

Tietovarasto- ja sovelluspalvelimet Asiakas Asiakas Käyttöliittymä Sovelluskohtainen logiikka Sovellusaluekohtainen logiikka Palvelin Tietokanta Palvelin Käyttöliittymä Sovelluskohtainen logiikka Sovellusaluekohtainen logiikka Tietokanta 66

Asiakas-palvelin arkkitehtuurien edut ja ongelmat Etuja Helpottaa yhteisen resurssin hallintaa (esim. tietoturva) Helpottaa ylläpitoa ja muunneltavuutta (esim. palvelimen vaihto) Hyvä teknologinen tuki Ongelmia Verkkoliikenteestä johtuvat suorituskykyongelmat Palvelinkeskeisyys: kriittisen palvelimen vikaantuminen Poikkeusten käsittely 67

P2P: Peer to Peer Asiakas-palvelimen erikoistus Asiakkaat samalla palvelimia, perusasetelmassa tasa-arvoisia Resurssien jakoa, tieto, laskentateho, kaista jne. Virheherkkyys pienenee, resurssien jako mahdollistaa isompien asioiden suorittamisen joukkovoimalla (siirtonopeus, laskentateho, jne.) Myös hybridiversioita, joissa keskitetty palvelinpuoli ja lisänä asiakkaiden välillä p2p toimintaa 68

P2P: sovellusalueita Erilaiset tiedostojenjakosovellukset ja tekniikat (esim. Torrent) Hajautettu laskenta, esim. Bitcoin, (Seti at home) Botnetit Skype, keskitetty palvelin, puhelupuoli p2p:n avulla Spotify osa liikenteestä asiakkaiden avulla osa keskitetysti (siirtymässä pois) Toistensa kanssa kommunikoivat laitteet ja koneet 69

Miksi Spotify aloitti P2P:n kanssa? 70

Spotifyn lähestymistapa (josta luovuttu 2015 aikana) http://www.slideshare.net/ricardovice/spotify-behind-the-scenes 71

Spotifyn lähestymistapa 72

p2p: plussat ja miinukset +Vikasietoisuus, kaistan jne. resurssien jaon kautta säästöt, resurssien jaon helppous, skaalautuvuus -turvallisuus, tietoturva, palvelutason vaihtelu, monimutkaisempia toteutusratkaisuja (hybridimalli) 73

P2P ja Windows 10 Microsoft ja salakavala p2p Windowspäivitykseen kytkettynä 74

Internet of Things (IoT) 75

Esimerkkikoodia, P2P http://www.codeproject.com/articles/6379/generic-p-p-architecture- Tutorial-and-Example http://libtorrent.org/ https://developers.google.com/talk/libjingle/?csw=1 76

Yhteenvetoa Kerrosarkkitehtuuri osittaa järjestelmän käsitetasojen mukaan Tietovuoarkkitehtuuri osittaa järjestelmän työstämisvaiheiden mukaan Palvelupohjaiset järjestelmät ovat kehittyneet olioohjelmoinnista lähtien kohti palveluväyläratkaisuja ja pilvijärjestelmiä 77

Kysyttävää?