DevOpsilla tarkoitetaan sovelluskehityksen ja tuotannossa olevan sovellusympäristön ylläpidon sulautumista saumattomaksi kokonaisuudeksi. DevOps on ajattelutapa eikä mikään yksittäinen työkalu tai menetelmä: sitä sovelletaan ohjelmistoasiakkaidemme toiminnassa hyvin erilaisilla tavoilla. Avaan tässä kirjoituksessani hieman joitakin keskeisiä periaatteita, jotka on hyvä huomioida DevOps-malliin siirtyessä.
Varaudu muutokseen
DevOps on vastakohta perinteiselle mallille, jossa sovelluskehittäjät ja ylläpito oli erotettu omiin siiloihinsa. Siilot jäykistävät toimintaa, kun tavoitteiden vieminen toteutukseen edellyttää useiden eri yksiköiden välistä yhteispeliä. Samalla työhön osallistuvien käsitys kokonaisuudesta ja yhteisistä tavoitteista hämärtyy.
Jos olet varhaisessa vaiheessa DevOps-matkalla, edessäsi on suuri kulttuurimuutos joka vaikuttaa koko organisaatioon ja sidosryhmiin. Älä yritä saavuttaa kaikkea kerralla, vaan yritä löytää pieniä pilottiprojekteja, joiden avulla pääset kokeilemaan, millaiset toimintamallit ovat hyviä omassa organisaatiossasi. Varmista että muutoksella on johdon tuki ja että koko tiimi on sitoutettu uuteen tekemiseen.
Varmista sujuva viestintä
Ihanteellisessa DevOps-tiimissä on kaikki osaaminen jonkin yksittäisen kokonaisuuden toteuttamiseen. Tällöin sekä kehityksen että tuotannon näkökulmat huomioidaan tekemisessä, eikä asioiden tekeminen jää odottamaan jonkin toisen organisaatioyksikön tekemistä. Tiimin pitää myös olla riittävän pieni, jotta viestintä on sujuvaa.
Sekä ohjelmistokehityksen että alustojen ylläpidon voi ostaa ulkopuolelta, mutta ulkoisetkin asiantuntijat on istutettava osaksi samaa DevOps-tiimiä. Ihmiset työskentelevät ihmisten kanssa, ja erilaisten tikettirajapintojen takaa kommunikoiminen on hyvin tehotonta. Ota käyttöön yhteiset viestintävälineet, joiden kautta koko tiimi voi kommunikoida keskenään matalalla kynnyksellä ja jotka tuovat kaiken tiedon kaikkien saataville. Lyhyet mutta tiheällä aikavälillä pidetyt yhteiset tapaamiset usein auttavat nostamaan esiin ideoita tai ongelmia joista ei muuten tulisi keskustelua.
Pilveistä ja automatisoi
Tehokkaan DevOps-tekeminen edellyttää automatisoituja työnkulkuja ja alla olevan infran kytkemistä sovelluskehityksen prosesseihin automaation avulla. Automatisoidussa ympäristössä muutosten tekeminen onnistuu pienemmän tiimin voimin verrattuna perinteiseen infrastruktuuriin, jossa työnkulut edellyttävät manuaalityötä useassa eri kerroksessa ja osaamista kaikilta osa-alueilta.
Pilvialustoja käyttäessäsi sinun ei tarvitse huolehtia fyysisistä palvelinalustoista ja niiden skaalaamisesta. Nykyaikaisten pilvialustojen ohjaus on ohjelmointirajapintojen kautta automatisoitavissa, jolloin ihanteellisesti koko ajoympäristö määritellään ohjelmallisesti – tästä käytetään nimitystä infrastructure as code. Tällaisilla työkaluilla voidaan rakentaa ympäristö, jossa ajoympäristön pystytys ja skaalaaminen onnistuu täysin ilman manuaalityötä eli nopeammin ja pienemmän tiimin voimin.
Jatkuva integraatio ja jatkuva julkaisu eli CI/CD on DevOps-muotoisen ohjelmistotuotannon menetelmä, jolla lähdekoodimuutokset yhdistetään ohjelmistoprojektiin, testataan ja ajetaan tuotantoon lyhyissä ajanjaksoissa ja automaation avustamana. Menetelmällä virheet löytyvät nopeammin ja kehitys etenee ketterämmin. Sen ydin on CI/CD-työkalu (esim. Jenkins), jolla automatisoidaan kehitysputken eri vaiheet. Erilaisia työkaluja on saatavilla lukuisia sekä itse asennettavaksi että pilvipalveluna ostettavaksi. Varmista, että valittava työkalu on integroitavissa käytettävään ympäristöön ja että se on riittävän joustava vaatimusten muuttuessa.
Hanki DevOps-tiimiisi riittävä osaaminen pilvi-infran operointiin ja suunnitteluun. Hyvä vaihtoehto oman pilviosaamisen tai pilvikonsultin hankkimiselle on managed cloud, jossa saat tarpeelliset hallinnan ja ylläpidon palvelut pilvikapasiteetin kylkiäisenä. Managed cloud -palvelua käyttäessäsi edellytä palvelutoimittajalta saumatonta yhteistyötä ilman tarpeettomia raja-aitoja.
Varmista pilvialustaa ja hallintatyökaluja valitessasi, että niistä löytyvät avoimet ja yhteensopivat rajapinnat automatisoidun ympäristön rakentamiseen. Tee arkkitehtuuri- ja työkaluvalintoja, jotka eivät sido liiaksi yhteen pilvitoimittajaan, esimerkiksi käyttämällä avoimen lähdekoodin työkaluja pilvi-infrastruktuurin päällä ja suunnittelemalla sovellus monipilviympäristöön sopivaksi. Näin pidät tulevaisuuden vaihtoehdot avoimena ja helpotat sovelluksen skaalaamista ja siirtämistä tarpeidesi muuttuessa.
Valvo ja hallitse
Laadukkaasti toimivan tuotantoympäristön edellytyksenä ovat riittävä osaaminen, oikeat työkalut ja hyvät toimintamallit. Organisoi DevOps-tiimi siten, että osaajilla on riittävästi työaikaa ympäristön kehittämiseen päivittäisten rutiinitöiden sekä ongelmatilanteiden selvittämisen lisäksi. Vältä tilanteita, joissa ohjelmistokehittäjät joutuvat oman työnsä ohella selvittämään alustan ongelmia: jos kumpaankaan työhön ei pääse keskittymään kunnolla, tulos ei ole laadukas, vaikka osaaminen löytyisi.
Järjestelmäylläpidon tärkeimmät työkalut ovat monitorointi- ja automaatiotyökalut. Monitorointityökalu valvoo ympäristösi tilaa, joka on perusedellytys tehokkaaseen reagointiin häiriötilanteissa ja auttaa ennakoimaan niitä. Valitse DevOps-työhön monitorointityökalu, joka kykenee kytkeytymään järjestelmiin kaikilla sen kerroksilla ja joka tukee erilaisten automaatioiden rakentamista. Ota varhaisessa vaiheessa käyttöön tarvittavat automaatiotyökalut, esimerkiksi Salt, Ansible, tai Terraform, ja pyri rakentamaan ympäristö mahdollisimman pitkälle niitä hyödyntäen ja infrastructure as a code -periaatetta noudattaen. Tämä maksaa itsensä takaisin myöhemmässä vaiheessa, kun sinun ei tarvitse palata automatisoimaan manuaalisesti rakennettuja hämähäkinseittejä.
IT-palvelunhallinta on vuosikymmenten saatossa joukoksi vakiintuneita toimintamalleja ja prosesseja, kuten muutosten-, häiriöiden- tai kapasiteetinhallinta. Nämä saattavat kuulostaa kankeilta, mutta jokaisella on yksinkertainen perustarkoitus: varmistaa, että muutokset tehdään hallitusti, häiriöt selvitetään tehokkaasti ja niistä opitaan, ja että tietojärjestelmien kapasiteetti muuttuu käyttötarpeiden mukana. Kankeus ei synny siitä että näitä asioita edellytetään, vaan kankeista organisaatiorakenteista ja toimintatavoista, jotka eivät tue asiantuntijatyötä. Paras ymmärrys työskentelystä on tiimillä itsellään: anna heille vapaat kädet valita parhaat toimintatavat.
👉 Useimmat ohjelmistoasiakkaamme noudattavat jo eriasteisia DevOps-käytäntöjä tai vähintään pohtivat niiden käyttöönottoa. Tärkeintä DevOps-matkalla on valita käytännöistä ne, jotka omaan toimintaan sopivat: kaikki organisaatiot ovat erilaisia. Etene pienin askelin, jolloin pääset punnitsemaan ratkaisujen toimivuutta ja tekemään korjausliikkeitä. Toivottavasti näistä ajatuksistani oli sinulle apua!