Useissa PDC09 konferenssin sessioissa ja keskusteluissa on käsitelty loogisen tietoarkkitehtuurin projisointia fyysiseksi. Tässä yhteenveto tietoarkkitehtuurin toteutusvaihtoehdoista.
Azure-pohjaisissa ratkaisuissa perusvaihtoehtoja tiedon tallettamiseen ovat:
Näitä vaihtoehtoja voidaan eri tavoin yhdistellä erilaisten valintaperusteiden mukaan. Valintaperusteita ratkaisulle on erilaisia ja keskenään ristiriitaisia:
- Säädökset tiedon talletuspaikasta
- Tietosuojaan liittyvät määräykset ja suositukset (kuten Payment Card Industry Data Security Standard)
- Talletettavan tiedon volyymi ja yksikkökoko
- Tiedon eheyden toteutusmalli
- Tiedon käyttövolyymi
- Ratkaisun perustamiskustannukset
- Ratkaisun käyttökustannukset
Tiedon talletuspaikka ja tietosuoja
Windows Azure ja SQL Azure antavat sovelluksen omistajan valita sijoituspaikan joko puhtaasti alueen (US, EU, Asia) tai tarkemmin konekeskuksen mukaan. Kumpikaan EU-alueen konekeskuksista ei kuitenkaan ole Suomen rajojen sisäpuolella. Mikäli tiedot on varastoitava Suomen rajojen sisäpuolella, on mahdollista käyttää paikallista SQL-tietokantaa osana Azure-sovellusta.
Tämä on mahdollista tällä hetkellä julkaisemalla paikallisen SQL Server tietokannan TDS-portti Azure AppFabric (ent. .NET Services) Service Bus –palvelun avulla pilvisovellukselle. Rajapinta tunneloidaan HTTPS-yhteyden läpi ja lisäksi yhteys varmistetaan Service Bus palveluun konfiguroitavalla julkisen avaimen sisältävällä X.509 sertifikaatilla. Pääsyä julkaistuun porttiin pystytään hallitsemaan AppFabric Access Control -palvelulla. Tarkempi kuvaus ratkaisusta löytyy Clemens Vastersin blogista.
Myöhemmin Windows Azure alustalle on tulossa mahdollisuus määritellä IPv6 ja IPSec tunnelointi haluttujen Azure virtuaalikoneiden ja paikallisen infrastruktuurin välillä. Ensimmäisenä kuvattu tapa rajoittaa kuitenkin liikennettä paljon tarkemmin eikä yleensä vaadi erityistoimenpiteitä palomuurin suhteen koska kaikki yhteyden avaukset tapahtuvat ulospäin.
Tiedon volyymi ja yksikkökoko
Tallennusratkaisuilla on erilaisia rajoituksia talletettavan tiedon volyymin ja yksikkökoon suhteen. Suurikokoiset tietoyksiköt kuten kuvat, jaeltavat sovellukset ja videot kannattaa tallettaa Azure Blob Storage –palveluun. Tietoyksikön enimmäiskoko on 50 GB. Suuret tietoyksiköt jaetaan 64MB pituisiin lohkoihin. Blob Storagen etuna on mahdollisuus käyttää Azure alustan Content Delivery Network –palvelua, joka replikoi haettua dataa eri pisteisiin Internetissä mahdollisimman lähelle käyttäjiä. Blob Storage skaalautuu käytännössä rajattomasti.
SQL Azure tarjoaa toistaiseksi kaksi eri tietokantakokoa; 1GB ja 10GB. Mikäli tietoa halutaan tallettaa enemmän, on sovellustasolla toteutettava tietokannan partitiointi. Partitiointia toteutettaessa on huomioitava ettei SQL Azure toistaiseksi tue hajautettuja transaktioita. Helpointa on siis toteuttaa tietokannan horisontaalinen partitiointi.
Azure Table Storage skaalautuu tiedon kokonaismäärän suhteen käytännössä rajattomasti. Erityispiirteenä on kuitenkin tietovaraston skeemattomuus eli jokainen ‘rivi’ voi sisältää eri nimi-arvo pareja. Riveillä on kuitenkin oltava yhteisenä tietona vähintään partitioavain ja riviavain. Nimi-arvo –pareja voi rivillä olla enintään 255. Kunkin avaimen enimmäismitta on 1KB. Suurin yksittäinen talletettava arvo on 64 KB. Koko rivin datan enimmäiskoko on 1MB.
Tiedon eheyden toteuttaminen
SQL Azure tarjoaa perinteisen relaatiokannan välineet tiedon eheyden toteuttamiseen. Olennaisin ero tällä hetkellä on hajautettujen transaktioiden tuen puuttuminen. Azure Table Storage sisältää transaktion käsitteen joka mahdollistaa samassa taulussa ja samalla partitioavaimella talletettujen rivien muutokset atomisena päivityksenä.
Azure Blob Storage ylläpitää talletetuista lohkoista kahta listaa. Uncommitted Block List luetteloi kaikki palveluun ladatut lohkot joita ei vielä ole kuitattu käsitellyiksi ja Committed Block List sisältää ne lohkot jotka on kuitattu onnistuneesti talletetuksi.
Mikäli tietovaraston toteuttaa hajautettuna useamman edellä mainitun palvelujen avulla, on suunniteltava miten hoitaa tiedon eheyden eri palvelujen yli. Hajautetut transaktiot eivät eri palvelujen kesken ole mahdollisia.
Käyttövolyymiin varautuminen
Blob Storage ja Table Storage ovat käyttövolyymin suhteen helpoimpia palveluja. Blob Storagen CDN-palvelu hajauttaa kuormaa eri puolille verkkoa ja kumpikin palvelu on rakennettu skaalautumaan erittäin suuriin käyttäjämääriin.
Kutakin yksittäistä SQL Azure tietokantaa palvelee viimekädessä fyysinen palvelin. Fyysinen palvelin hoitaa lisäksi useamman asiakkaan tietokantoja, joten kyse on jaetusta kapasiteetista. Tietokantojen palvelutason tasapuolisuuden varmistamiseksi SQL Azuressa on ns. throttling –mekanismi, joka tarvittaessa rajoittaa runsaasti kuormitetulla palvelimella yksittäisten tietokantojen suorituskykyä. Palvelu säätää samalle palvelimelle sijoitettavien tietokantojen yhdistelmää tietokantojen havaitun kuormitustason mukaan.
Mikäli SQL Azure –palvelun päälle halutaan toteuttaa erittäin suorituskykyinen ratkaisu, kannattaa jälleen käyttää tietokannan partitiointia. Tällöin kukin tietokanta on omalla fyysisellä palvelimellaan ja suorituskykyä voidaan skaalata rajattomasti. Tietokanta voidaan hajauttaa tarvittaessa ohjelmallisesti toteuttamalla taustaprosessi (worker role), joka hajauttaa kannan ennen tiedossa olevaa kuormituspiikkiä ja yhdistää kannan piikin mentyä ohitse. Esimerkkinä tästä PDC09:ssä esiteltiin Uusi-Seelantilaista TicketDirect verkkokauppaa joka varautuu tällä mekanismilla suureen kysyntään tapahtumien lipunmyynnissä. Näin saavutetaan suuri suorituskyky ja kohdistetaan kustannukset vain tarvittavalle ajalle.
Ratkaisun perustamiskustannukset
Perustamiskustannuksiltaan kallein vaihtoehto uudelle ratkaisulle on paikallisen SQL tietokannan tai SOAP/REST -pohjaisen palvelun käyttö tiedonhallintaan. Tässä tapauksessa on kannettava ennalta niin laitteisiin, ohjelmistolisensseihin kuin palvelutoteutukseen liittyvät kulut. Nämä voidaan osittain välttää mikäli ratkaisuun integroidaan valmis liiketoimintajärjestelmä.
Azure palvelualustaa käytettäessä niin Table Storage, Blog Storage kuin SQL Storage eivät aiheuta muita perustamiskustannuksia kuin itse ratkaisun kehitystyöstä aiheutuu. Lisenssien ja laitteiden pääomakulut sisältyvät palvelumaksuun.
Ratkaisun käyttökustannukset
Käyttökustannusten osalta paikalliset ratkaisuvaihtoehdot sisältävät aina erillisenä komponenttina laiteiden, käyttöjärjestelmän ja tiedonhallintaratkaisun hallinta- ja käyttökustannukset. Näiden vertaaminen pilvipalveluun on usein vaikeaa kustannusten epätarkan seurannan vuoksi.
Pilivipohjaiset tiedonhallinnan ratkaisut sisällyttävät kaikki tuotantokustannukset ennalta määriteltyyn käyttövolyymiin pohjautuvaan maksuun. Ohessa vertailu Azure palvelualustan tiedonhallinnan palvelujen tärkeimmistä eroista käyttökustannuksissa.
SQL Azure relaatiokanta palveluna on hinnoiteltu talletettavan tiedon enimmäismäärän mukaan. 1GB tietokanta maksaa tällä hetkellä 7,085 €/kk ja 10GB 70,913 €/kk. Erillistä transaktiomäärään pohjautuvaa veloitusta ei ole. Jos tietokantaa käytetään Microsoftin konekeskuksen ulkopuolelta tai konekeskuksesta toiseen, on mukaan laskettava vielä Azure palvelualustan yleinen tietoliikenteen hinnoittelu (0,071 €/GB sisään ja 0,1064 €/GB ulos). Jos tietokantoja luodaan lyhyeksi aikaa, lasketaan hinnoittelu päivätasolla, jolloin 30 tietokantainstanssia vuorokaudeksi maksaa saman verran kuin 1 tietokantainstanssi kuukaudeksi.
Azure Table Storage on hinnoiteltu suoraan talletettavan datamäärän mukaan (0,1064 €/GB/kk). Lisäksi palvelun rajapinnan käytöstä kertyy transaktiomaksu (0,0071 €/10 000 transaktiota). Transaktiomaksua voi optimoida suorittamalla ns. batch-operaatioita aina kun mahdollista. Table Storagen hajautetusta luonteesta johtuen haut eivät aina suoraan palauta tietoja vaan joskus ns. continuation tokenin, jolla tehdään uusi haku kunnes uutta tokenia ei enää kyselyssä saada. Tämä vaikuttaa jonkin verran transaktiokustannuksiin. Lisäksi konekeskuksen ulkopuolisen tietoliikenteen osalta on huomioitava edellisessä kappaleessa mainittu tietoliikenteen hinnoittelu.
Azure Blob Storage on hinnoiteltu samoin kustannuskomponentein ja hinnoin kuin Table Storage.
Lisäksi kannattaa tarkistaa onko hinnoittelun suhteen voimassa ajallisia erityisehtoja. Esimerkiksi vuoden 2010 tammi – kesäkuulle on voimassa ehto, jonka mukaan dataliikenne Microsoftin konekeskukseen päin on veloituksetonta yöllä ja viikonloppuna (arkisin klo 22-06 UTC ja perjantaista klo 22 UTC maanantaihin klo 06 UTC).
Ajantasaiset hinnat eri markkina-alueille ja valuutoille löytyvät Azure alustan hintasivulta.
Mistä apua suunnitteluun
Tietoarkkitehtuurin suunnittelua käsitellään mm. seuraavissa lähteissä: