devops - nirvana
BLOG
DEVOPS

DevOps – ohjelmistokehityksen tie nirvanaan

Onko DevOps ohjelmistokehityksen nirvana? Testiautomaatioasiantuntijamme Tuukka Virtanen avaa uusimmassa blogikirjoituksessaan DevOpsin perusteita ja kertoo mitä yhtäläisyyksiä ohjelmistokehityksessä ja buddhalaisessa elämän kiertokulussa löytyy.

Samsara tarkoittaa hindulaisessa ja buddhalaisessa uskonnossa läpikulkua. Elämä nähdään pyöränä, jossa kuolema on vain portti uudelleensyntymiseen ja kierron aloittamiseen alusta. Buddhalaiset sanovat samsaran olevan kärsimystä. Kuljemme siis läpi tuota loputonta kärsimyksen polkua aina uudelleen ja uudelleen. Samat vaiheet toistuvat, kunnes niitä ei enää erota toisistaan. Tuntuu kuin olisit jo elänyt tämän hetken. Kuulostaako tutulta?

Ohjelmiston kehityskaari (Software development life cycle) tuntuu aina noudattavan samaa kaarta. Siinä toistuvat samat vaiheet alkaen määrittelystä, suunnittelusta, kehityksestä, testauksesta, päättyen lopulta julkaisuun. Samat vaiheet toistetaan jokaisen uuden version kohdalla. Se tuntuu päättymättömältä polulta.

On kuitenkin olemassa tie ulos samsarasta. Valaistuminen, nirvana. Nirvanassa ei tunneta kärsimystä. Nirvana on elämänkierron ulkopuolella. Sitä eivät koske maalliset murheet. Se on jotain vapaampaa. Se on tasapaino. Se on täydellisen tyydyttävää. Ja tämä on se, mitä jokainen kehitystiimi tavoittelee. Ja siihen on keino, DevOps.

Unelmana siiloton ja tehokas prosessi

DevOpsin tarkoitus on yhdistää ohjelmistokehitys (development) ja organisaation operatiivinen toiminta (operations) kiertokuluksi, joka pyörii itsestään. Kun ohjelmistokehittäjä kommittoi koodia versiohallinnan päähaaraan, alkaa ohjelmakoodin kiertokulku. Continuous Integration (CI) -serveri huomaa päähaaran päivittyneen ja rupeaa rakentamaan uutta versiota ohjelmistosta. CI-serveri ajaa automatisoidut järjestelmä- ja hyväksymistestit ohjelmistolle, joka pyörii kontissa itsenäisenä kokonaisuutena. Kun kaikki testit näyttävät vihreää, CI-serveri aloittaa ohjelmiston siirtämisen tuotantoon pilvipalveluun. Orkestraatio-ohjelma käynnistää ja skaalaa ohjelmiston kontteihin eri maantieteellisille alueille. Monitorointityökalut seuraavat ohjelmiston ja sen ympäristön tilaa ja ilmoittavat mahdollisista poikkeavuuksista. Lopuksi CI-serveri ilmoittaa onnistuneesta tuontantoonviennistä viestillä kehittäjän käyttämään pikaviestiohjelmaan. Ja kaikki tämä tapahtuu sillä aikaa, kun ohjelmistokehittäjä on jo kehittämässä uutta toiminnallisuutta.

Yllä oleva kuvaus on tietenkin unelma, nirvana. Useimmat meistä kiertävät yhä samsaraa. Useissa organisaatioissa on portinvartijoita jokaisen vaiheen välissä. On siiloutumista, kommunikoimattomuutta ja poteroihin painautumista, joka estää tehokkaimman mahdollisen prosessin. Joskus se on hyvä asia, että ihminen sanoo viimeisen sanan. Tiedämme kuitenkin tilastoista, että usein tämä johtaa laadunvarmistuksellisiin haasteisiin.

Perustana automaatio ja luottamus

Kollegani mukaan DevOpsin voi tiivistää kahteen sanaan: automaatio ja luottamus. Automaatiota tarvitaan ohjelmistokehityskaaren jokaiseen vaiheeseen: kehitykseen, rakentamiseen, testaamiseen, tuotantoonvientiin ja monitorointiin. Luottamusta tarvitaan näiden osien väliseksi liimaksi.

Automaatiota voidaan lisätä pienen askelin. Voidaan valita monoliittiohjelmistosta yksi toiminnallisuus, joka irroitetaan omaksi kokonaisuudekseen ja tehdään uusiksi vain yhteen asiaan keskittyvänä microservicenä. Rakennetaan tälle microservicelle toimiva ja nykyaikainen kehitys- ja julkaisupipeline. Pala palalta siirretään vanha toiminnallisuus osina uuteen kehitysmalliin, kunnes kaikki monoliitin osat on uudistettu.

Toinen asia on luottamus. Eri organisaatioiden osien välillä pitää olla luottamusta toistensa tekemiseen. Mikään osa organisaatiosta ei voi vain heittää työtänsä aidan yli katsomatta sen toiselle puolelle. DevOps vaatii yhteistyötä ja yhteistä vastuunjakoa. DevOpsin voikin nähdä köydenvetona Agile- ja ITIL-ajatusmaailman välillä. Agile korostaa nopeutta ja vanhan rikkomista, kun taas ITIL jatkuvuutta ja toimintavarmuutta. Operaatiopuolella muutos on pahasta, sillä se on uhka jatkuvuudelle ja siksi se pitää minimoida. Kehityspuolella muutos on hyvästä, sillä muutos on kehitystä ja siksi se pitää maksimoida. Näiden välille pitää löytää tasapaino, koska tien lopussa häämöttää vapautus kärsimyksestä, nirvana.

CONTACT
  • Tuukka Virtanen
    Tuukka Virtanen
    Test automation consultant
    +358 40 044 9194