- 25.10.2017

Azure Service Bus tuo toimintavarmuutta integraatioihin

Azure Service Bus on palvelu Microsoftin Azure -pilvialustassa, joka mahdollistaa viestien ja sanomien välittämisen asynkronisesti. Se tarkoittaa sitä, että viestin voi lähettää ilman että viestin vastaanottaja on valmis ottamaan viestin vastaan. Se toimitetaan vastaanottajalle sitten kun vastaanottaja on valmis käsittelemään viestin. Azure Service Bus huolehtii siitä, että viesti otetaan varmasti vastaan, ja säilytetään niin pitkään kunnes se on välitetty yhdelle tai useammalle vastaanottajalle.

Tämä artikkeli on neljäs osa artikkelisarjassa, jossa käyn läpi Azuren palveluita, joita voit hyödyntää integraatioratkaisuiden rakentamisessa. Edellisessä artikkelissa kävin läpi Azure Functions ja API Apps -palveluita. Kannattaa lukaista sekin läpi mikäli et sitä vielä ehtinyt.

Ota yhteyttä

Azure Service Bus viestin välittäjänä

Yksi ehdottomasti tärkeimpiä integraatioratkaisun tarjoamia toimintoja on sen kyky välittää viestejä asynkronisesti. Se parantaa toimintavarmuutta, koska integraation osapuolten ei tarvitse olla ”linjoilla” samanaikaisesti – viestin lähettäjä lähettää viestin silloin kun sille parhaiten sopii, ja vastaanottaja tai vastaanottajat lukevat ja käsittelevät viestit silloin kun ne ovat siihen valmiit.

Yhden järjestelmän vikatilanne ei vaikuta toisten järjestelmien toimintaan, kun näiden välinen kommunikointi hoidetaan asynkronisesti Azure Service Bus -palvelun avulla. Integroitavien järjestelmien ei edes tarvitse tietää toisista järjestelmistä välttämättä mitään, vaan ainoastaan sen, mihin lähetettävät viestit toimitetaan, ja mistä voidaan vastaanottaa muiden järjestelmien lähettämiä viestejä.

Ilman Azure Service Bus -palvelun kaltaista viestien välittäjää, eri järjestelmien huoltokatkot tai vaihto toisiin järjestelmiin olisi käytännössä erittäin hankala toteuttaa, koska yhden järjestelmän vaikutukset kantautuisivat pitkälle toisiin järjestelmiin. Myös odottamattomilla virhetilanteilla olisi kauaskantoiset vaikutukset. Azure Service Bus katkaisee tämän vaikutuksen, ja tekee järjestelmistä ”irtonaisempia” ja kokonaisarkkitehtuurista modulaarisempaa.

Asynkroninen kommunikointi hoituu Azure Service Bus -palvelussa ensisijaisesti jonojen (queues) ja aiheiden (topics) avulla.

Jonot

Azure Service Bus QueuesViestijonot ovat olleet järjestelmäkehityksessä ratkaisurepertuaarissa jo pitkään, tuoden toimintavarmuutta kahden järjestelmän väliseen kommunikointiin. Toimintavarmuutta lisää se, että viestin lähettäjä voi olla varma siitä, että viesti saadaan aina lähetettyä. Myös siinä tilanteessa, että vastaanottaja ei välttämättä olekaan samaan aikaan hereillä ottamassa viestiä vastaan.

Esimerkiksi verkkokauppa jossa vastaanotetaan ja prosessoidaan tilauksia, voisi hyötyä Azure Service Bus -palvelun jonoista kuormahuippujen tasaamisessa. Vaikka tilausten prosessointi kestäisikin pidempään kuin tilausten vastaanotto, saadaan tilaukset kaikki talteen jotta voidaan prosessoida ne vähän myöhemmin. Jonot ei tietenkään ratkaise pitkäkestoisia pullonkauloja, jossa tilauksia tulee pitkällä aikavälillä enemmän kuin mitä pystytään prosessoimaan. Se lienee kuitenkin positiivinen ongelma, johon ratkaisu pitää löytyä jonojen ulkopuolelta.

