Jos haluat lyhentää kehityksen elinkaarta, parantaa ohjelmiston laatua ja tarjota jatkuvaa toimitusta, sinun kannattaa harkita DevOpsia. Patrick Debois, ohjelmistokehityksen ja IT-toimintojen erottamisen aiheuttamien tehottomuuksien turhauttama tyytymätön konsultti, keksi termin vuonna 2007.
Monet yritykset ovat sittemmin omaksuneet DevOps-periaatteet sopeutuakseen tehokkaammin liiketoimintansa tarpeisiin. DevOps rajoittui aiemmin IT-palveluihin, mutta se on sittemmin laajentunut kattamaan koko yrityksen. Tämä vaikuttaa prosesseihin ja tietovirtoihin sekä aiheuttaa merkittäviä organisaatiomuutoksia.
Mitä DevOps on?
DevOps on menetelmä, jossa yhdistyvät ohjelmistokehitys (Dev) ja IT-toiminnot (Ops). Se on joukko käytäntöjä, DevOps-työkaluja, prosesseja ja jopa ihmisiä, joiden tavoitteena on lisätä tiimien yhteistyötä sekä mahdollistaa tuotteiden nopeammat ja luotettavammat julkaisut. DevOps-ympäristön tarkoituksena on kannustaa automaatioon ja dokumentointiin sekä edistää viestintää ja yhteistyötä.
Toisin kuin perinteisemmissä lähestymistavoissa (myös Agile- ja Scrum-menetelmissä), joissa osastot jaetaan ”siiloihin,” DevOps korostaa kaikkien tuotteen luomiseen osallistuvien tiiminjäsenten integrointia: ohjelmistokehittäjistä testaajiin ja IT-toimintojen ammattilaisiin (kuten järjestelmänvalvojiin, tietokanta-asiantuntijoihin ja järjestelmäinsinööreihin).
Miten DevOps toimii
Kehitys- ja toimintotiimit työskentelevät tiiviimmin yhdessä DevOps-mallissa. Molempien tiimien insinöörit integroituvat toisiinsa ja työskentelevät koko sovelluksen elinkaaren ajan kehityksestä ja testauksesta aina DevOps-käyttöönottoon ja toimintaan asti. DevOps yhdistää molempien osapuolten osaamisen koko sovellusprosessin aikana.
Laadunvarmistus- ja turvallisuustiimit voidaan yhdistää tiiviimmin kehitykseen ja toimintoihin sekä koko ohjelmistokehityksen elinkaaren ajaksi erilaisissa DevOps-malleissa, kuten SecDevOpsissa (joka keskittyy turvallisuuteen) tai QAOpsissa (jossa painotetaan enemmän tuotteen laadun testaamista).
Nämä ryhmät käyttävät parhaita käytäntöjä aiemmin työläiden ja hitaiden prosessien automatisointiin. Ne hyödyntävät teknologista pinoa ja infrastruktuuria sovellusten nopeaan ja luotettavaan käyttöön sekä kehittämiseen.
DevOps-käytännöt ja -käsitteet
DevOps perustuu joihinkin keskeisiin käytäntöihin. Käydään seuraavaksi läpi, mitä kukin niistä tarkoittaa.
Jatkuva integrointi
Jatkuvalla integroinnilla (CI) tarkoitetaan koodimuutosten säännöllistä yhdistämistä keskitettyyn tietovarastoon sekä automaattisten koontiversioiden ja testien suorittamista (mukaan lukien yksikkö-, integraatio-, käyttöliittymä- ja päästä päähän -testit).
CI:n päätavoitteena on löytää ja korjata virheet nopeammin, parantaa ohjelmiston yleistä laatua sekä lyhentää uusien ohjelmistopäivitysten validointiin ja julkaisemiseen kuluvaa aikaa.
Have an account? Log In
Jatkuva toimitus
Jatkuva toimitus liittyy läheisesti jatkuvaan integrointiin ja on sen seuraava looginen vaihe. Jatkuvassa toimituksessa koodimuutokset on koottava ja testattava automaattisesti, ja niiden on oltava valmiita toimitettaviksi tuotantoympäristöön. Ihannetapauksessa kaikki muutokset viedään ensin testiympäristöön ennen niiden käyttöönottoa tuotannossa.
Versionhallinta
Versionhallinnalla, joka tunnetaan myös lähdekoodin hallintana, tarkoitetaan koodin hallintaa eri versioina eli muutosten ja koodiin tehtyjen tarkistusten seuraamista ajan mittaan. Tämä tehdään usein versionhallintajärjestelmillä, joiden avulla tiimin jäsenet voivat tehdä yhteistyötä koodin parissa.
Näissä menetelmissä kuvataan vaihe vaiheelta, miten koodimuutokset yhdistetään samoihin tiedostoihin, ristiriidat ratkaistaan ja muutokset palautetaan aiempiin tiloihin. Versionhallinta on yksi keskeisistä DevOps-prosesseista, joka auttaa kehitystiimejä tekemään yhteistyötä, jakamaan koodaustehtäviä tiimin jäsenille ja arkistoimaan kaiken koodin nopeaa palautumista varten.
Valvonta ja lokitus
Jatkuva valvonta tarkoittaa rikkinäisten koontiversioiden tai epäonnistuneiden testien tunnistamista ja sen varmistamista, etteivät ne aiheuta viivästyksiä. Automaatio nopeuttaa kehitystä merkittävästi, mutta jos automatisoitu prosessi epäonnistuu eikä kukaan huomaa sitä, tehtävä kannattaa suorittaa mieluummin manuaalisesti.
Samoin on tärkeää seurata tuotannossa olevia sovelluksia, jotta ongelmat tai suorituskykyongelmat voidaan havaita ennen kuin asiakkaasi huomaavat ne.
Mikropalvelut
Mikropalveluarkkitehtuuri on tyyli, jossa sovellus rakennetaan kokoelmasta pienempiä, löyhästi kytkettyjä ja toisistaan riippumattomasti käyttöönotettavia palveluita. Tämän ansiosta toimitustiimit voivat keskittyä tiettyihin palveluihin itsenäisinä kokonaisuuksina, mikä helpottaa huomattavasti kehitystä, testausta ja käyttöönottoa.
Infrastruktuuri koodina (IaC)
Tämä on prosessi IT-infrastruktuurin (verkot, virtuaalikoneet, kuormantasaajat, yhteysarkkitehtuuri) hallintaan käyttäen lähdekoodin kanssa samaa versionhallintaa kuin DevOps-tiimi.
IaC-malli luo saman ympäristön joka kerta, kun se otetaan käyttöön, samalla tavalla kuin sama lähdekoodi tuottaa saman binäärin. IaC on keskeinen lähestymistapa, joka toimii tiiviissä yhteistyössä jatkuvan toimituksen kanssa.
Siirtyminen vasemmalle
Tällä tarkoitetaan kehitysprosessia, jossa tiimi keskittyy aloittamaan testauksen mahdollisimman varhain. Tavoitteena on laadun parantaminen, testauskertojen lyhentäminen ja mahdollisten yllätysten välttäminen kehityssyklin lopussa. Vasemmalle siirtyminen edellyttää jatkuvaa testausta (automaattisten testien kirjoittamista ja suorittamista mahdollisimman aikaisin ja usein) sekä jatkuvaa käyttöönottoa (uusien koontiversioiden käyttöönoton automatisointia).
DevOpsin elinkaari
Tyypillinen DevOps-työnkulku on iteratiivinen ja koostuu kahdeksasta päävaiheesta:
- Suunnittelu: Tässä vaiheessa tiimi tunnistaa liiketoiminnan vaatimukset ja luo etenemissuunnitelman, joka maksimoi tuotteen liiketoiminta-arvon.
- Koodaus: Tässä vaiheessa varsinainen kehitystyö tehdään.
- Koonti: Kun kehitystehtävät on suoritettu, koodi viedään jaettuun tietovarastoon.
- Testaus: Koontiversio otetaan käyttöön testiympäristössä, jossa testit suoritetaan. Tähän sisältyvät yleensä yksikkötestaus, integraatiotestaus, käyttöliittymän automaatiotestaus ja manuaaliset testit, kuten käyttäjän hyväksymistestit.
- Julkaisu: Kun testausvaihe on suoritettu, DevOps-insinöörit valmistelevat koontiversion käyttöönotettavaksi tuotantoympäristössä.
- Käyttöönotto: Tässä vaiheessa koontiversio asennetaan, testataan ja otetaan käyttöön tuotannossa, jossa se on loppukäyttäjien saatavilla.
- Operointi: IT-palvelujen toimituksen hallinta asiakkaille alusta loppuun. Tällä tarkoitetaan organisaation palveluja tukevan IT-infrastruktuurin suunnittelua, toteutusta, konfigurointia, käyttöönottoa ja ylläpitoa.
- Valvonta: DevOps-tiimit arvioivat jokaisen julkaisun ja tuottavat raportteja tulevien ohjelmistojulkaisujen parantamiseksi. Keräämällä jatkuvaa palautetta tiimit voivat optimoida prosessejaan ja sisällyttää kuluttajien palautteen seuraavaan julkaisuun.

