"DevOps" kattoterminä kattaa kaiken kehityksen ja palveluiden tuotannon välimaastossa tapahtuvan toiminnan. Avaintermejä toiminnassa ovat jatkuva integraatio (Continuous Integration) ja jatkuva toimittaminen (Continuous Delivery).
Lisäksi oleellisissa rooleissa on testauksen automatisointi (Testing Automation) ja ympäristöjen automatisoitu konfigurointi.
DevOps on toimintamalli, jossa ohjelmistojen rakentaminen, testaaminen ja julkaisu tapahtuu nopeasti ja luotettavasti, mahdollisimman pitkälle automatisoidusti.
Painopisteinä toimintatavassa ovat siis prosessien määritykset ja automatisointi.
Tavoitteena on rakentaa toimintamalli, missä kehitettävä ohjelmisto on jatkuvasti mahdollisimman kattavasti testattu ja sen konfiguraatiot hallinnassa siten, että ohjelmisto on milloin tahansa lähes reaaliaikaisesti julkaistavissa. Tuotantoonvienti on automatisoitu ja tapahtuu ketterästi. Kehitystyö tapahtuu tuotantoympäristöä mahdollisimman pitkälti vastaavassa ympäristössä ja koko järjestelmää testataan mahdollisimman kattavasti automaattisesti.
Tyypillisessä DevOps-hankkeessa pyrimme toteuttamaan seuraavat vaiheet (suluissa esimerkkinä mahdollisia työkaluja):
- Vakiinnuttamalla ja virtualisoimalla ympäristöt (Docker, Artifactory / VirtualBox, HyperV),
- automatisoimalla buildit ja julkaisu (Jenkins/Artifactory/Ansible/Puppet),
- automatisoimalla testauksen (Jenkins, SonarQube, jMeter),
- modularisoimalla ja dokumentoimalla rajapinnat (Wiki, Swagger).
DevOps-mallien käyttöönotoissa etenemme tyypillisesti seuraavasti:
- Aluksi määrittelemme ja selvitämme mahdollisuudet sekä rajoitukset Devops-prosessien ja työkalujen käyttöönottoon.
- Ensimmäisenä varsinaisena toimenpiteenä vakiinnutamme ja virtualisoimme ympäristöt, koska vakiinnuttamalla kehitys-, testaus- ja tuotantoympäristöt saavutetaan suurimpia etuja verrattuna tilanteeseen jossa ympäristöt ovat manuaalisen rakentamisen ja konfiguroinnin takana. Tällä tavalla saavutamme ”immutable infrastructure” tilan eli ympäristöjen erot eivät vaikeuta tuotantoonvientejä siinä määrin kuten manuaalisissa ympäristöissä.
- Seuraavaksi automatisoimme ohjelmistojen kokoonpanon (build) ja julkaisun (release) sekä niiden automaattisen konfiguroinnin.
- Modularisoimme ja dokumentoimme rajapinnat käyttäen esimerkiksi Swagger-työkalua.
- Viimeiseksi automatisoimme testauksen, koska se on työläin vaihe. Tätä vaihetta voidaan tehostaa, mikäli projektissa on jo aiemmin hyödynnetty esim. yksikkötestausta.
DevOps toimintamalli parantaa selvästi perinteisen projektimallin ja ketterän kehityksen mukanaan tuomia haasteita. Automatisointi ja virtualisointi vähentävät manuaalista, toistuvaa ja puuduttavaa työtä, kuten esimerkiksi kokoonpanon (build) tekemistä ja toistuvaa konfigurointia.
Virheiden määrä vähenee, kun rutiinityötä automatisoidaan.
DevOps tehostaa ja nopeuttaa huomattavasti uusien ohjelmistoversioiden julkaisua ja tuotantoonvientiä. Se myös tutkitusti vähentää vikoja ja pienentää kehitys- ja ylläpitokustannuksia.
Hyödyistä huolimatta myös DevOps-menetelmät tuovat ohjelmistokehitykseen myös riskejä. Keskeisiä DevOpsin haasteita testauksen automatisoinnin vaativa työmäärä – se voi olla suuri investointi. Tiheät päivitykset eivät välttämättä sovi kriittisiin toimialoihin kuten terveydenhoitoon ja uudet prosessit sekä työkalut vaativat aina käyttöönottovaiheessa merkittävässä määrin panostusta kaikilta osapuolilta. Käyttöönotettaessa Devops-menetelmiä nämä riskit on tiedostettava ja hallittava.
Kokonaisuutena DevOps on ehdottamasti suositeltava toimintamalli modernin ohjelmistokehityksen taustalle. Se sisältää monia toimintamalleja, jotka sopivat kaikkiin kehityshankkeisiin.
Ota yhteyttä, niin analysoimme hankkeesi ja kerromme miten voit tehostaa toimintaasi. Hyödyt mittaat suoraan euroina ja parantuneena laatuna!