Konttiteknologia – mitä kontit ovat ja mitä hyötyä niistä on?

Oletko törmännyt kontteihin (englanniksi containers) ja miettinyt, mitä ne oikein ovat?

Tässä kirjoituksessa kerron, mitä kontit ovat. Saat vastaukset seuraaviin kysymyksiin: 

  • Mitä kontit ovat? 
  • Miten kontit eroavat virtuaalipalvelimista? 
  • Mitä hyötyä konteista on? 
  • Millaisia käyttöskenaarioita konteille on?
kontit

Kun olet lukenut tämän artikkelin, ymmärrät perusteet konttiteknologiasta tai konteista ja ymmärrät konttien hyötyjä. 

Otetaan siis ensimmäinen aihe käsiteltäväksi.

Mitä kontit ovat?

Konttien avulla ohjelmille voidaan tarjota standardoitu ympäristö, jossa niitä voidaan ajaa.

Kun ohjelma asetetaan konttiin, sitä voidaan siirrellä koodaajan koneelta testiympäristöön tai staging-ympäristöön ja sieltä tuotantoon. Kontteja voidaan siirrellä helposti myös omasta konesalista julkiseen pilveen.

Kontit ovat logistiikan perusyksiköitä 

Kontit ratkaisevat saman ongelman, mikä rahtifirmoilla on ollut. Ennen konttien keksimistä tavaran kuljettaminen oli hyvin kallista ja hankalaa, koska tavara piti pakata aina uudelleen, kun se siirretiin rekasta laivaan.

Yhdysvaltalainen rekkakuski nimeltä Malcolm McLean keksi 1950-luvulla, että laivojen lastaaminen olisi paljon tehokkaampaa, jos laivoihin voisi lastata kokonaisia rekkoja tai oikeastaan niiden kuormia purkamatta lastia välillä.

McLeanin kehittämistä merikonteista tuli erittäin suosittuja ja hänen firma, jonka nimi oli Sea-Land, menestyi loistavasti. 

kontit helpottavat rahtiliikennettä
Kontit mullistivat rahtiliikenteen. Ohjelmistokontit tekevät saman it-infralle.

Rahdin kuljetus muuttui paljon halvemmaksi, kun rahti sijoitettiin konttiin, koska samaa pakkausta voitiin käyttää niin maalla kuin merelläkin. Kontti liikkuu niin rekan kyydissä kuin laivassa.

Satamissa konttinosturit siirtelevät näitä logistiikan perusyksiköitä sujuvasti paikasta toiseen.

Softakonteissa on kysymys aivan samasta asiasta.

Softakontit ovat standardoitu tapa pakata ohjelmisto siten, että sitä voidaan siirtää paikasta toiseen ilman, että ohjelmistoa tarvitsee muokata.

Softakontit ovat standardoitu tapa pakata ohjelmisto siten, että sitä voidaan siirtää paikasta toiseen ilman, että ohjelmistoa tarvitsee muokata.

Miksi softa tarvitsee konttia?

Jotta ohjelmoijan tuottamaa koodia voi ajaa, tarvitaan koodin lisäksi paljon muutakin.

Koodi on riippuvainen erilaisista kirjastoista, lisäosista ja asetuksista. Ajokelpoinen ohjelmisto koostuu siis varsinaisen koodin lisäksi monista komponenteista. 

Monelle tulee varmasti mieleen, että palvelimethan ovat sitä varten, että ne tarjoavat ohjelmille niiden tarvitseman ympäristön. Miksei vain käytetä virtuaalipalvelimia tähän? 

Hyvä kysymys. Käsitellään siis seuraavaksi sitä, miten kontit eroavat virtuaalipalvelimista.

Miten kontit eroavat virtuaalipalvelimista? 

Myös virtuaalipalvelimet sisältävät kaiken, mitä tarvitaan, jotta ohjelmaa voi ajaa. Virtuaalipalvelin sisältää kuitenkin myös paljon muuta. 

Virtuaalipalvelin on pohjimmiltaan tiedosto, joka sisältää kaiken tarvittavan palvelimen ajamiseksi.  Tyypillisen virtuaalipalvelimen imagen koko on noin 1 GB.

Hyvin suunniteltu kontti-image voi olla jopa 100 kertaa pienempi kuin virtuaalipalvelin.

Virtuaalipalvelimessa on paljon ohjelmia ja kirjastoja, joita varsinaiset hyötykuormat eivät koskaan tarvitse.

