Primary tabs

Miksi ja miten IaC muuttaa kehitystiimiläisen elämää?

Viime vuosina digitaalisten palvelujen kehitys on siirtynyt valtaosaltaan pilveen. Siellä tuottavuutta lisää erityisesti PaaS/Serverless-palvelujen käyttö, koska niillä voidaan serveritason tunkkaamisen sijaan keskittyä tuottamaan bisneslogiikkaa. Samaan aikaan tiimit ovat alkaneet toimimaan enemmän DevOps-tyylisesti, eli kehitystyön lisäksi tiimi huolehtii myös palvelun eri ympäristöjen ylläpidosta tuotantoon asti. 

Perinteisten Ops-tekijöiden osaaminen ei yleensä ole PaaS/Serverless-alueella, ja jos DevOps-tiimi joutuisi siirtämään tuotoksiaan toisen osapuolen ylläpidettäväksi, muodostuisi tästä helposti pullonkaula tiimin tuottavuudelle. Lisäksi PaaS/Serverless-palvelujen käyttöönotto ja ylläpito on yleensä kohtuullisen helppoa, joten erillisen osapuolen käyttö tähän tarkoitukseen on yhä epäsuositumpaa. Näin ollen tiimeissä alkaa olemaan vaatimuksena, että niissä osataan pilvi-infran hallinta.

Jokaisella pilvikehittäjällä ja -arkkitehdillä pitää alkaa olla osaamista IaC-välineistä.

Pilvialustat ovat alusta alkaen tarjonneet API-rajapintoja ja komentorivityökaluja (CLI), joilla palveluja on voinut pystyttää ja konfiguroida. Sen lisäksi viime vuosina ovat voimakkaasti kehittyneet Infrastructure as Code -välineet (IaC), joissa pilvi-infra tuotetaan erilaisilla templaateilla. Näistä keskeisimmät esimerkit ovat AWS:n CloudFormation ja Azuren ARM sekä usean eri pilvialustan kanssa toimiva Terraform. Kaikki nämä työkalut ovat Suomessa jo täydessä käytössä lukuisissa edistyneemmissä organisaatioissa. IaC-välineillä pystyy helposti tekemään kaikista kehitettävän palvelun ympäristöistä samanlaisia. Lisäksi kun IaC-templateja on muutaman tehnyt, niitä on yleensä helppo uudelleenkäyttää seuraavissa projekteissa.

Näillä eväillä pääset alkuun IaC:n kanssa

Näin ollen jokaisella pilvikehittäjällä ja -arkkitehdillä pitää alkaa olla osaamista IaC-välineistä. Koska yllä mainittujen lisäksi välineitä on lukuisia muita, millä kriteereillä kannattaisi valita se ensimmäinen, jonka kautta voisi lähteä tutustumaan aiheeseen? Jos olet jo kehittänyt yhdellä tietyllä pilvialustalla ja etenkin jos et ole haikailemassa muulle alustalle, valitse kyseisen alustan oma IaC-väline eli ARM tai CloudFormation. Jos taas tiedät, että käytät jatkossa useampaa pilvialustaa, voi olla järkevää aloittaa Terraformista. Se näet tarjoaa providereitaan käytännössä kaikille tunnetuimmille alustoille.

IaC-välineet vaativat kokemusta pilvipalveluista

Miten sitten olisi fiksuinta aloittaa opiskelu ja mistä saa lisätietoa? Käyn seuraavassa vaihtoehtoja läpi väline kerrallaan. Huomioi kuitenkin, että IaC-välineet vaativat kokemusta pilvipalveluista, eli pilvipalvelujen käyttämisen perusteet pitäisi olla hanskassa ennen tähän aiheeseen perehtymistä.

Terraform

Hyvän peruskäsityksen välineestä saat, kun käyt läpi Terraformin tutoriaalin. Siitä löytyy versiot eri pilvialustoille (AWS, Azure, GCP). 

Yleensä tämän jälkeen pystyy jo tekemään asioita perustasolla ja enemmän huomiota kannattaa kiinnittää pilvikohtaisiin providereihin. Niiden lista löytyy täältä.

Jos siis teet palveluja esimerkiksi GCP-alustalle, edellä mainitusta provider-listasta löytyy linkki sinne

Kun kaipaat syvempää tietoa ja tosi elämän kokemuksia, kannattaa lukea tämä Gruntworkin julkaisema blogi-postauksien sarja.

Terraformista löytyy myös useita maksullisia verkkokursseja, esimerkiksi Udemyltä.

Azure Resource Manager eli ARM

Microsoft tarjoaa palveluistaan eli myös ARM:stä varsin kattavan dokumentaation eli se on yksi mahdollinen aloituspaikka.

Overview’n lukemisen jälkeen kannattaa edetä sivustolla Quickstartin kautta Tutorialeihin.
Toinen vaihtoehto on tämä Microsoftin tutoriaali.

Pari muutakin löytyy samalta Microsoftin sivustolta.

AWS CloudFormation ja CDK

AWS:n IaC-väline on CloudFormation, mutta parin viime vuoden aikana AWS on kehittänyt myös Cloud Development Kit (CDK) -nimisen työkalun, jossa tavallisella ohjelmointikielellä (JavaScript, TypeScript, Python, Java ja C#) tuotetaan CloudFormation templateja. Eli CDK:ta käytettäessä on hyvä olla edes perustason ymmärrys CloudFormationista.

CloudFormationin opiskelun voit aloittaa esimerkiksi AWS:n dokumentaation avulla.

Suosittelen kuitenkin tätä Udemystä löytyvää maksullista kurssia. Nimestään huolimatta siinä lähdetään alkeista eikä lopulta päädytä ehkä ihan master-tasolle.

CDK:sta löytyy myös AWS:n tutoriaali, mutta suosittelen ennemmin tätä.

Muita potentiaalisia IaC-välineitä ja niiden tutoriaaleja

Pulumi: Jos haluat tehdä IaC-koodisi templaten sijaan ohjelmointikielellä ja pelkkä AWS-alustan tuki ei riitä, kannattaa tutustua Pulumiin.

Serverless framework: Jos keskityt täysin Serverless-toteutuksiin, kannattaa tutustua tähän.

Jos taas olet suuntautumassa enemmän IaaS:iin tai jopa onPremiseen, niin tässä on lista potentiaalisista välineistä tutoriaaleineen:

Kirjoittaja toimii CGI:llä pilvi- ja DevOps-arkkitehtina.  

Kirjoittajasta

Andreas Asuja

Andreas Asuja

Director Consulting Expert

Toimin pilvi- ja DevOps-arkkitehtina Retail & Transportation -yksikössä Cloud Native -tiimissä.

Kirjoita kommentti

Comment editor

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
Blogi-kommentoinnin ohjeet ja käyttöehdot