Mitä hyötyä DevOpsista on?
DevOps-lähestymistavan tärkeimmät hyödyt ovat:
- Ohjelmistojen nopeampi toimitus: CI/CD-putkien ansiosta käyttöönotto on nopeampaa ja tapahtuu useammin. Olemassa olevien palvelujen päivittäminen ja uusien järjestelmien, ominaisuuksien tai virheenkorjausten käyttöönotto vie vähemmän aikaa. Tämä voi tarjota merkittävän kilpailuedun ja parantaa käyttäjäkokemusta.
- Parempi yhteistyö: DevOps-käytäntöjen ansiosta kehittäjät ja operointitiimit työskentelevät tiiviisti yhdessä ja jakavat vastuun, mikä lisää työn näkyvyyttä. Tiimit ovat yhteydessä toisiinsa ja työskentelevät samojen tavoitteiden ja päämäärien saavuttamiseksi.
- Suurempi tuottavuus: Kun työtä ei enää tehdä erillään ja viestintä on parantunut, läpinäkyvyys lisääntyy, mikä tehostaa tiimien työskentelyä.
- Toistuvien tehtävien automatisointi: Sen lisäksi, ettei näitä tehtäviä tarvitse tehdä manuaalisesti, tiimille jää enemmän aikaa projektin innovaatioiden parissa työskentelyyn.
- Parempi laatu ja luotettavuus: Jatkuvan integraation ja toimituksen käytännöt varmistavat, että muutokset ovat toimivia ja vakaita, mikä parantaa ohjelmistotuotteen laatua. Valvonnan avulla tiimit pysyvät ajan tasalla suorituskyvystä reaaliajassa.
- Parempi tietoturva: DevOpsin tietoturvaa voidaan parantaa myös integroimalla tietoturvatestaus jatkuvan integraation, jatkuvan toimituksen ja jatkuvan käyttöönoton putkeen.
- Useammin julkaistavat päivitykset: Asiakkaat voivat saada päivityksiä ja virheenkorjauksia usein, mikä parantaa asiakastyytyväisyyttä.
Miten DevOps-kulttuuri otetaan käyttöön?
Siirtyminen DevOpsiin edellyttää muutosta kulttuurissa ja ajattelutavassa. Aluksi DevOpsin käyttöönotto voi tarkoittaa, että operointi- ja kehitystiimit sitoutuvat ymmärtämään ohjelmistokehitysprosessin kussakin vaiheessa esiintyvät ongelmat ja teknologian rajoitukset.
Määritä parantamista mittaavat suorituskykyindikaattorit, kuten lyhyemmät läpimenoajat tai tuotannossa esiintyvien virheiden vähäisempi määrä. Viestimällä eri työtehtävien välillä voit luoda perustan jatkuville prosesseille.
Tarkastele nykyisiä kehitys- ja IT-toimintojen työkaluja. Tunnista mahdolliset heikkoudet, kuten vaihe, joka suoritetaan aina manuaalisesti, tai työkalu, jossa ei ole sovellusrajapintoja muiden työkalujen kanssa viestimiseen. Harkitse yhden koko yrityksen kattavan DevOps-toimitusputken käyttöönottoa. Tiimin jäsenet voivat siirtyä projektista toiseen ilman uudelleenkoulutusta.
Kun DevOps-ajattelutapa on nyt otettu käyttöön, päätä, mitä mittareita käytetään onnistumisen mittaamiseen, ja tunnista jatkossa käytettävät työkalut (lisää tästä myöhemmin). Jatkuvan kehityksen varmistamiseksi keskity parhaisiin käytäntöihin, tiedon jakamiseen ja jatkuvaan parantamiseen. Tunnista KPI-mittareihisi vaikuttavat esteet ja optimoi työkalusi ja teknologiasi.
DevOps-kypsyysmallissa on viisi vaihetta:
- Alkuvaihe: perinteinen malli, jossa kehitystiimi ja operatiivinen tiimi toimivat siiloutuneina.
- Hallittu: ensimmäinen siirtymä kohti DevOpsia, jolloin Ops-prosesseja aletaan automatisoida. Kehityksen ja Opsin välinen yhteistyö lisääntyy, kun tiimit eivät enää ole erillään. Kyseessä on konseptin todentamisen vaihe.
- Määritelty: kaikkien käytäntöjen (mukaan lukien kehitys ja testaus) automatisointiprosessit määritellään ja otetaan käyttöön. Muutokset toteutetaan organisaatiotasolla.
- Mitattu: tiimit jakavat tietoa ja mukauttavat käytäntöjään käytössä olevien prosessien ja työkalujen ansiosta. Automaatio ja työkalujen välinen viestintä paranevat, ja käytäntöjä käytetään standardien noudattamisen varmistamiseen.
- Optimoitu: jatkuvan parantamisen ansiosta tuloksia alkaa näkyä. DevOps voi laajentua useisiin työkalukokonaisuuksiin tai menettelytapoihin. Esimerkiksi asiakkaisiin suoraan suuntautuvat sovellukset (jotka ovat yleensä B2C-sovelluksia) julkaisevat päivityksiä useammin, kun taas FinTech-sovellukset noudattavat tarkemmin DevSecOps-periaatteita.
DevOps-työkalut
DevOps-menetelmä keskittyy ohjelmistokehityksen toimintojen, kuten koontiversioiden luomisen, testaamisen ja käyttöönoton, automatisointiin, jotta markkinoilletuloaika olisi lyhyempi, tuotteet laadukkaampia ja ohjelmiston ominaisuuksien epäonnistumisia ja palautuksia olisi vähemmän. Kaikki tämä huomioon ottaen oikea työkalupino auttaa varmistamaan onnistuneen DevOps-kulttuurin saavuttamisen.
Työkaluista ja teknologioista, jotka tukevat kehitys- ja operatiivisten toimintojen parissa työskenteleviä ihmisiä vuorovaikutuksessa koko ohjelmiston elinkaaren ajan, käytetään nimitystä DevOps-työkaluketju. Jatkuva integraatio, jatkuva toimitus, automaatio ja yhteistyö kuuluvat keskeisiin käsiteltäviin DevOps-elementteihin.
Mitä yleisiä työkaluja DevOpsissa sitten käytetään?
Suunnittelutyökalut
Nämä ovat pääasiassa samoja työkaluja, joita käytetään ketterän kehityksen menetelmissä. Yksi tämän vaiheen suosituimmista työkaluista on ehkä Jira. Jos se ei ole sinulle ennestään tuttu, kyseessä on Atlassianin projektinhallintatyökalu, joka on suunniteltu ketterille tiimeille niiden tehtävien, ongelmien ja virheiden seurantaan. Se mahdollistaa integroinnin useiden muiden DevOps-prosessin eri vaiheissa käytettävien työkalujen kanssa.
Hyvä viestintä on ratkaisevan tärkeää DevOpsissa sekä suunnitteluvaiheessa että muissa vaiheissa, joten on hyvä idea käyttää viestisovellusta, joka voidaan myös integroida muihin työkaluihin. Tällaisia sovelluksia ovat esimerkiksi myös Atlassanin Slack tai Microsoft Teams.
Versionhallintatyökalut
Versionhallintatyökalut auttavat sovelluskehitystiimejä hallitsemaan lähdekoodiin ajan mittaan tehtyjä muutoksia. Ne auttavat ohjelmistotiimejä toimimaan nopeammin ja älykkäämmin kehitysympäristöjen laajentuessa.
Versionhallintaratkaisut auttavat erityisesti lyhentämään kehitysaikaa ja parantamaan käyttöönottojen onnistumista. Git on luultavasti käytetyin versionhallintatyökalu, mutta jotkin tiimit saattavat valita lähdekoodin hallintaan TFS:n, SVN:n tai GitHubin.
Jatkuvan integraation työkalut
Jatkuvan integraation työkalut suorittavat automaattiset testit kehityshaaroille ja mahdollistavat muutosten viemisen päähaaraan, kun koontiversiot onnistuvat. Ne tarjoavat myös jatkuvaa palautetta tiimisi reaaliaikaisten keskusteluhälytysten kautta yksinkertaisten integraatioiden avulla. Tunnettuja työkaluja ovat muun muassa Jenkins (joka on avoimen lähdekoodin työkalu), Circle CI ja AWS.
More Articles
Konfiguraationhallintatyökalut
DevOps-elinkaaren aikana kokoonpanonhallinta tarkoittaa suurten ja monimutkaisten järjestelmien komponenttien ylläpitoa ja hallintaa siten, että ne ovat tunnetussa, yhdenmukaisessa ja ennalta määritetyssä tilassa. Palvelimet, verkot, tallennustila ja sovellukset ovat kaikki esimerkkejä IT-järjestelmien komponenteista.
Kokoonpanonhallintatyökalut tekevät käyttöönottoprosessista sujuvan ja yhdenmukaisen koko tuotantoprosessin ajan. Tunnettuja kokoonpanonhallintatyökaluja ovat esimerkiksi Ansible, Puppet ja Chef.
Jatkuvien toimintojen työkalut
Jatkuvien toimintojen työkaluja käytetään sovelluksen ja sen päivitysten julkaisemisen automatisointiin. Jatkuvat toiminnot poistavat käyttökatkot hyödyntämällä konttienhallintaratkaisuja, kuten Kubernetes ja Docker. Nämä konttienhallintateknologiat helpottavat huomattavasti sovelluksen kehittämistä, testaamista ja käyttöönottoa eri ympäristöissä.
Sopiiko DevOps sinulle?
Vaikka mikään menetelmä ei sovi kaikille, sinulla on nyt ehkä selkeämpi kuva siitä, mitä DevOps on ja mitä sen käyttöönotto edellyttää. Näiden tietojen sekä DevOps-hinnoittelusta saatavilla olevan lisätiedon perusteella voit päättää, sopiiko DevOps prosessiksi tiimisi tavoitteisiin.
Jos kuitenkin selvität, miten DevOps otetaan käyttöön tai miten sitä voidaan skaalata tehokkaammin, harkitse yhteistyötä sopivan lähialueen ohjelmistokehityskumppanin kanssa.
Etsitkö lisää DevOpsin parhaita käytäntöjä? Tilaa The CTO Clubin uutiskirje ja saat uusimmat näkemykset.






