DevOps

Kuvauksen kirjoitti: Marika Näivö, L8343

Lyhyt kuvaus käsitteestä tai aiheesta

DevOps tulee englannin kielen sanoista development (kehitys) ja operations (tuotanto). Käsite lanseerattiin vuonna 2009.

DevOpsilla tarkoitetaan ketterää toiminnan mallia, jota käytetään sähköisessä palvelujen (digitaalisten palvelujen, digipalvelujen) tuotannossa. Ohjelmistokehityksen lisäksi mallissa on tarkoitus automatisoida seuraavat asiat tuotannossa: testaaminen ja ylläpito. Kyseessä on yhdistelmä ketteriä menetelmiä ja Leania lähetystapaa.

Toimintamallina DevOpsin tarkoituksena on edistää kehityksen ja tuotannon välistä yhteistyötä. Yhteistyö tarkoittaa osapuolten välistä vuoropuhelua, kun kehitetään sähköisiä palveluita. Tarkoituksena on pystyä tarttumaan ongelmiin heti kun ne havaitaan, mikä vie vähemmän aikaa kuin perinteinen asioiden pallottelu osapuolelta toiselle edestakaisin, kunnes asia on jossain vaiheessa saatu korjattua.

Malliin kuuluu olennaisena osana ketterän kehittämisen menetelmän mukaan etenevä tapa toimia ja jatkuva integraatio (continuous integration) sekä myös jatkuva toimittaminen (continuous delivery).

Käytännössä malli sisältöineen tarkoittaa vain kokoelmaa käytäntöjä, jotka on todettu hyviksi. Mitään erityisen uutta ja mullistavaa malli ei siis sinällään tuo. Pieni toimija voi myös toimia jo valmiiksi DevOpsin mukaisesti, vaikka ei asiaan ole varsinaisesti panostanut tai sitä tiedostanut, isompien organisaatioiden ja monimutkaisimpien järjestelmien kanssa asiat eivät tapahdu kuitenkaan ”itsestään”, vaan mallin käyttämisen ja käyttöönoton eteen täytyy nähdä vaivaa. On myös mahdollista, että toimittaessa eri organisaatioiden välissä sopimustekniset syyt voivat estää toimimasta DevOps -mallin mukaisesti.

DevOpsista on sanottu, että vähänkin DevOpsia on ”aina parempi kuin ei DevOpsia laisinkaan”. Satsaaminen viestintään, joka oikeasti toimii ja pyrkimykseen automatisoida niitä prosesseja mitä voi automatisoida auttaa jo paljon, vaikka kaikkia asioita voisikaan tehdä DevOpsin -mallin mukaisilla tavoilla.

Jatkuvalla tarkoitetaan tapaa toimia, jossa pohjaudutaan vahvasti automaatioon: Kaikki päivitysten kehitysversioista tuotantoon tapahtuu automaattisesti, samoin laadunvarmistukseen liittyvät toimet. Lopputavoitteena on etenkin saada aikaan entistä parempi ja nopeampi keino saada tehdyt muutokset tai uudet ominaisuudet tuotantoon, heti kun ne ovat julkaisukunnossa.

Esimerkkinä muokattu ohjelmisto voi päivittyä automaattisesti tuotantoversioon vaikkapa kymmenen kertaa päivässä ja muutokset ovat nopeasti käytössä. Rutiinitoimia ei siis tässä mallissa tehdä manuaalisesti, vaan työntekijät voivat keskittyä automaation ansiosta muihin tehtäviin. Kaikkea ei voi tehdä automaatiolla, mutta esimerkiksi automaattisesti suoritettavia testejä yritetään tehdä mahdollisimman paljon.

Tähän esim. Mahdollinen kuva1

(Kuvan lähde: https://commons.wikimedia.org/wiki/File:Devops.svg)

Osapuolten tehtävät: Uusien ominaisuuksien suunnittelu ohjelmistoon, löydettyjen bugien korjaaminen ja testaamiseen liittyvä suunnittelu ja kaikista näistä seuraava ohjelmointityö, testaus ja dokumentointi kuuluvat kehityspuolen tehtäviin. Tuotannon puolelle kuuluvat taas tuotantoon liittyvän ympäristön rakentaminen, toiminta tässä ympäristössä, päivittäinen (operatiivinen) toiminta ja pitää ylipäätänsä huolta tuotannon kapasiteetista (tuotantokyky).

Ongelmana on monessa kehityshankkeessa ollut osapuolten välinen yhteistä ja vaiheittain etenevä perinteisellä tavalla toiminut vesiputousmallin mukainen työskentelytapa. DevOpsiin liittyy siis ennen kaikkea muutos tavassa toimia, kun siirrytään prosessimaiseen ja yhteistyötä painottavaan toimintamalliin, jossa tavoitellaan, että kaikki toimisivat saumattomasti yhteen.

DevOpsin tehokkaalle toiminnalle on määritelty oleelliseksi luokitellut kriteerit, joista käytetään lyhennettä ASR (Architectually Significant Requirement). Arkkitehtuurin määrittely ei kuitenkaan kuuluu DevOpsiin.

Nämä kriteerit ovat:

  1. Käyttöönotettavuus (engl. Deployability)
  2. Muokattavuus (engl. Modifiability)
  3. Testattavuus (engl. Testability)
  4. Valvottavuus (engl. Monitorability)

Tähän esim. Mahdollinen kuva1

Kuva: DevOps toolchain (By Kharnagy - Own work, CC BY-SA 4.0)

DevOpsista kirjoitettuun Wakarun verkkosivuilla kuitenkin seuraavaa: ” Micropalvelut (microservices) ovat kuitenkin nousemassa ’de facto’ standardiksi koska pienempien palveluiden suunnittelu, koodaaminen, julkaisu ja ylläpito on helpompaa ja näin ollen uusien palveluiden tuominen tuotantoon on nopeampaa.”.

Loppu”kevennys”:

DevOps on ilmeisesti alan ulkopuolellakin suuremmalle yleisölle tuttu asia Agilen ja Scrumin linjalla yleisestikin, koska siitä keskustellaan jopa vauva.fi foorumilla: https://www.vauva.fi/keskustelu/2666938/voisiko-joku-kertoa-mita-eroa-agilella-scrumilla-ja-devopsilla (oletko kenties samaa mieltä viestin numero viisi kanssa?)

Lähteitä liittyen aiheeseen

Linkkejä aiheesta

Linkit wikin muihin sivuihin