Kuormituspiikkien tasaamiseen jonot ovatkin usein mitä mainioin ratkaisu. Niiden avulla hoituu myös kahdensuuntainen kommunikointi käyttämällä kahta jonoa, kuten yllä olevassa kuvassa on kuvattu. Toinen järjestelmä lähettää viestejä toiseen jonoon, ja vastaanottaa näihin viesteihin vastaussanomia toisesta jonosta.

Jonossa olevalla viestillä on aina vain yksi lähettäjä, ja yksi vastaanottaja. Jonon avulla et siis voi lähettää viestiä useammalle kuin yhdelle vastaanottajalle.

Aiheet

Azure Service Bus TopicsEn tiedä onko ”aiheet” oikea suomenkielinen termi englannin ”Topics” termille, mutta se kuvaa ajatusta varsin hyvin, joten mennään aiheilla.

Idea on hyvin saman tyylinen kuin jonoissa sillä erotuksella, että viestin vastaanottajia voi olla useampi. Viestin lähettäjän näkökulmasta viestit lähetetään kuten jonoihinkin, mutta jonon sijaan lähettäjä valitseekin aiheen johon viesti liittyy. Aiheita voi olla esimerkiksi ”tilaus”, ”palaute”, ”matkakulu” tai vaikkapa ”tarjous”.

Viestin vastaanottajalla on aiheissa monipuolisemmat vaihtoehdot kuin jonoissa. Vastaanottaja luo jokaiseen aiheeseen tilauksen, jossa määritellään lisäksi myös suodatuskriteerit. Azure Service Bus huolehtii tämän jälkeen siitä, että viesti välitetään vastaanottajalle vain jo suodatuksen kriteerit täyttyvät.

Otan esimerkiksi tilausten käsittelyn. Tilauksia käsitellään kahdessa ”tilausputkessa”. Toinen, VIP -putki, käsittelee tilauksia suoraviivaisesti ja ympäri vuorokauden. Toista putkea pitkin tulevat tilaukset käsitellään vain arkisin normaalina työaikana, koska näihin saattaa sisältyä myös manuaalisia vaiheita, esimerkiksi luottotietojen tarkistuksia ym.

Molempiin putkiin luodaan omat tilaukset samaan ”tilaus” -aiheeseen, jossa esimerkiksi VIP -putkeen suodatetaan vain avainasiakkailta tulevat yli 10 000 EUR tilaukset, ja normaaliputkeen suodatetaan kaikki muut tilaukset.

Myös esimerkiksi palautteet voisi ohjata eri tyyppisiin käsittelyihin riippuen siitä, onko palaute tuotearvostelu vai vikailmoitus.

Mitä Azure Service Bus maksaa

No mitä tämä lysti sitten maksaa? Azure Service Bus -palvelun hinta, ainakin jonojen ja aiheiden osalta, muodostuu seuraavista komponenteista.

  • Viestien käsittelyoperaatiot – Lähetys, vastaanotto tai jonon tarkistus. Toisin sanoen, joka kerta kun jokin järjestelmä on yhteydessä jonoon tai aiheeseen.
  • Yhteyksien määrä – Jonoihin ja aiheisiin kytketyt järjestelmät, sekä lähettäjät että vastaanottajat. Tämä lasketaan huippulukemana tunnin ajalta, eli vaikka kytkettyjä järjestelmiä olisi lukematon määrä, voi silti pärjätä vähemmällä yhteyksien määrällä, mikäli järjestelmät eivät ole saman tunnin aikana yhteydessä Azure Service Bus -palveluun.

Palvelua voi ostaa kolmessa eri paketissa: Basic, Standard, ja Premium.

Basic

Basicissä yhteyksien määrä on rajattu 100:aan, eikä niitä voi edes ostaa lisää, vaan jos tarvitset enemmän, valitse Standard. Viestien käsittelyoperaatiot maksaa 0,04 EUR / 1 miljoona operaatiota. 100 miljoonaa käsittelyä maksaa 4,22 EUR.

100 miljoonaa käsittelyä tarkoittaa 31 päivän kuukaudessa yli 37 käsittelyoperaatiota sekunnissa. Basicissa viestin maksimikoko on 256 kilotavua.

Standard

