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

Samankaltaiset tiedostot
Arkkitehtuurityylejä ja suunnittelutaktiikoita

Arkkitehtuurityylejä ja patterneja

Arkkitehtuurityylejä ja suunnittelutaktiikoita

Palveluperustaiset arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Ohjelmistoarkkitehtuurit. Kevät

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Viestinvälitysarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

6. Arkkitehtuurityylit

Viestinvälitysarkkitehtuurit Lähtökohta:

Integrointi. Ohjelmistotekniikka kevät 2003

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

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

Ohjelmistoarkkitehtuurit

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

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Tulevaisuuden Internet. Sasu Tarkoma

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

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

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

Tekninen suunnitelma - StatbeatMOBILE

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

Arkkitehtuurityylejä ja ratkaisumalleja

Tässä kertauksena SOA ja palvelu.

VMU-C EM. Asennus ja käyttö

Rinnakkaistietokoneet luento S

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

T Harjoitustyöluento

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

SÄHKÖPOSTIMARKKINOINTI

Tekninen suunnitelma - StatbeatMOBILE

Samanaikaisuuden hallinta

Ohjelmistojen mallintaminen, sekvenssikaaviot

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

IBM Iptorin pilven reunalla

HOJ J2EE & EJB & SOAP &...

Kuluttajat mukaan verkkolaskujen vastaanottajiksi

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

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

T Harjoitustyöluento

Ohjelmistoarkkitehtuurit, syksy

Arkkitehtuurityylejä ja patterneja

Googlen pilvipalvelut tutuksi / Google Drive

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

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

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

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

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

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

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

Tiedonsiirto- ja rajapintastandardit

Tikon ostolaskujen käsittely

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

Jotta voit käyttää Facebookia täytyy sinun ensiksi luoda sinne käyttäjätili. Käyttäjätilin luominen onnistuu noudattamalla seuraavia ohjeita.

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

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Ohjelmistoarkkitehtuuri

Tikon ostolaskujen käsittely

Tietokanta (database)

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

Ohjelmistojen suunnittelu

Netplaza. paremman palvelun puolesta! Asiakaspalvelu palvelee. Sinä keskityt omaan työhösi. Jos jokin ei suju niin kuin oletit

KODAK EIM & RIM VIParchive Ratkaisut

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Harjoitustyö. Jukka Larja T Tietokoneverkot

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

SÄHKÖPOSTIN SALAUSPALVELU

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja.

Ohjelmoinnin peruskurssien laaja oppimäärä

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

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

CQRS, -ES, PACS, DICOM, WTF?

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

Ryhmäharjoitus I: Google Drive. TIEY4 Tietotekniikkataidot, kevät 2017 Tehdään ryhmäharjoitustunnilla 13.3.

Googlen pilvipalvelut tutuksi / Google Drive

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

TIEDONHAKU INTERNETISTÄ

Helppo ottaa käyttöön, helppo käyttää Basware Virtual Printer

Järjestelmäarkkitehtuuri (TK081702)

Hautaako Facebook tahallaan sivun ylläpitäjien julkaisut?

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

Algoritmit 1. Luento 7 Ti Timo Männikkö

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

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

Sovellusarkkitehtuurit

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

Liikkuvien isäntäkoneiden reititys

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

Osio 4: Graafinen käyttöliittymä

Tiedotejakelun trendit 2014!

Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle

Transkriptio:

Oppimistavoitteet Arkkitehtuurityylejä Arkkitehtuurityylejä, jaettu tietovarasto, viestinvälitysarkkitehtuurit, vertaisverkkoarkkitehtuuri, map-reduce, (cloud) Luento 5 15.9.2015 581385 Ohjelmistoarkkitehtuurit 1 15.9.2015 581385 Ohjelmistoarkkitehtuurit 2 LISÄÄ ARKKITEHTUURITYYLEJÄ Nousussa oleva, vielä täsmentymätön tyyli yritysjärjestelmien palvelinpuolen arkkitehtuuriksi Vastaveto monoliittisiksi koetuille perinteisille kolmikerrosarkkitehtuureille (N-tier) Tukee Continuous X käytäntöjä (continuous integration, deployment jne.) ~ Unixin pipes and filters ajattelutapa sovellettuna palvelujen toteuttamiseen 15.9.2015 581385 Ohjelmistoarkkitehtuurit 3 15.9.2015 581385 Ohjelmistoarkkitehtuurit 4 Perusidea: palvelinsovellus Koostuukokoelmasta pieniä, erillisiä palveluita Jokaista palvelua ajetaan omassa prosessissaan Palvelut kommunikoivat kevyitä mekanismejakäyttäen (verrattuna ESB-väyliin), esimerkiksi HTTP resurssi-api:eja Palvelu Osituksenperusteena liiketoimintaprosessit ja toiminnot (yksi per palvelu, single responsibility principle) Voidaan ottaa käyttöön (deployment) itsenäisesti ja automaattisesti Minimimäärä pavelujen keskitettyä hallinnointia Palvelujen toteutus mahdollista eri ohjelmointikielillä ja kirjastoilla Palvelut voivat käyttääomia tiedonhallintaratkaisujaan Transaktioiden sijaan tarvitaan toisenlaisia menetelemiä tiedon eheyden takaamiseksi 15.9.2015 581385 Ohjelmistoarkkitehtuurit 5 http://martinfowler.com/articles/microservices/images/decentralised-data.png 15.9.2015 581385 Ohjelmistoarkkitehtuurit 6 1

Martin Fowlerin sivut http://martinfowler.com/microservices/ http://martinfowler.com/articles/microservices.ht ml Katso esimerkiksi Fowlerin key-note esitys aiheesta GOTO Berlin 2014 konferenssissa youtubesta Linkki videoihin löytyy microservices resurssisivulta (1. linkki yllä) 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 7 15.9.2015 581385 Ohjelmistoarkkitehtuurit 8 processor 1 processor 2 state Käsittelijät toisistaan riippumattomia 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 9 15.9.2015 581385 Ohjelmistoarkkitehtuurit 10 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 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 11 15.9.2015 581385 Ohjelmistoarkkitehtuurit 12 2

VIESTINVÄLITYSARKKITEHTUURIT 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ää (1) tietylle kohteelle tai (2) yleislähetyksenä kaikille tunnetuile kohteille tai (3) kaikille kiinnostuneille kohteille Viestintä voi olla synkronista (lähettäjä jää odotamaan) tai asynkronista (lähettäjä jatkaa toimintaansa) 15.9.2015 581385 Ohjelmistoarkkitehtuurit 13 15.9.2015 581385 Ohjelmistoarkkitehtuurit 14 Tyypillinen tilanne (roolit) 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 (prosessin) sisäisesti Verkkoratkaisussa tarvitaan kommunikointiprotokolla ja välittäjä (broker) huolehtimaan viestinvälityksestä Välittäjä Välittäjä (broker) 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 15 15.9.2015 581385 Ohjelmistoarkkitehtuurit 16 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) fyysistä sijaintia (protkolla, syntaksi) Operaatiot, joilla komponentit reagoivat viesteihin (komponenttien ymmärtämä kieli, semantiikka) Säännöt, joiden avulla komponentit ja viestit rekisteröidään järjestelmälle Palvelutasolupaus (viestien elinaika, taattu toimitus jne.) Välittäjä 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ä (viestin tyyppi tai muu tunniste) ne haluavat vastaanottaa (tai keneltä) 15.9.2015 581385 Ohjelmistoarkkitehtuurit 17 15.9.2015 581385 Ohjelmistoarkkitehtuurit 18 3

Rinnakkaisuus: missä määrin välittäjä ja komponentit toimivat rinnakkain Viestinvälittäjillä ja vastaanottajilla viestijonot (välittäjän laatikko, vastaanottajan laatikko) Voiko viestijono olla jaettu eri vastaanottajien kesken Puskurointi, palvelutasot Esimerkki - RabbitMQ RabbitMQ on suosittu open-source viestinvälityspalvelu, joka tukee monia kieliä/ympäristöjä ja erilaisia viestinvälitysprotokollia http://www.rabbitmq.com Ominaisuuksiin palataan tarkemmin harjoituksissa 15.9.2015 581385 Ohjelmistoarkkitehtuurit 19 15.9.2015 581385 Ohjelmistoarkkitehtuurit 20 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 Tapahtumapohjainen viestintä :Component :Component :Component :Component :Component Väylä / Event bus publish subscribe 15.9.2015 581385 Ohjelmistoarkkitehtuurit 21 15.9.2015 581385 Ohjelmistoarkkitehtuurit 22 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 23 EventObject MyEvent Ev1 Javan tapahtumamalli creates EventSource ListenerContainer addeventlistener(evli) notifyall ES1 eventhappened( ) Vapaasti toteutettavissa Observer EventListenerInterface eventhappened(myevent) calls update addeventlistener( ) implements ConcreteEventListerner eventhappened(event) CEL-1 Instance of 15.9.2015 581385 Ohjelmistoarkkitehtuurit 24 calls EventListener 4

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. 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 25 15.9.2015 581385 Ohjelmistoarkkitehtuurit 26 MUITA HAJAUTETTUJA ARKKITEHTUUREJA 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 27 15.9.2015 581385 Ohjelmistoarkkitehtuurit 28 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 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) 15.9.2015 581385 Ohjelmistoarkkitehtuurit 29 15.9.2015 581385 Ohjelmistoarkkitehtuurit 30 5

Haittoja 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) 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 31 15.9.2015 581385 Ohjelmistoarkkitehtuurit 32 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 Map-Reduce -arkkitehtuuri Skaalautuvuus, saatavuus, suorituskyky, varmistukset 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 15.9.2015 581385 Ohjelmistoarkkitehtuurit 33 15.9.2015 581385 Ohjelmistoarkkitehtuurit 34 Cloud Erittäin perusteellinen kuvaus pilvessä tapahtuvasta tietojenkäsittelyn perusteista patternien muodossa http://www.cloudcomputingpatterns.org/cloud_com puting_patterns Kirjan voi lukea SpringerLink e-kirjastossa ja ladata sieltä pdf:nä (kuuluu yliopiston tilaukseen) Perusteet pilvilaskennasta olisi hyvä jokaisen ohjelmistoarkkitehdin tuntea 15.9.2015 581385 Ohjelmistoarkkitehtuurit 35 6