LFCA: Opi säilöjen käytön peruskäsitteet – Osa 22


Ajan myötä, kun sovellusten nopean testauksen ja käyttöönoton kysyntä kasvoi yhdessä nopeampien liiketoimintasyklien kanssa, organisaatiot joutuivat innovoimaan pysyäkseen nopeatempoisessa liiketoimintaympäristössä.

Pyrkimys modernisoida sovelluksia ja rakentaa uusia ketterien työnkulkujen luomiseksi johti konttien käyttökonseptiin. Konttiteknologia on lähes yhtä vanhaa kuin virtualisointi. Säiliöt eivät kuitenkaan herättäneet suurta jännitystä ennen kuin Docker räjähti näyttämölle vuonna 2013 ja herätti kiihkeän kiinnostuksen kehittäjien ja muiden IT-ammattilaisten keskuudessa.

Tällä hetkellä kaikki jättimäiset teknologiayksiköt, kuten Google, Amazon, Microsoft ja Red Hat, ovat hypänneet mukaan.

Miksi kontit?

Yksi kehittäjien kohtaamista haasteista on laskentaympäristöjen erot ohjelmistokehityksen jokaisessa vaiheessa. Ongelmia syntyy, kun ohjelmistoympäristö vaihtelee vaiheittain.

Esimerkiksi sovellus voi toimia saumattomasti testausympäristössä käyttämällä Python 3.6:ta. Sovellus kuitenkin käyttäytyy oudosti, palauttaa joitakin virheitä tai kaatuu kokonaan, kun se siirretään tuotantoympäristöön, jossa on Python 3.9.

Kontit tulivat paikalle vastaamaan tähän haasteeseen ja varmistamaan, että sovellukset toimivat luotettavasti siirrettäessä yhdestä laskentaympäristöstä toiseen ohjelmistokehityksen jokaisessa vaiheessa – kehittäjien PC:stä tuotantoympäristöön asti. Eikä vain ohjelmistoympäristö voi aiheuttaa tällaisia epäjohdonmukaisuuksia, vaan myös erot tietoturvapolitiikoissa.

Mitä kontit ovat?

Säiliö on erillinen ohjelmistoyksikkö, joka pakkaa kaikki binäärikoodit, kirjastot, suoritettavat tiedostot, riippuvuudet ja konfiguraatiotiedostot yhdeksi paketiksi siten, että sovellus toimii sujuvasti siirrettynä laskentaympäristöstä toiseen. Siinä ei ole käyttöjärjestelmän kuvaa, mikä tekee siitä kevyen ja helposti kannettavan.

Säilökuva on itsenäinen, kevyt ja suoritettava paketti, joka niputtaa kaiken sovelluksen suorittamiseen tarvittavan. Suorituksen aikana säilökuva muuttuu säilöksi. Esimerkiksi Dockerin tapauksessa Docker-kuvasta tulee Docker-säilö, kun se suoritetaan Docker Enginessä. Docker on ajonaikainen ympäristö, jota käytetään konttisovellusten rakentamiseen.

Säilöt toimivat täysin erillään taustalla olevasta käyttöjärjestelmästä, ja säiliösovellukset toimivat aina johdonmukaisesti laskentaympäristöstä tai infrastruktuurista riippumatta. Tästä syystä kehittäjä voi kehittää sovelluksen mukavasti tämän kannettavan tietokoneen avulla ja ottaa sen helposti käyttöön palvelimella.

Käynnissä olevien säiliöiden johdonmukaisuus ja luotettavuus antavat kehittäjille mielenrauhan, kun he tietävät, että heidän sovelluksensa toimivat odotetulla tavalla riippumatta siitä, missä ne on otettu käyttöön.

Miten säilöt eroavat virtuaalikoneista?

Säilöiden ja virtuaalikoneiden yhteinen asia on, että ne toimivat virtualisoidussa ympäristössä. Säiliöinti on tietyssä mielessä virtualisoidun teknologian muoto. Säilöt eroavat kuitenkin virtuaalikoneista monella tapaa.

