cloud services

Pilvinatiiviuden ytimessä

Publish date:

Digitaaliset palvelut ja sovellukset käyvät yhä monimutkaisemmiksi. Samaan aikaan käyttäjät asettavat niille aina vain kovempia vaatimuksia.

Palveluilta odotetaan innovatiivisia ja monipuolisia ominaisuuksia, responsiivisuutta ja lyhyitä vaste- ja latausaikoja. Tämä voi johtaa monenlaiseen harmiin ja päänvaivaan: suorituskykyongelmiin, toistuviin virheisiin ja kankeuteen, jota käyttäjät eivät kerta kaikkiaan enää hyväksy. Jos sovelluksesi ei vastaa käyttäjän asettamiin vaatimuksiin, on hänen helppo vaihtaa kilpailijaan. Sovelluskehittäjiltä vaaditaan siis aina vain enemmän nopeutta ja ketteryyttä.

Tähän on onneksi olemassa ratkaisu: natiivi pilviarkkitehtuuri ja pilvialustojen valmiiden palvelujen hyödyntäminen.

Pilvinatiivius tarkoittaa ennen kaikkea bisneskriittisten järjestelmien suunnitteluun ja rakentamiseen liittyvien ajatusmallien muuttamista. Pilvinatiivi järjestelmä on alun alkaenkin suunniteltu vastaamaan vaativiin, nopeisiin muutoksiin suuressakin mittakaavassa.

Pilvinatiivit järjestelmät toimivat moderneissa, dynaamisissa ympäristöissä, kuten julkisilla ja yksityisillä pilvialustoilla sekä näiden yhdistelmissä. Useimmiten ne kehitetään käyttäen yhtä tai useampaa seuraavista teknologioista: mikropalvelut, palveluorkestrointi (service mesh), API-hallinta ja konttiteknologiat, joita ajetaan ohjelmallisesti hallittavalla infrastruktuurilla (Infrastructure as Code).

Hyviä esimerkkejä toimijoista, jotka ovat saavuttaneet pilvinatiiveilla sovelluksilla nopeutta, ketteryyttä ja skaalattavuutta globaalissa mittakaavassa, ovat Netflix, Uber ja Spotify. Ne koostuvat tuhansista itsenäisistä mikrokokoisista palveluista, jotka päivittyvät tuotantoon satoja, jopa tuhansia kertoja päivässä.

Tällainen arkkitehtuuri mahdollistaa sen, että sovellukset vastaavat käyttäjien ja ympäristöjen muuttuviin vaatimuksiin nopeasti. Niitä voidaan päivittää jatkuvasti ja reaaliaikaisesti osana monimutkaista sovellusten verkkoa ja skaalautuvat juuri siellä, missä pitääkin.

Pilvinatiivien sovellusten viisi peruspilaria

Pilvinatiivien sovellusten nopeus ja ketteryys syntyy useista eri tekijöistä. Pilviarkkitehtuuri on kokonaisuuden tärkein mahdollistaja, mutta pilvinatiivien sovellusten rakentaminen perustuu lisäksi viiteen peruspilariin.

1) Moderni suunnittelu

Mikropalvelupohjainen mallintaminen 12-factor suunnitteluperiaatteiden mukaan on laajasti käytössä oleva lähestymistapa pilvipohjaisten sovellusten rakentamiseen. Se sisältää perusperiaatteet ja käytännöt, joiden mukaisesti moderneihin pilviympäristöihin parhaiten sopivia sovelluksia kannattaa kehittää. Ne perustuvat siirrettävyyteen eri ympäristöjen välillä ja deklaratiiviseen automaatioon.

Nämä käytännöt luovat kestävän perustan pilvinatiivien sovellusten rakentamiselle. Twelve-factor app -ajattelun mukaan rakennetut järjestelmät skaalautuvat nopeasti ja niihin voidaan lisätä ja ajaa tuotantoon ominaisuuksia nopeasti, markkinoiden muuttuvien vaatimusten mukaan.

2) Mikropalvelut

Pilvinatiivit järjestelmät ja sovellukset koostuvat usein mikropalveluista. Mikropalveluarkkitehtuurissa sovellukset rakentuvat kokoelmasta pienempiä palveluita, jotka toimivat omina prosesseinaan ja jotka kommunikoivat keskenään kevyiden mekanismien, kuten REST, gRPC, HTTP(S) ja WebSocket avulla.

Mikropalveluita voi skaalata toisistaan riippumatta. Sen sijaan, että skaalausta tehtäisiin kokonainen sovellus kerrallaan, voit säätää juuri niiden palveluiden kapasiteettia, jotka vaativat enemmän prosessointitehoa tai tietoliikennekapasiteettia. Jokaisella mikropalvelulla on oma elinkaarensa ja niitä voidaan kehittää, päivittää ja viedä tuotantoon niin usein kuin on tarpeen. Uusia ominaisuuksia voidaan julkaista nopeasti, häiritsemättä koko järjestelmää kerralla.

3) Konttiteknologia

Kontittaminen on erinomainen tapa rakentaa pilvinatiiveja sovelluksia alustariippumattomasti. Se on myös ensimmäinen askel Cloud Native Computing Foundationin julkaisemalla Cloud Native Trail Mapilla, joka tarjoaa opastusta yrityksille, jotka ottavat ensiaskeleitaan natiivien pilvisovellusten polulla.