Hyvin suunniteltu kontti-image voi olla jopa 100 kertaa pienempi kuin virtuaalipalvelin.

Suurin osa virtuaalipalvelimen sisällöstä on hukkaa. Jos virtuaalipalvelimia siirrellään verkossa konesalista toiseen tai konesalin ja pilven välillä, siirretään samalla paljon tarpeetonta tietoa. 

Virtuaalipalvelimen ja konttien eroja on helpompi ymmärtää, kun katsotaan, mitä ne sisältävät. 

Seuraavassa kuvassa on fyysinen palvelin, jossa ajetaan virtuaalipalvelimia.  

virtuaalikoneessa on aina oma käyttöjärjestelmä
Jokainen virtuaalikone sisältää oman käyttöjärjestelmän.

Kuvasta näkee, että fyysinen palvelin tarvitsee käyttöjärjestelmän. Tämän päälle asennetaan hypervisor-ohjelmisto, joka mahdollistaa virtuaalipalvelimien ajamisen.  

Käytännössä esimerkiksi VMware ESX:n hypervisor sisältää käyttöjärjestelmän välttämättömät komponentit (kernelin).

VMwaren tapauksessa fyysisen palvelimen käyttöjärjestelmän ja hypervisorin muodostama kokonaisuus on erittäin hyvin optimoitu ja tehokas. Myös Microsoftin Hyper-V-toteutus on hyvin tehokas. 

Jokainen virtuaalipalvelin kuitenkin sisältää oman käyttöjärjestelmän, jonka päällä varsinaisia sovelluksia ajetaan. 

Seuraava kuva esittää kontteja. Kuvasta näkee, että konteilla ei ole omaa käyttöjärjestelmää. Kontti sisältää siis sovelluksen lisäksi vain välttämättömät riippuvuudet. 

Kontti ei sisällä käyttöjärjestelmää
Kontit eivät tarvitse omaa käyttöjärjestelmää.

Ehkä mietit silti, mitä hyötyä konteista on virtuaalikoneisiin verrattuna.  

Käsitellään tätä asiaa seuraavaksi. 

Mitä hyötyä konteista on?

Konttien ansiosta sovellus tarvitsee vähemmän resursseja. 

Konttien suorituskyky on virtuaalipalvelinta parempi. Virtuaalipalvelin sisältää täysiverisen käyttöjärjestelmän, joka kuluttaa resursseja.

Joidenkin testien perusteella virtuaalipalvelimen päällä ajettava sovellus kuluttaa noin 30% enemmän resursseja kuin sama sovellus, jota ajetaan kontissa.

Koska konttiteknologian avulla it-infran automaatioastetta on helppo nostaa, tarvitaan ympäristön pyörittämiseen vähemmän käsipareja.

Tilaa ILMAINEN opas

IT-strategia opas

IT-strategian laatimiseksi

Tilaa ilmainen opas, jossa kerron, miten voit laatia käytännöllisen ja liiketoimintalähtöisen IT-strategian.

 

 

Konttien avulla voidaan standardoida it-ympäristöä

Yksi selkeä konttien etu virtuaalipalvelimiin verrattuna on ympäristön standardointi.

Kontin ansiosta kehitys-, testaus ja tuotantoympäristö voivat kaikki olla samanlaisia. Ympäristöjen erilaisuus on iso ongelma perinteisessä maailmassa.  

Perinteisesti kehitysympäristö ei useinkaan vastaa tuotantoympäristöä, jonka vuoksi moni ongelma selviää vasta tuotannossa. Konttien ansiosta tämä ongelma pienenee rajusti.  

Koska konttien avulla ympäristö voidaan standardoida, konttia on helpompi liikuttaa konesalista toiseen kuin virtuaalikonetta. 

Kontin viemä levytila on vain joitakin prosentteja virtuaalikoneen levytilasta. Sekä virtuaalikone että kontti ovat pohjimmiltaan tiedostoja.

Koska kontin tiedosto (image) on erittäin paljon kevyempi virtuaalipalvelimen muodostava tiedosto, sen siirto esimerkiksi konesalista pilveen on paljon nopeampaa kuin virtuaalipalvelimen. 

Kontit mahdollistavat ohjelman päivittämisen pala kerralla

Yksi kontti sisältää usein vain ohjelman tietyn ominaisuuden. Kokonainen ohjelma vaatii siis useita kontteja. 

Ohjelman jakautuminen useisiin kontteihin mahdollistaa ohjelman päivittämisen pala kerrallaan. Tämä helpottaa ja nopeuttaa ohjelmistokehitystä. 