Standard -paketissa perusmaksu on 8,43 EUR / kk, joka sisältää 12,5 miljoonaa käsittelyoperaatiota sekä 1000 järjestelmien tekemää yhteyttä saman tunnin aikana. Jokainen yhteys, joka ylittää 1000 yhteyttä maksaa 0,03 EUR. Jos siis vuorokauden jokaisena tuntina yhteyksien määrä enimmillään on 1010 (ylitys 10:llä), tulee sen päivän ylitykset maksamaan 0,03 x 10 x 24 = 7,2 EUR. Tämä lisätään perusmaksuun 8,43 EUR.

Jos oletetaan että yhteyksien määrä pysyy tuossa 1000 yhteyden rajassa käyttäen samaa käsittelyoperaatioiden määrää kuin Basic -esimerkissäkin, eli 100 miljoonaa, joka tarkoittaa yli 37 käsittelyä sekunnissa, tulee kustannukset Standard -paketista olemaan 67,13 EUR.

Standardissa viestin maksimikoko on sama kuin Basicissa, 256 kilotavua, joten mikäli 100 yhteyttä tunnin aikana riittää, niin Standard ei tarjoa jonojen ja aiheiden näkökulmasta mitään lisäarvoa, ja Basicilla pärjää hyvin.

Tulevassa artikkelissa tulen käsittelemään muita Azure Service Bus -palveluita, jotka vaativat Standard -pakettia.

Premium

Premium -paketti tarjoaa dedikoidun ja eristetyn ympäristön jossa viestejä välitetään. Tämä eristetty ympäristö muodostaa yksikön, jonka päivähinta on 18,77 EUR. Kuukausitasolla se tekee yli 500 EUR. Yksiköitä voi ostaa 1, 2 tai 4. Näiden avulla saadaan aina ennustettava ja toistettava suorituskyky viestinvälitysratkaisulle.

Yhteenveto

Asynkronisella viestinvälityksellä on keskeinen rooli modernissa järjestelmäarkkitehtuurissa. Erilaisten pilvipalveluiden myötä tämä rooli vain korostuu monelta näkökulmalta. Toisaalta halutaan toimintavarmuutta kun kytketään yhteen suorituskyvyltään eri tasoisia palveluita. Toisaalta taas halutaan modulaarisuutta ja kytkeä kokonaisuuteen uusia järjestelmiä ilman että pitää tehdä muihin järjestelmiin mitään muutoksia.

Tähän tarjoaa Azure Service Bus -palvelu oivan avun. Jos haluat kuulla aiheesta lisää, ota yhteyttä.

Ota yhteyttä

Aiheesta lisää

Oletko kuullut tarinan konesalin peikosta? Me suomalaiset olemme hyvässä digi-iskussa Microsoftin ja PwC:n tekemän tuoreen selvityksen mukaan. Pärjäämme mittelöissä jopa maailmanluokan vertailu...
Azure Functions ja API Apps integraation avuksi Kuten edellisessä artikkelisarjan osassa jo totesin, niin Azuren valmiilla palveluilla pääsee jo melko pitkälle ilman merkittävämpää koodaamista. Joss...
Integraatioalusta Azure palveluiden avulla: Logic Apps ja Flow Yritykset kytkeytyvät toisiin yrityksiin sähköisten järjestelmien kautta yhä useammin. Lisäksi yritykset käyttävät sisäisesti erilaisia järjestelmiä, ...
Azure pilvipalvelut avuksi sovelluskaaoksen hallintaan – osa 1 Nykyään liiketoiminnan tueksi saatavilla oleva IT-sovellusten ja -palveluiden kirjo on valtava. Käyttöönotto on joko helppoa tai erittäin helppoa, eik...
Tehosta liiketoimintaasi Azurella Haluaisitko tehostaa kankeita liiketoimintaprosesseja kustannustehokkaasti, käyttäen moderneja pilvipalveluita ja kehittää useilla eri päätelaitteilla...
Blue Meteorite Joins the Microsoft Enterprise Cloud Alliance Blue Meteorite has joined the Enterprise Cloud Alliance, a strategic initiative that promotes best-in-class enterprise cloud solutions built on the Mi...

Tietoa kirjoittajasta

Mika Berglund

Arkkitehti, teknologiakonsultti

mika.berglund@meteoriitti.com

+358 50 570 6237

Kirjoitukset (5)

Kommentoi