Pilvipalveluista on muodostunut viimeistään 2010-luvun aikana erottamaton osa modernia web-ohjelmistokehitystä. Silti monelle ohjelmistokehittäjällekin on epäselvää, millaisen arkkitehtuurin varaan pilvessä isännöity web- tai mobiilisovellus pitäisi toteuttaa. Vaikeaa voi olla myös hahmottaa, mitkä eri pilvipalvelualustojen tarjoamista palveluista ovat kehittäjille oleellisimpia ja mitä keskeisiä hyötyjä niillä saavutetaan.
Tässä kaksiosaisessa blogitekstisarjassa keskitytään kolmeen suurimpaan pilvipalvelualustaan, Amazon Web Servicesiin (AWS), Microsoft Azureen ja Google Cloud Platformiin (GCP). Sarjan ensimmäisessä osassa esitellään ne arkkitehtuuriperiaatteet, jotka nämä palveluntarjoajat ovat linjanneet pilvisovellusten kehittämisen parhaiksi käytännöksi. Blogisarjan toisessa osassa puolestaan perehdytään ohjelmistokehittäjän kannalta tärkeimpiin palveluihin, joita nämä kolme alustaa tarjoavat.
AWS, Microsoft Azure ja GCP ovat maailman käytetyimmät pilvipalvelualustat. AWS on näistä kolmesta alustasta vanhin ja palveluvalikoimaltaan laajin. Azure houkuttaa erityisesti Microsoftin ohjelmistopinon kanssa työskenteleviä, ja Suomessa sen käyttö ohjelmistoprojekteissa on yleistynyt viime vuosina. Myös tekoäly- ja big data -palveluillaan erottautunutta GCP:tä näkee yhä useammin hyödynnettävän, mihin saattaa vaikuttaa Haminan palvelinkeskuksen maantieteellinen sijainti. Matalan tiedonsiirtoviiveen lisäksi sensitiivistä dataa ei nimittäin tarvitse päästää Suomen rajojen ulkopuolelle.
Pilven pilarit
AWS:n, Azuren ja GCP:n määrittelemät laadukkaan arkkitehtuurin kehykset ovat keskenään ällistyttävän samankaltaisia. AWS nimitys omalle arkkitehtuurikehykselleen on AWS Well-Architected Framework. Microsoft ei osoita omaperäisyyttä oman arkkitehtuurikehyksensä nimeämisessä, sillä se kutsuu sitä Microsoft Azure Well-Architected Frameworkiksi. GCP:n vastine on puolestaan Google Cloud Architecture Framework.
Yhteistä näille arkkitehtuurikehyksille ovat seuraavat viisi pilaria: huippuunsa hiottu toiminnallisuus (operational excellence), tietoturva, toimintavarmuus, kustannusten optimointi sekä suorituskyky. Näitä AWS:n kehys laajentaa lisäksi kestävyyden käsitteellä ja GCP puolestaan järjestelmäsuunnitelun käsitteellä. GCP myös mainitsee tietoturvan käsitteen rinnalla yksityisyyden ja määräystenmukaisuuden (compliance) teemat.
1. Huippuunsa hiottu toiminnallisuus
Huippuunsa hiotulla toiminnallisuudella tarkoitetaan pilvisovellusarkkitehtuurissa sitä, että sovelluksen tuotantoajon vaatimat toiminnot ja prosessit ovat laadukkaasti toteutettuja. Tähän kuuluu ensinnäkin muutosten automatisoitu tuotantoon saattaminen ja sen aikana tapahtuvista virheistä palautuminen sopivalla rollback-politiikalla. Muutosten järjestelmään tulisi olla pieniä, yleisiä ja helposti peruutettavissa, jotta sovelluksen jatkuva kehittäminen on vaivatonta.
Hiottu toiminnallisuus vaatii myös sovelluksen ajonaikaista monitorointia, tapahtumalokien keräämistä, hälytysten hallintaa sekä virheisiin reagointia. Lisäksi järjestelmään tehtävien operaatioiden tulisi olla toteutettavissa koodimuodossa aina infrastruktuurin pystyttämistä myöten. Tämä edesauttaa järjestelmän yhdenmukaista hallintaa sekä muutosten ja virheiden jäljitettävyyttä.
Ohjelmistokehittäjän konkreettiset tehtävät pilvisovelluksen toiminnallisuuden hiomiseksi liittyvät tavanomaisesti DevOpsiin. Näitä ovat muun muassa CI/CD-putken rakentaminen ja ylläpito, palveluiden kontitus ja konttien orkestrointi esimerkiksi Kubernetesin välityksellä, infrastruktuurin pystytyksen automatisointi Infrastructure as Code (IaC) -järjestelmillä sekä monitorointi- ja hälytystyökalujen hallinnointi.
CI/CD-putken toteuttamiseksi pilvialustat tarjoavat omat palvelunsa. Näitä ovat esimerkiksi AWS CodePipeline, Azure Pipelines ja GCP:n Cloud Build. Mikään ei kuitenkaan estä käyttämästä pilvessä myös kolmannen osapuolen palvelua, kuten Gitlab CI/CD:tä tai Jenkisiä. Niiden etuna on se, ettei sovellus tai sen kehitystyö tule suoraan sidotuksi mihinkään tiettyyn pilvipalveluntarjoajaan.
Vastaavan valinnan eteen kehittäjä joutuu myös IaC-työkalujen parissa. IaC:tä varten AWS tarjoaa CloudFormation-palvelunsa, Azure puolestaan Azure Resource Managerin ja GCP Google Cloud Deployment Managerin. Näiden natiiviratkaisujen sijaan ohjelmistokehittäjät voivat käyttää myös esimerkiksi alustariippumatonta Terraformia.
Monitorointiin ja hälytysten asettamiseen jokaisella pilvialustalla on niin ikään oma ratkaisunsa. AWS:n palvelu tunnetaan nimellä AWS CloudWatch, Azuressa käytetään Azure Monitoria, kun taas GCP tarjoaa käyttöön Cloud Monitor -palvelun.
2. Tietoturva
Tietoturva pilvessä koostuu monesta tekijästä. Pilvitietoturvan suunnittelun kannalta tärkeimpiä osa-alueita ovat identiteetinhallinta, infrastruktuurin suojelu sekä datan suojaaminen.
Kaikki kolme suurta palvelualustaa tarjoavat työkaluja identiteetinhallintaan. Identiteetinhallinnalla tarkoitetaan pilvipalvelualustaa käyttävien ihmisten ja prosessien, kuten työkuormien, autentikointia ja autorisointia. Autentikoinnissa on kysymys tunnistautumisesta, kuten sisäänkirjautumista pilveen. Autorisoinnilla taas viitataan pääsy- ja käyttöoikeuksien myöntämiseen eri palveluihin.
Identiteetin ja pääsyoikeuksien hallinta tunnetaan lyhennenimellä IAM (Identity and Access Management). AWS ja GCP tarjoavat käyttöön omat IAM-palvelunsa. Azuressa puolestaan autentikaatiosta vastaa Azure Active Directory, kun taas pääsyoikeuksia hallinnoidaan Azure RBAC:n (Role-based Access Control) välityksellä. Pääsyoikeuksien hallinnassa hyvä tietoturva-arkkitehtuuri noudattaa vähimmän oikeuden periaatetta eli käyttäjälle tai prosessille myönnetään vain välttämättömät minimioikeudet kunkin pyydetyn tehtävän tai operaation toteuttamiseen.
Pilven infrastruktuurin hallinnoinnista päävastuu kuuluu itse pilvipalveluntarjoajalle. Tätä kutsutaan jaetun vastuun malliksi. Siinä pilvipalveluntarjoaja vastaa varsinaisen pilven ja sen fyysisen toteutuksen turvallisuudesta, kun taas pilvialustan käyttäjä vastaa turvallisuudesta pilven sisällä.
Pääsyoikeuksien hallinnan ohella ohjelmistokehittäjä voi suojella järjestelmänsä sisäistä infrastruktuuria toteuttamalla tietoturvallisia ratkaisuja järjestelmän joka tasolle. Pilvessä liikennettä voidaan kontrolloida sovelluksen hyödyntämissä verkoissa muun muassa tietoturvaryhmien, palomuurien, aliverkkojen, kuormatasaajien sekä reititintaulujen avulla. Lisäksi itse sovelluskoodin tulee tietysti noudattaa hyviä tietoturvakäytäntöjä. Sovellukselle ja sen riippuvuuksille on syytä myös suorittaa tasaisin väliajoin haavoittuvaisuustarkistuksia.
Toimenpiteisiin datan suojaamiseksi kuuluvat puolestaan turvallinen sertifikaattien ja avainten hallinta sekä datan kryptaus niin liikenteessä kuin levossakin. Kryptografisten avainten hallintaan on mahdollista hyödyntää pilvialustojen omia avaintenhallintapalveluja: AWS KMS:ää, Azure Vaultia tai GCP:n Cloud Key Managementia. Myös datan tallennussijaintia tulee hallinnoida esimerkiksi sen suhteen, mille maantieteelliselle alueelle dataa pilvessä päätyy, jotta voimassa olevia lainmukaisia säädöksiä noudatetaan.
GCP:n pilviarkkitehtuurikehys puhuu tietoturvan ohella myös yksityisyydestä ja määräystenmukaisuudesta. Yksityisyydellä tarkoitetaan sitä, että pilvisovellus käsittelee käyttäjän dataa, erityisesti sensitiivistä dataa, läpinäkyvästi ja tietoturvallisesti antaen siihen käyttäjälle täyden kontrollin. Määräystenmukaisuudella taas viitatataan siihen, että sovellus noudattaa tietojenkäsittelyssään ja tietoturvansa suhteen lakia kuin myös alakohtaisia standardeja tai sertifiointikriteerejä.
Tietoturvan hallinnointiin pilvipalvelualustat tarjoavat lisäksi omat tietoturvakeskuksensa, jotka automaattisesti analysoivat uhkia ja haavoittuvaisuuksia pilvessä sekä tuottavat raportteja. Esimerkiksi AWS Security Hubin alaisuuteen on mahdollista integroida niin uhkienhavainta-, haavoittuvaisuuksienhallinta-, palomuurihallinta-, datatietoturva- kuin IAM-tarkkailijapalvelutkin. Azuressa ensisijainen tietoturvapalvelu on taas Microsoft Defender for Cloud, joka etsii haavoittuvaisuuksia, antaa tietoturvasuosituksia ja havaitsee uhkia. GCP:n tietoturva- ja riskinhallinta-alusta kulkee puolestaan nimellä Security Command Center.
3. Toimintavarmuus
Toimintavarmuuden arkkitehtuuripilarilla viitataan siihen, että pilvisovellus toimii luotettavasti eri ajankohtina ja eri olosuhteissa, kuten suuren käyttäjäkuorman tai päivitysten alla. Toimintavarmuudessa oleellista on erityisesti käyttäjänäkökulma ja -kokemus, sillä sovelluksen pitää pystyä toteuttamaan kaikki ne lupaukset käyttäjilleen, joihin se on sitoutunut.
Toimintavarmuuden avainasemassa olevia käsitteitä ovat sovelluksen skaalautuvuus, korkea saavutettavuus (high availability) sekä monitorointi ja virheistä toipuminen. Skaalautuvuudella viitataan pilvisovelluksen kykyyn sopeutua muuttuviin käyttäjämääriin. Korkealla saavutettavuudella taas tarkoitetaan sitä, että sovellus on jatkuvasti toimintakunnossa eli käyttäjän saavutettavissa, jopa esimerkiksi hitaalla verkkoyhteydellä. Ideaalisesti sovellus osaa myös itse monitoroida tilaansa ja tervehtyä automaattisesti virhetilanteista, pieleen menneistä päivityksistä tai suorituskyvyn heikkenemisestä.
Skaalautuvuus jaetaan kahteen tyyppiin: vertikaaliseen ja horisontaaliseen skaalautuvuuteen. Vertikaalinen skaalautuvuus tapahtuu lisäämällä yksittäisten tietokoneinstanssien suorituskykyä, horisontaalinen puolestaan lisäämällä tietokoneiden määrää. Horisontaalinen skaalautuminen vaatii kehittäjältä enemmän suunnittelua, jotta sovelluksen toiminta voidaan jakaa useammille koneille. Tavallisesti tämä tarkoittaa esimerkiksi tilattomia ratkaisuja palvelinohjelmiston puolella.
Pilvipalvelualustat tarjoavat työkaluja erityisesti horisontaalisen skaalautuvuuden saavuttamiseksi ja automatisoimiseksi. Kaikki kolme suurta palveluntarjoajaa mahdollistavat esimerkiksi autoskaalausryhmien määrittelemisen sovelluksen tietokoneinstansseille. Nämä ryhmät skaalaavat virtuaalikoneiden määrää valituin kriteerein, kun käyttäjämäärät kohoavat tai laskevat. Autoskaalausryhmät voivat myös varmistaa, että toimivia palvelimia on aina käynnissä tietty vähimmäismäärä silloinkin, jos jokin niistä ajautuu vikatilaan.
Lisäksi pilvialustat tarjoavat Function as a Service -tyyppisiä serverless-ratkaisuja, joissa palvelinoperaatioita ajetaan yksittäisinä funktioina. Tällöin pilvialusta pitää huolen alla olevien resurssien riittävyydestä funktion tarpeisiin. Näitä FaaS-palveluita ovat muun muassa AWS Lambda, Azure Functions ja GCP:n Cloud Functions.
Monet pilvialustojen palveluista, kuten tietovarastot ja -kannat, osaavat myös skaalautua automaattisesti. Ohjelmistokehittäjä voi päättää käyttää esimerkiksi Azuren CosmosDB:n tai GCP:n Cloud BigTablen kaltaista skaalautuvaa NoSQL-tietokantaa. Relaatiotietokannan autoskaalaaminen onnistuu taas esimerkiksi Amazon Aurora -managerointityökalulla, joka pystyy luomaan niistä automaattisesti synkronoitavia read only -kopioita.
Korkean saavutettavuuden takaamiseksi pilvessä puolestaan hyödynnetään usein niin sanotuja saavutettavuusvyöhykkeitä (availability zone tai vain zone), joilla voidaan rajata vikojen vaikutuksia. Saavutettavuusvyöhykkeet ovat itsenäisiä datakeskuksia, joiden todennäköisyys ajautua yhtäaikaiseen virhetilanteeseen on minimoitu. Autoskaalausryhmiä on esimerkiksi mahdollista levittää useaan saavutettavuusvyöhykkeeseen, jolloin yksittäisen vyöhykkeen vikatilanne ei kaada koko sovellusta.
Maantieteelliset alueet (region) ovat vuorostaan pilvipalvelualustan laajempia fyysisiä datakeskuksia ympäri maapalloa. Yksittäiset saavutettavuusvyöhykkeet sijaitsevat aina yhden maantieteellisen alueen sisällä joko loogisina tai fyysisinä kokonaisuuksina. Replikoimalla sovellus globaalisti näille eri alueille se voidaan tuoda lähemmäs käyttäjää ja vähentää näin verkkoviivettä, jolloin pyyntöihin vastataan nopeasti hitaallakin yhteydellä. Tämä myös pienentää häiriöiden todennäköisyyttä entisestään, sillä jos sovellus kaatuu yhdellä maantieteellisellä alueella, se jatkaa yhä toimintaansa toisaalla.
4. Kustannusten optimointi
Pilvisovelluksen käyttämät palvelut tuottavat sovellukselle kustannuksia. Siksi niiden hyödyntämistä pitää optimoida tarkasti todelliseen tarpeeseen nähden. Kustannusten optimoinnissa tärkeää on kustannusten etukäteinen arviointi, oikeiden palvelujen valinta, palvelujen käytön ja skaalauksen suunnittelu sekä kustannusten monitorointi ja analysointi.
AWS, Azure ja GCP tarjoavat työkalut kustannusten suunnitteluun, arviointiin, monitorointiin ja analysointiin. Jokainen alusta sisältää ensinnäkin hintalaskurin, jolla voi etukäteen selvittää, paljonko valitut palvelut tulisivat maksamaan. Toiseksi kaikista niistä löytyy sisäänrakennettu kustannusanalyysityökalu, jolla voi tutkia, miten pilvessä sovelluksen kustannukset jakautuvat. Tämän pohjalta on myös mahdollista muodostaa tulevaisuuden ennusteita. Kustannusten jakautumista voidaan lisäksi seurata yksityiskohtaisesti asettamalla pilviresursseille niin sanottuja kustannusallokaatiotunnisteita tai -leimoja.
Alustat tarjoavat mahdollisuuden muodostaa myös budjetteja sovelluksen palvelujen käytölle. Näiden budjettien pohjalta voidaan puolestaan laukaista hälytyksiä, kun asetetut rajat ylittyvät tai uhkaavat ylittyä.
Kustannusoptimoinnin näkökulmasta palvelujen valinnassa pitää luonnollisesti kiinnittää huomiota siihen, kuinka paljon mikäkin palvelu maksaa. Lisäksi ne täytyy valita oikein suhteessa sovelluksen tarpeeseen ja todelliseen käyttöön. Palveluiden osalta pitää myös selvittää, toimiiko laskutus resurssien käytön mukaan vai tapahtuuko se kiinteästi, vaikka palvelua ei käytettäisi.
Jotta palvelut eivät laskuta tyhjäkäynnistä, kannattaa etenkin harvakseltaan ajautuville operaatioille etsiä vaihtoehtoja. Esimerkiksi kiinteiden palvelimien sijaan voi olla järkevää hyödyntää vaikkapa FaaS-palveluita, joista maksetaan vain käyttöön perustuen. Joustavat ja vikasietokykyiset sovellukset voivat myös käyttää hyväksi niin sanottuja spot-instansseja, jotka valjastavat halvalla väliaikaista käyttämätöntä tietokonekapasiteettia pilvessä. Toisaalta suurilla käyttäjämäärillä ja datankäsittelyn volyymilla kiinteä laskutus voi olla järkevä ja myös halvin vaihtoehto.
Käytettyjen palveluiden asetuksia on lisäksi mahdollista säätää kustannusten hallitsemiseksi. Esimerkiksi autoskaalaamiselle voidaan asettaa rajat, kuinka suureen kokoon resurssien käytön, kuten tietokoneinstanssien määrän, on sallittua kasvaa. Pilveen on myös mahdollista asettaa resurssikiintiöitä, jotta laskutettavia palveluja ja resursseja ei varata vahingossa käyttöön ylenmäärin.
5. Suorituskyky
Suorituskyvyn takaamiseksi pilvisovelluskehittäjän pitää pohtia muun muassa sopivien palvelujen ja resurssien valintaa, sovelluksen skaalautuvuutta sekä palveluiden maantieteellistä sijaintia. Palveluiden valinnassa on usein kysymys vertikaalisesta skaalaamisesta: esimerkiksi suuremmalla tietokoneinstanssityypillä saa enemmän suorituskykyä yksittäiselle palvelimelle. Sovelluksen skaalautuvuuden suunnittelussa tulee toisaalta pohtia horisontaalista skaalautuvuutta, eli miten rinnakkaisen laskennan määrää voidaan kasvattaa työkuorman kohotessa. Maantietellisessä sijainnissa taas on merkityksellistä verkkoviive palvelun ja käyttäjän välillä.
Palveluiden valinnassa täytyy suorituskyvyn kannalta miettiä esimerkiksi erilaisia laskentainstanssivaihtoehtoja. Pilvipalvelualustat tarjoavat luonnollisesti sovelluskehittäjälle käyttöön erikokoisia ja eri periaatteilla optimoituja tietokoneinstansseja. Näitä on mahdollista hankkia AWS:n EC2-instansseina, Azuren varattuina virtuaalikoneina tai GCP:n Compute Enginen instansseina. Autoskaalausta hyödyntämällä niihin saadaan myös aikaiseksi horisontaalista skaalautuvuutta.
Dedikoitujen virtuaalikoneiden ohella pilvialustat mahdollistavat kuitenkin myös erilaisia serverless-laskentaratkaisuja. Näitä ovat aiemmin mainitut FaaS-palvelut mutta myös konttipohjaiset palvelut, kuten AWS Fargate, Azure Container Instances ja GCP:n Cloud Run. Konttien orkestrointiin jokainen alusta puolestaan tarjoaa oman Kubernetes-palvelunsa ja AWS lisäksi Kubernetesista riippumattoman Amazon Elastic Container Servicen.
Laskentainstanssien ohella suorituskyvyn varmistamiseksi sovellukseen täytyy valita sopivat tietovarasto ja -kantaratkaisut. Erilaisia tietovarastoja löytyy tiedostojärjestelmistä, laajasti skaalautuviin objektivarastoihin ja tietokoneinstansseihin pulttautuvista kiintolevyistä hitaisiin data-arkistoihin. Tietokannoista on vuorostaan tarjolla laaja määrä erilaisia relaatiotietokantoja, erityyppisiä NoSQL-tietokantoja kuin myös nopeita muistitietokantoja, sekä automaattisesti ylläpidettyinä että itse hallinnoituina versioina. Nämä kaikki täytyy valita varastoitavan datan muodon, määrän, käyttötarkoituksen sekä luku- ja kirjoitustarpeiden mukaan.
Suorituskykyä on myös mahdollista optimoida pilvessä tietoverkkojen osalta. Kuormantasaajien lisäksi voidaan hyödyntää esimerkiksi Internetin reunalla lähellä käyttäjää toimivaa sisällönjakeluverkkoa (CDN, content delivery network) staattisten tiedostojen nopeaan palvelemiseen. Erilaisia pilvialustojen tarjoamia CDN-palveluja ovat muun muassa Amazon CloudFront, Azure CDN sekä GCP:n Cloud CDN. Monta maantieteellistä aluetta kattavalla arkkitehtuurilla voidaan niin ikään tuoda palveluita lähemmäs käyttäjää, vähentää viivettä ja parantaa näin sovelluksen suorituskykyä.
Pilvisovellusten suorituskykyä voi entisestään parantaa hyödyntämällä suorituskykyprofilointityökalua. Esimerkiksi Amazon CodeGuru ja GCP:n Cloud Profiler etsivät suorituskykypullonkauloja sovelluksesta aina koodirivejä myöten. Azuren Application Insights Profiler pystyy puolestaan profiloimaan .NET-sovelluksien suorituskykyä.
6. Järjestelmän suunnittelu ja kestävyys
Viiden edellä mainitun arkkitehtuuripilarin lisäksi GCP nostaa kuudenneksi pilariksi järjestelmän suunnittelun. AWS taas mainitsee erillisenä arkkitehtuuriperiaatteena sovelluksen kestävyyden ekologisesta, taloudellisesta ja yhteiskunnallisesta näkökulmasta.
Järjestelmäsuunnittelun ohjenuorana GCP linjaa, että arkkitehtuuria pohtiessa pitäisi dokumentoida sovelluksen vaatimukset ja tehdä valintoja näiden vaatimusten bisneskriittisyyden mukaan. Sovelluksen osien pitäisi puolestaan toimia mahdollisimman itsenäisesti ja erillään, jotta järjestelmä pysyy mahdollisimman yksinkertaisena ja skaalautuvana. Tämä edesauttaa myös tehokasta virhetilanteiden rajaamista sekä sovelluksen osien nopean tuotantoonsaattamista. Viimeisenä vinkkinä GCP:n arkkitehtuurikehys kehottaa käyttämään niin paljon hallinnoituja palveluita kuin mahdollista, jotta ohjelmistokehittäjät voivat keskittyä ensisijaisesti ohjelmistokehitykseen.
Sovelluksen kestävyyden osalta AWS:n parhaat käytännöt puolestaan keskittyvät pitkälti pilvisovelluksen ympäristökestävyyteen ja hiilijalanjäljen rajoittamiseen. Kuten tietoturvan kohdalla, pilvipalveluntarjoajan ja sovelluskehittäjän välillä vallitsee myös ympäristökestävyyden suhteen jaetun vastuun malli: pilvipalveluntarjoaja on vastuussa pilven ja sen infran kestävyydestä, kun taas sovelluskehittäjä on vastuussa sovelluksen resurssien käytön kestävyydestä.
AWS:n arkkitehtuurikehys mainitsee sovellusten ympäristökestävyyden hallintaa varten muutamia eri keinoja, jotka ovat ympäristövaikutusten mittaaminen ja arvioiminen, kestävyystavoitteiden asettaminen sekä varattujen palveluiden käyttöasteiden maksimointi. Lisäksi se kehottaa omaksumaan uusia vähäpäästöisempiä teknologioita vähitellen ja ketterästi, käyttämään hallinnoituja palveluja sekä tukemaan esimerkiksi vanhoja laitteita, jotta sovellus ei painosta käyttäjäänsä ostamaan uusinta mallia.
Loppusanat
Tässä blogisarjan ensimmäisessä osassa on esitelty AWS-, Azure- ja GCP-pilvipalvelualustojen sovellusarkkitehtuurin periaatteet, joita ne suosittelevat pilvessä seurattavan. Riippumatta siitä, minkä palveluntarjoajan alustan varaan ohjelmistokehittäjä rakentaa pilvipohjaisen web- tai mobiilisovelluksensa, hänen tulisikin pitää huolta samojen keskeisten arkkitehtuuristen parhaiden käytäntöjen noudattamisesta.
Tekstissä on annettu lukijalle vinkkejä esimerkkejä siitä, mitä asioita ohjelmistokehittäjän pitäisi ottaa huomioon eri arkkitehtuurivaatimusten suhteen ja millaisia palveluita kolme suosituinta alustaa niiden toteuttamiseksi tarjoavat. Seuraavassa blogisarjan osassa perehdytään tarkemmin siihen, mitkä ovat pilvessä ohjelmistokehittäjälle kaikkein olennaisimmat palvelut ja niiden käyttötarkoitukset. Liikkeelle lähdetään siitä, millaisia palveluita ja millaista infrastruktuuria kehittäjän kannattaa aivan ensimmäiseksi hyödyntää, kun palvelinsovellusta ryhdytään suunnittelemaan pilveen puhtaalta pöydältä. Tutkimme myös erityisesti, millaisia vaihtoehtoja kehittäjällä on tarjolla suurimpien alustajättien tapauksissa.
Blogisarjan seuraavassa osassa tutustutaan tarkemmin kolmen suurimman pilvipalvelun arkkitehtuurisuosituksiin.