Virtuaalikone, jota kutsutaan myös virtuaali-instanssiksi tai lyhyesti VM:ksi, on fyysisen palvelimen tai tietokoneen emulointi. Virtualisointi on tekniikka, joka mahdollistaa virtuaalikoneiden luomisen. Virtualisointikonsepti juontaa juurensa 1970-luvun alkuun ja loi pohjan pilviteknologian ensimmäisen sukupolven syntymiselle.

Virtualisoinnissa abstraktiokerros luodaan metallisen palvelimen tai tietokonelaitteiston päälle. Tämä mahdollistaa yhden palvelimen laitteistoresurssien jakamisen useiden virtuaalikoneiden kesken.

Abstraktiokerroksen tekemiseen käytettyä ohjelmistoa kutsutaan hypervisoriksi. Hypervisor abstrakti virtuaalikoneen ja vieraskäyttöjärjestelmän varsinaisesta metallista tai tietokonelaitteistosta. Siten virtuaalikone istuu hypervisorin päällä, mikä antaa laitteistoresurssit saataville abstraktiokerroksen ansiosta.

Virtuaalikoneet käyttävät täydellistä käyttöjärjestelmää (vieraskäyttöjärjestelmä), joka on riippumaton taustalla olevasta käyttöjärjestelmästä (isäntäkäyttöjärjestelmä), johon hypervisor on asennettu. Vieraskäyttöjärjestelmä tarjoaa sitten alustan sovellusten rakentamiseen, testaamiseen ja käyttöönottoon kirjastojen ja binaarien rinnalla.

[ Saatat pitää myös: KVM:n asentaminen CentOS/RHEL 8:aan ]

Hypervisoreita on kahdenlaisia:

Tämä hypervisor asennetaan suoraan fyysiseen palvelimeen tai taustalla olevaan laitteistoon. Hypervisorin ja tietokonelaitteiston välissä ei ole käyttöjärjestelmää, joten tagin nimi paljasmetallinen hypervisor. Se tarjoaa erinomaisen tuen, koska resursseja ei jaeta isäntäkäyttöjärjestelmän kanssa.

Tehokkuutensa vuoksi tyypin 1 hypervisoreita käytetään enimmäkseen yritysympäristöissä. Tyypin 1 hypervisor-toimittajia ovat VMware Esxi ja KVM.

Tätä pidetään myös isännöitynä hypervisorina. Se asennetaan isäntäkäyttöjärjestelmän päälle ja jakaa taustalla olevat laitteistoresurssit isäntäkäyttöjärjestelmän kanssa.

Tyypin 2 hypervisorit ovat ihanteellisia pieniin laskentaympäristöihin ja niitä käytetään enimmäkseen käyttöjärjestelmien testaamiseen ja tutkimukseen. Tyypin 2 hypervisor-toimittajia ovat VMware Workstation Pro.

Virtuaalikoneet ovat yleensä kooltaan suuria (voivat viedä useita gigatavuja), hitaasti käynnistyvät ja pysähtyvät ja kuluttavat paljon järjestelmäresursseja, mikä johtaa jumiutumiseen ja hitaaseen suorituskykyyn rajallisten resurssien vuoksi. Virtuaalikonetta pidetään sellaisenaan isona ja siihen liittyy korkeita yleiskustannuksia.

Säiliöt

Toisin kuin virtuaalikone, säilö ei vaadi hypervisoria. Säilö sijaitsee fyysisen palvelimen ja sen käyttöjärjestelmän päällä ja jakaa saman ytimen kuin käyttöjärjestelmä, muun muassa kirjastot ja binaarit. Samassa järjestelmässä voi toimia useita säilöjä, joista jokainen suorittaa omat sovelluksensa ja prosessinsa muista. Suosittuja konttialustoja ovat Docker ja Podman.