Kontittaminen on hyvin suoraviivainen lähestymistapa. Siinä paketoidaan koodi ja komponentit, joita sen suorittamiseen vaaditaan – kirjastot, lisäosat ja asetukset – yhteen pakettiin, eli kontti-imageen. Imaget siirretään konttirekisteriin (registry), joka toimii niiden varastona tai kirjastona.

Konttirekisterit voivat olla yksityisiä tai julkisia ja niitä voidaan säilyttää joko omassa konesalissa tai julkisissa pilvipalveluissa. Kun koodi halutaan ottaa käyttöön, kontti-image muutetaan ajettavaksi kontti-instanssiksi. Näiden ajaminen onnistuu joko valmiissa pilvipalvelussa, tai sitten omaan konesaliin pystytetyssä konttiklusterissa.

Kontit mahdollistavat ohjelmistojen helpon siirrettävyyden ja ne tarjoavat stabiiliutta eri ympäristöjen välille. Kun kaikki on paketoitu yhteen kontti-imageen, toimii mikropalvelu omana yksikkönään, ympäröivästä infrastruktuurista eristettynä. Ympäristöjä ei tarvitse konfiguroida ennakkoon eri ohjelmistokehikoita, kirjastoja ja ajoympäristöjä varten. Kun kontit jakavat yhteisen käyttöjärjestelmän, pienentyy mikropalveluiden jalanjälki – ja samalla palvelinmäärällä voidaan ajaa useampia mikropalveluita.

4) Pilvialustojen taustapalvelut

Pilvinatiivit sovellukset ja palvelut edellyttävät monenlaisia taustapalveluita: datavarastoja, monitorointia, välimuisteja ja lokipalveluita, sekä orkestrointi- ja identiteettipalveluita. Näitä tarvitaan, jotta mikropalvelut voidaan rakentaa 12-factor suunnitteluperiaatteiden mukaisesti tilattomina. Taustapalvelut helpointa hankkia pilvipalveluntarjoajalta – niiden rakentaminen itse on myös mahdollista, mutta silloin yritys on itse vastuussa myös niiden lisensoinnista, infrastruktuurista ja hallinnasta.

Taustapalvelujen hankkiminen pilvipalvelualustalta säästää aikaa ja kustannuksia – ja vähentää myös omien palveluiden tuottamiseen liittyviä riskejä. Taustapalveluita käsitellään silloin resursseina, joita liiketoiminnalliset mikropalvelut dynaamisesti käyttävät. Taustapalvelujen käyttöön tarvittavat pääsy- ja palvelutiedot, kuten avaimet, sertifikaatit ja kirjautumistiedot, varastoidaan siihen tarkoitetussa pilvialustan tarjoamassa taustapalvelussa, salaisuuksien hallintapalvelussa.

5) Automaatio

Edellä esitellyt peruspilarit auttavat saavuttamaan nopeutta ja ketteryyttä pilvinatiiveihin sovelluksiin. Se ei kuitenkaan vielä riitä, sillä toimintavarma ympäristö edellyttää muutakin. Miten siis voi varmistaa, että päivitysten ja ominaisuuksien implementointi käy nopeasti myös pilviympäristön puolesta? IaC, Infrastructure as Code eli infrastruktuurin ohjelmistopohjainen hallinta on paras tapa pilvipohjaisen infrastruktuurin hallintaan.

IaC mahdollistaa infrastruktuurin automaattisen provisioinnin ja sovellusten tuotantoonviennin. IaC:ta hyödyntävät DevOps-tiimit pystyvät toimittamaan stabiileja ympäristöjä nopeasti ja skaalautuvasti. Kun DevOps-käytännöissä on mukana testaus ja versiointi, pysyvät infrastruktuuri ja sovellusten tuotantoonviennit automaattisina, yhtenäisinä ja toistettavina.

Infran rakentamiseen voi käyttää esimerkiksi Azure Resource Manager (Biceps), Terraform tai Cloud Formation skriptejä. Skriptit versioidaan ja talletetaan versionhallintaratkaisuun sovelluskoodin mukana. DevOps automaation tarjoaman jatkuvan integroinnin ja toimituksen avulla (CI/CD) skripteillä luodaan yhtenäinen ja toistettavissa oleva infrastruktuuri yli sovelluksen eri elinkaariympäristöjen, kuten kehitys, testi, QA ja tuotanto. Azure DevOps Pipeline tai AWS CodePipeline pystyy hoitamaan koko prosessin alusta loppuun.

Lopuksi

Nämä viisi pilaria muodostavat kestävän perustan pilvinatiiveille sovelluksille ja palveluille. Meillä Capgeminillä on reilusti kokemusta näiden käytäntöjen rakentamisesta ja käyttöönotosta. Tarjoamme mielellämme myös esimerkkejä käyttötapauksista ja parhaista käytännöistä, joiden avulla pilvinatiivien palveluiden suunnittelu ja rakentaminen kannattaa toteuttaa.

Tämä teksti perustuu Sjoukje Zaalin alkuperäiskirjoitukseen.

Meet Our Experts

Pasi Mäkinen

Delivery Architect Director at Capgemini, Finland

Simone Leggio

Director, Head Of Cloud and DevOps Practice, Application Services, Capgemini Finland

Contact Us

 

Thank you for filling out my form!

We are sorry, the form submission failed. Please try again.