Jatkuvajulkaisu (Continuous delivery)
Kuvauksen kirjoitti: Vesa Veckman, L8600
Jatkuva julkaisu mahdollistaa kehitysideoiden nopean käyttöönoton.
Jatkuvan julkaisun tärkeimpiä periaatteita on saada välitöntä palautetta jokaisesta eri vaiheesta, jotta virhetilanteissa virheet voidaan korjata ja putki pääsee jatkumaan. Jatkuvan julkaisun prosessi menee kutakuinkin näin:
- Kehittäjä ohjelmoi toiminnon ja lisää sen versionhallintaan.
- Versiohallinnasta toinen kehittäjä katselmoi ohjelmakoodin ja hyväksyy muutokset tai lisäykset.
- Jatkuva integraatio ajaa buildin ja yksikkötestit.
- Kun buildi ja yksikkötestit menevät läpi muutokset asennetaan tuotantoa vastaavaan testiympäristöön.
- Suoritetaan integraatio-, regressio-, tietoturva-, toiminnalliset ja suorituskykytestit.
- Kun nämä vaiheet ovat suoritettu julkaisu hyväksytään.
- Viimeisessä vaiheessa julkaisu siirretään tuotantoon.
Nopea julkaisutehokkuus mahdollistaa myös loppukäyttäjien paremman osallistumisen ohjelmiston kehitykseen ja lyhentää asiakkaan sekä kehittäjien välimatkaa. Asiakas pystyy välittömästi näkemään ne muutokset, joita ohjelmistoon on tehty, antamaan palautetta niistä, ja kehittäjä kykenee välittömästi ymmärtämään, mitä asiakas todella ohjelmistoon haluaa.
Jatkuva julkaisu vaatii ympärilleen testausautomaatiota. Testausautomaatiolla tarkoitetaan joukkoa etukäteen ohjelmoituja testejä, jotka voidaan ajaa automaattisesti. Testausautomaatioon kuuluvat usein mm. yksikkö-, integraatio-, regressio- ja suorituskykytestit. Korkeat testikattavuusrajat ovat yksi keino varmistaa julkaisujen vähäinen virheiden määrä.
Muuta
DevOps –prosessi pohjautuu paljolti ketteriin menetelmiin; siinä missä ketterät menetelmät keskittyvät ohjelmakoodiin, niin se keskittyy koko palveluun, alkaen ohjelmakoodista, edeten testaukseen ja ylläpitoon. Jatkuvalla julkaisulla on siinä suuri merkitys. Continuous delivery -mallissa asennusvaiheet ovat automaattisia, mutta päätöksen tuotantoon viennistä tekee ihminen. Continuous delivery -mallissa jokainen uusi muutos on mahdollinen uusi julkaisu. Continuous delivery -malli on helpommin hallittavissa, koska virheet voidaan korjata ennen julkaisua. Jokainen uusi asennus tehdään automatisoidun julkaisuputken (eng. deployment pipeline tai build pipeline) kautta. Muutokset liikkuvat julkaisuputkessa käyden lävitse joukon laadunvarmistusvaiheita ja testausympäristöjä ja päätyen lopulta tuotantoon. Jatkuvan julkaisun toteuttaminen sisältää hyvin paljon suunnittelua ja haasteita. Vaikka ohjelmistoa julkaistaisiin jatkuvasti, on päivitysten saattaminen palvelimelle silti yhä paikoittain monimutkaista. Toiminnassa olevan ohjelmiston on usein säilyttävä päivityksenkin aikana toimintakykyisenä ja käytettävissä, jolloin julkaisuputken käyttämien menetelmien suunnittelu vaatii lukuisien yksityiskohtien huomioimista.
Esimerkkejä
Jatkuva julkaisu (eng. continuous deployment tai continuous delivery) tarkoittaa, että verkkopalvelu voidaan päivittää uuteen versioon koska tahansa. Jatkuvan julkaisun avulla muutokset palveluun tapahtuvat katkottomasti ja nopeasti. Tyypillisesti tämä tarkoittaa jatkuvaa, esimerkiksi päivittäistä, palvelun päivittämistä.
- Kuvapalvelu Flickr päivittää ohjelmistoa tuotantoon kymmenen kertaa päivässä.
- Amazon julkaisi uuden version palvelustaan joka 12 sekunti jo vuonna 2011.
- AirBnb-palvelussa uuden version asennus kestää kahdeksan minuuttia.
- Netflix on julkaissut oman jatkuvan julkaisun alustansa yleiseen käyttöön.
- Suomessa kehitetyt Fonectan palvelut ovat hyödyntäneet jatkuvaa julkaisua vuosikausia.
Lähteitä liittyen aiheeseen
- https://www.avarko.com/
- https://solinor.fi/devops-tehostettua-ohjelmistokehitysta/
- https://gofore.com/tiesitko-jatkuvan-julkaisun-olevan-jo-arkipaivaa/
- https://fi.wikipedia.org/wiki/Devops
- https://helda.helsinki.fi/bitstream/handle/10138/229071/vuorinen_devops_gradu.pdf?sequence=3
- https://www.theseus.fi/bitstream/handle/10024/96663/Klinga_Markus.pdf
Linkit wikin muihin sivuihin
- [DevOps B3.2] (https://gitlab.labranet.jamk.fi/harkka-gt0-2018/gt0/blob/master/docs/devops.md)
- [Ketterä kehittäminen F3.2] (https://gitlab.labranet.jamk.fi/harkka-gt0-2018/gt0/blob/master/docs/agiledev.md)
- [Jatkuvasuunnittelu D5.2] (https://gitlab.labranet.jamk.fi/harkka-gt0-2018/gt0/blob/master/docs/jatkuvasuunnittelu.md)