Kun ohjelmaa päivitetään pala palalta, on ongelmatilanteissa helppo palata vanhaan ympäristöön. Koska vain yksi osa isoa ohjelmaa päivitettiin, ympäristö saadaan alkuperäiseen tilaan palauttamalla yksi ainoa osa entiselleen. 

Konttien avulla roll-back on siis paljon helpompaa kuin perinteisen monoliittiohjelman tapauksessa, jossa ongelmatilanteissa joudutaan palauttamaan kokonainen ohjelmisto 

 

Konttien avulla voidaan rakentaa luotettava ympäristö

Konttiympäristö mahdollistaa useiden samanlaisten konttien yhtäaikaisen ajamisen. Konttien orkesterointiohjelmien avulla klusterien rakentaminen helpottuu. Tämä helpottaa korkean käytettävyyden ympäristöjen rakentamista.  

Koska konteista on selvästi paljon hyötyä, ehkä mietit, missä kontteja sitten kannattaa käyttää. 

Käsitellään tätä seuraavaksi. 

Mihin kontit sopivat?

Hybrid cloud -ympäristössä organisaatio on liittänyt omaan konesaliinsa yhden tai useampia pilvipalveluja. Konesali voidaan liittää esimerkiksi Microsoftin Azure -pilveen tai Amazonin AWS-palveluun. 

Koska eri pilvipalvelut tarjoavat eri suorituskyvyllä varustettuja palvelimia ja erilaisia hintoja, olisi houkuttelevaa valita ajoympäristö aina kulloisenkin tarpeen mukaan. 

Ylläpitäjillä on siis hybrid cloud -ympäristön ansiosta enemmän mahdollisuuksia ajaa virtuaalikoneita eri paikoissa. Näin on ainakin teoriassa. 

Käytännössä koneiden siirtäminen ympäristöstä toiseen ei välttämättä ole kovinkaan helppoa. Kontit muuttavat tilanteen. Kontit tarjoavat aidosti standardin ajoympäristön sovelluksille.

Ylläpitäjät voivat nyt siirrellä kuormia pilvestä ja konesalista toiseen aina tarpeen mukaan. 

Kontit sopivat hyvin ketterään sovelluskehitysmalliin, jossa ohjelmistoon tehdään usein pieniä muutoksia. Näin koko ohjelmaa ei tarvitse kääntää ja viedä uudelleen tuotantoon. Ainoastaan muutettu osuus päivitetään. 

Mitkä olisivat sopivia käytännön skenaarioita konteille? 

 

3 käyttöskenaariota konteille 

  1. Jos uutta sovellusta aletaan kirjoittamaan puhtaalta pöydältä, ja sovellus halutaan rakentaa mikropalveluiden (micro services) varaan, kontit ovat hyvin kiinnostava vaihtoehto palveluiden alustaksi.
  2. Jos sovellusta halutaan kehittää jatkossa mikropalveluiden varaan, voi olla järkevää siirtää vanha monoliittisovellus virtuaalikoneelta konttiin. Tällöin saadaan konttien etuja heti käyttöön.
  3. Konesalin virtuaalikoneet halutaan siirtää pilveen. Kuten totesin aiemmin, esimerkiksi VMware- virtuaalikoneiden siirtäminen esimerkiksi Azureen ei ole ihan suoraviivaista. Jos sovellukset sen sijaan siirretään kontteihin, niiden siirto pilveen helpottuu huomattavasti, koska ajoympäristö saadaan vakioitua.

Konteista on siis paljon hyötyä. Moni IT-ammattilainen on varmasti miettinyt, miten kuormia päästään oikeasti siirtämään konesalin ja pilvien välillä.

Kontit ovat vastaus tähän ongelmaan. Kontit myös helpottavat ohjelmistokehitystä ja yksinkertaistavat ohjelmien tuotantoon vientiä.

Olen jättänyt tarkoituksella käsittelemättä varsinaisia konttiteknologian käyttöön liittyviä tuotteita. Tulevissa kirjoituksissa käsittelen mm. Docker- ja Kubernets -teknologioita, joita käytetään yleisesti konttien ajamiseen ja hallintaan käytännössä.

Jos haluat saada ilmoituksen uusista kirjoituksista, tilaa blogini.

Tilaa uutiskirjeeni

Saat tiedon uusista artikkeleista suoraan sähköpostiisi.

Annan luvan tallentaa tietoni ja hyväksyn tietosuojakäytännön.