# DevOps

**DevOps** (liitsõna inglise keele sõnadest *development* ehk arendus ja *operations* ehk käitus) on tarkvaraarenduse kultuur, mille eesmärk on ühendada tarkvaraarendus (*Dev*) ja tarkvaraoperatsioonid (*Ops*). Põhilised DevOpsi liikumise tunnusjooned on automatiseerimine ja jälgimine kõigil tarkvaraarenduse etappidel alates integratsioonist, testimisest ja avaldamisest kuni kasutuselevõtu ja taristu haldamiseni. DevOps pürgib lühemate arendustsüklite, sagedasemate juurutamiste ning töökindlamate ja rohkem ärinõuetega kooskõlas olevate tarkvara versioonide avalikustamiste poole.

## Ajalugu

Termin "DevOps" jõudis avalikkuse ette 2008. aastal Torontos Agile'i konverentsil, kus Andrew Shafer ja Patrick Debois kasutasid seda terminit nende paindliku ehk agiilse taristu teemalises esitluses. Aastast 2009 on termin levinud ja saanud laiema tähelepanu tänu DevOpsi päevadele, mis algasid Belgias ja on nüüdseks levinud ka teistes riikides.

## DevOpsi tööriistade komplektid

Kuna DevOps on mõeldud ristfunktsionaalse töösuunana, siis selle asemel, et oleks ainult üks kindel DevOpsi tööriist, kasutatakse pigem mitmeid tööriistade komplekte. Sellised tööriistad peaksid mahtuma järgnevatesse kategooriatesse, mis peegeldavad arendamise ja väljastamise protsessi põhiaspekte:

1. programmeerimine – koodi kirjutamine ja läbivaatus, lähtekoodihaldus;
2. järgu ehitus – pidevintegratsioon, järgu staatuse haldus;
3. testimine – pidev testimine mis annab tagasisidet äririskide kohta;
4. pakkimine – tehistehoidla, rakenduse avalikustamise eelne proovimine;
5. avalikustamine – muutuste haldus, avalikustamise protsessi automatiseerimine;
6. konfigureerimine – taristu ülesseadmine ja haldamine, taristu kui koodi tööriistad;
7. seire – rakenduse jõudluse jälgimine, lõppkasutaja kogemused.

Osad kategooriad omavad suuremat tähtsust DevOpsi tööriistade komplektis; eriti pidevintegratsioon (nt Jenkins) ja taristu kui kood (nt Puppet).

## Suhe teiste lähenemistega

#### Paindlik ehk agiilne arendus

Vajadus DevOpsi järele tekkis kasvavast agiilse tarkvaraarenduse edust, kuna agiilsest lähenemisest tekkis organisatsioonidel tahtmine tarkvara avalikustada aina kiiremini ja sagedamini. Et ületada sellest tekkinud probleemid, pidid nad võtma kasutusele sellised võtted nagu rakenduse avalikustamise automatsioon, pidevintegratsioon ja pidevvalmidus.

#### Pidevvalmidus

Pidevvalmidusel (inglise keeles *continuous delivery*) ja DevOpsi liikumisel on ühiseid eesmärke ning neid kasutatakse tihti koos, aga neil siiski on mõned peened erinevused.

Kui pidevvalmidus keskendub tarkvara tarne automatiseermisele, siis DevOps keskendub ka organisatsioonilistele muudatustele mis toetaksid koostööd tarkvara loomisega seotud funktsioonide vahel.

DevOps ja pidevvalmidus jagavad ühist tausta agiilsete meetodite näol.

## Eesmärgid

DevOpsi eesmärgid hõlmavad kõiki tarkvara loomise etappe. Nende hulgas on:

* sagedasemad juurutamised;
* lühem aeg turule;
* väiksem rikete protsent uutel avalikustatud tarkvara versioonidel;
* lühem ettevalmistusaeg rikete parandamisel;
* kiirem aeg paranemiseni rikete puhul, mis halvavad kogu süsteemi.

Kasutades DevOpsi lähenemist muutuvad lihtsad protsessid paremini programmeeritatavateks ja dünaamilistemaks. DevOps üritab maksimeerida operatsiooni protsesside ennustatavust, tõhusust, turvalisust ja hooldatavust. Väga sagedasti kasutatakse selle saavutamiseks automatiseerimist.

## Viited