Toisin kuin virtuaalikoneet, säiliöt toimivat täysin erillään taustalla olevasta käyttöjärjestelmästä. Säiliöt ovat poikkeuksellisen kevyitä – vain muutaman megatavun – vievät vähemmän tilaa ja ovat resursseja säästäviä. Ne on helppo käynnistää ja pysäyttää, ja ne voivat käsitellä enemmän sovelluksia kuin virtuaalikone.

Säiliöt tarjoavat kätevän tavan suunnitella, testata ja ottaa käyttöön sovelluksia tietokoneeltasi suoraan tuotantoympäristöön, olipa se sitten tiloissa tai pilvessä. Tässä on joitain konttisovellusten käytön etuja.

Ennen kontteja meillä oli vanhanaikainen monoliittinen malli, jossa koko sovellus, joka koostui sekä etu- että taustakomponenteista, niputettiin yhdeksi paketiksi. Konttien avulla sovellus voidaan jakaa useisiin yksittäisiin komponentteihin, jotka voivat kommunikoida keskenään.

Näin kehitystiimit voivat tehdä yhteistyötä sovelluksen eri osissa edellyttäen, ettei sovellusten keskinäiseen vuorovaikutukseen tehdä suuria muutoksia.

Tähän mikropalvelujen käsite perustuu.

Enemmän modulaarisuutta tarkoittaa parempaa tuottavuutta, koska kehittäjät pystyvät työskentelemään yksittäisten sovelluksen komponenttien parissa ja korjaamaan virheitä paljon nopeammin kuin ennen.

Virtuaalikoneisiin ja muihin tavanomaisiin laskentaympäristöihin verrattuna säilöt käyttävät vähemmän järjestelmäresursseja, koska ne eivät sisällä käyttöjärjestelmää. Tämä välttää tarpeettomia kuluja kalliiden palvelimien hankintaan sovellusten rakentamista ja testaamista varten.

Pienen jalanjäljensä ansiosta konttisovellukset voidaan helposti ottaa käyttöön useissa laskentaympäristöissä/käyttöjärjestelmissä.

Säiliöt mahdollistavat sovellusten nopean käyttöönoton ja skaalauksen. Ne tarjoavat myös kaivattua joustavuutta sovellusten käyttöönottamiseksi useissa ohjelmistoympäristöissä.

Miten säiliöt hyödyttävät DevOps-tiimejä?

Kontit ovat avainroolissa DevOpsissa, ja olisi mahdotonta kuvitella, millainen tilanne olisi ilman konttisovelluksia. Joten mitä astiat tuovat pöytään?

Ensinnäkin säiliöt tukevat mikropalveluarkkitehtuuria, jolloin kokonaisen sovelluksen rakennuspalikoita voidaan kehittää, ottaa käyttöön ja skaalata itsenäisesti. Kuten mainittiin, tämä lisää yhteistyötä ja sovellusten nopeaa käyttöönottoa.

Säiliöinnillä on myös tärkeä rooli CI/CD-putkien helpottamisessa tarjoamalla hallitun ja yhtenäisen ympäristön rakennussovelluksiin. Kaikki kirjastot ja riippuvuudet on pakattu koodin kanssa yhteen yksikköön nopeampaa ja helpompaa käyttöönottoa varten. Testattava sovellus on juuri se ohjelmisto, joka otetaan käyttöön tuotannossa.

Lisäksi säilöt parantavat korjaustiedostojen ja päivitysten käyttöönottoa, kun sovellus jaetaan useisiin mikropalveluihin, joista jokainen on erillisessä säilössä. Yksittäisiä säiliöitä voidaan tutkia, korjata ja käynnistää uudelleen keskeyttämättä sovelluksen muuta käyttöä.

Jokaisen organisaation, joka pyrkii saavuttamaan kypsyyden DevOpsissa, tulisi harkita konttien tehon hyödyntämistä ketterässä ja saumattomassa käyttöönotossa. Haasteena on tietää, kuinka ne voidaan määrittää, suojata ja ottaa saumattomasti käyttöön useissa ympäristöissä.