DevOps on noussut olennaiseksi filosofiaksi, joka yhdistää ohjelmistokehityksen ja IT-toiminnot. Se on enemmän kuin pelkkien DevOps-työkalujen käyttöä. Menestyksekäs DevOps-tiimi ei ainoastaan nopeuta toimitusprosessia, vaan varmistaa myös laadun ja luotettavuuden. Tällaisen tiimin luominen edellyttää kuitenkin työkalujen, kulttuurin, prosessien, yhteistyön ja monen muun tekijän saumatonta yhdistämistä. Mitkä ovat huippuluokan DevOps-tiimin keskeiset osat, ja miten organisaatiot voivat yhdistää ne parhaiden tulosten saavuttamiseksi? Osana tätä sarjaa meillä oli ilo haastatella Dylan Etkiniä, Sleuthin perustajaa ja toimitusjohtajaa.
Hei, Dylan – Voisitko kertoa meille taustastasi?
Aloitin urani ohjelmistoinsinöörinä. Olin onnekas päästessäni pieneen startup-yritykseen, Atlassianille, sen 20. työntekijäksi. Vietin Atlassianilla 10 vuotta oppien valtavasti ja seuraten organisaation kasvua 20 työntekijästä 1 200:aan. Työskentelin yhtenä Jiran kolmesta ensimmäisestä insinööristä, ensimmäisenä Jira-arkkitehtina sekä Bitbucketin tekniikan vetäjänä ja kasvatin kyseisen tuotteen käyttäjämäärän 40 000:sta 2 miljoonaan.
Lähdin Atlassianilta ja liityin pieneen startup-yritykseen nimeltä Statuspage. Vuotta myöhemmin Atlassian osti Statuspagen, ja huomasin olevani jälleen emolaivassa. Johdettuani kyseistä tiimiä Atlassianilla kolme vuotta päätin lähteä omilleni ja perustin Sleuthin tuotteistamaan sen, mikä on aina ollut intohimoni: tehokkaiden insinööritiimien rakentamisen.
Olen aina ollut kiinnostunut kehittäjätyökaluista ja tiimien auttamisesta työskentelemään tehokkaasti sekä oppimaan jatkuvasti.
Ketä kiität menestyksesi saavuttamisesta?
Monet ihmiset ovat auttaneet minua matkan varrella. Mitä vanhemmaksi olen tullut, sitä paremmin olen ymmärtänyt, kuinka ainutlaatuisen verkoston olen rakentanut ja kuinka valmiita kaikki siinä olevat ovat auttamaan, kun heiltä pyydetään apua.
Yksi erityisen mieleen jäänyt esimerkki on LaunchDarklyn perustaja ja teknologiajohtaja John Kodumal. John ja minä olimme kollegoita Atlassianilla. Kun hän lähti perustamaan LaunchDarklya, hän kertoi aina avoimesti kokemuksistaan startup-yrittäjänä.
Kun aloin motivoida itseäni Sleuthin perustamiseen, hän tuki minua kaikilla tasoilla. Ideoiden hiomisesta avoimiin keskusteluihin etenemistavasta ja ensimmäiseksi asiakkaaksemme ilmoittautumiseen John on aina auttanut matkani jokaisessa vaiheessa.
Voisitko kertoa meille kolmesta vahvuudesta, taidosta tai ominaisuudesta, jotka ovat auttaneet sinua pääsemään urallasi tähän pisteeseen? Miten muut voivat aktiivisesti kehittää näitä osa-alueita itsessään?
- Sinnikkyys. Taidot ja älykkyys vievät vain tiettyyn pisteeseen asti. Palaaminen saman ongelman pariin yhä uudelleen on paljon tehokkaampaa. Sinnikkyys, jopa useiden epäonnistumisten edessä, on ollut menestykseni perusta.
- Huomio yksityiskohtiin. Tämä on ominaisuus, joka on aina tullut minulle luonnostaan. Insinöörinä se on elintärkeä taito, jonka ansiosta pystyt suoriutumaan edessäsi olevista tehtävistä erinomaisesti. Startup-ympäristössä tämä taito on vieläkin tärkeämpi. Kun tuotetta ohjataan visiosta todellisuuteen, huomio yksityiskohtiin ratkaisee, syntyykö keskinkertainen tuote vai jotain, mitä käyttäjät rakastavat.
- Delegointi. Vaikka sinun on otettava liiketoiminnastasi täysi vastuu, startup muuttuu hyvin nopeasti harjoitukseksi, jossa palkataan monilla alueilla itseäsi älykkäämpiä ihmisiä ja opitaan luopumaan omista rakennuspalikoistasi, jotta muut voivat menestyä ja viedä liiketoimintaasi eteenpäin.
Mitä taitoja yrität edelleen kehittää?
Työskentelen jatkuvasti monien asioiden parissa, joten kehitettävistä taidoista ei ole koskaan pulaa. Tällä hetkellä ajatuksissani on ennen kaikkea taito saada ihmisistäsi paras irti. Jokainen on erilainen, ja sellaisen ympäristön luominen, jossa kukin voi tehdä parhaansa, on haastavaa.
Puhutaanpa menestyksekkäästä DevOps-tiimistä. Mitä keskeisiä tavoitteita DevOps-tiimi voisi määritellä digitaalisen muutosmatkan varrelle?
DevOps-tiimit voivat itsenäisesti viedä työn tehokkaasti ideasta onnistuneeseen julkaisuun tuotantoympäristössä. Siksi DevOps-tiimin tärkein tavoite on rakentaa työkalut, prosessi ja kulttuuri, joiden ansiosta yksittäiset kehittäjät voivat viedä työn nopeasti ideasta onnistuneeseen julkaisuun.
Tärkeintä tavoitetta tukevat seuraavat tavoitteet:
- Mahdollisuus määritellä työ pieninä kokonaisuuksina
- Täysin automatisoitu CI/CD-putki
- Havainnointikyky ja tuotantoa edeltävät ympäristöt toimivat turvaverkkoina, joiden ansiosta kehittäjät voivat luottavaisin mielin viedä muutokset tuotantoon
- Selkeä prosessi tilanteisiin, joissa muutokset menevät pieleen. Kaikki tietävät, miten vika havaitaan ja järjestelmä palautetaan toimivaan tilaan
- Koko muun organisaation, kuten projektipäälliköiden, markkinoinnin, tuen, myynnin ja johdon, sitoutuminen. Tiimit eivät pysty toteuttamaan DevOps-muutosta ilman koko organisaation tukea
Onko DevOps-tiimien huomioitava joitakin haasteita tai yleisiä sudenkuoppia?
Niitä on liian monta lueteltavaksi. Yksi huomionarvoinen asia on ymmärtää, että DevOpsin soveltaminen tarkoittaa suuremman vastuun siirtämistä kehittäjälle. Tämä ei tapahdu ilmaiseksi, ja jos et investoi prosesseihin ja työkaluihin, vaarana on rakentaa järjestelmä, joka ei jätä kehittäjille aikaa varsinaisen työn tekemiseen.
Vaarana on myös sellaisen ympäristön rakentaminen, jossa kehittäjät palavat nopeasti loppuun. On muistettava, että ihmisten kapasiteetti on rajallinen, joten sinun on harkittava tarkkaan, mitä otat käyttöön DevOpsia harjoittelevien kehittäjien tukemiseksi.
Miten tehokas yhteistyö ja viestintä tiimin jäsenten välillä voivat parantaa DevOps-tiimin tuottavuutta ja menestystä, ja millaiset käytännöt voivat edistää tätä?
Viestintä ja yhteistyö ovat välttämättömiä DevOpsin harjoittamisessa. Tärkeitä käytäntöjä ovat esimerkiksi:
- Tehtävienhallintajärjestelmän käyttäminen kaikessa työssä sekä asiayhteyden ja tietojen sisällyttäminen commit-viesteihin ja koodikatselmointeihin
- Koodikatselmointi pull requestien avulla
- Tiimille tarkoitetun reaaliaikaisen chat-ratkaisun, kuten Slackin, tarjoaminen
- Tiimipohjaiset käyttöönottoilmoitukset Slackissa tai tiimin ChatOps-työkalussa
- Slack-pohjaiset hyväksynnät muutosten siirtämiseen esituotantoympäristöistä tuotantoon
- Yksittäisille kehittäjille lähetettävät ilmoitukset, kun heidän muutoksensa julkaistaan ja kun he ovat rikkoneet virhetilanteille asetettuja ehtoja
- Tiimin näkyvyys häiriötilanteisiin ja ajanjaksoihin, jolloin käyttöönottojen tulisi odottaa
- Tiimin demot yhdessä projektipäälliköiden ja muiden sidosryhmien kanssa
- Päivittäiset tilannepalaverit
Mikä rooli CI/CD:llä on DevOpsissa, ja mitkä ovat parhaat käytännöt CI/CD-putkien toteuttamiseen saumattoman ja luotettavan ohjelmiston julkaisuprosessin varmistamiseksi?
CI/CD on kiistatta tärkein työkalukokonaisuus, joka tukee DevOpsia harjoittavaa tiimiä. Ihannetapauksessa tiimeillä on täysin automatisoitu käyttöönottojen putki, joka suoritetaan kohtuullisessa ajassa, jotta kehittäjien ei tarvitse odottaa pitkään ja he voivat viedä muutoksensa tuotantoon. On tärkeää sisällyttää jatkuva integraatio ja testien suoritus osaksi tätä ihanteellista putkea. Vankan testikokonaisuuden suorittaminen muutoksille käyttöönoton ehtona on ensisijainen turvaverkkosi, joka varmistaa, että hyvät muutokset julkaistaan.
Jos tiimit pyrkivät julkaisemaan vain kerran viikossa, on mahdollista käyttää käyttöönottojen putkea, joka ei ole täysin automatisoitu. Jos tiimisi kuitenkin pyrkii julkaisemaan vähintään kerran päivässä, automaation on oltava täydellinen ja käyttöönoton tulee olla rutiininomainen tapahtuma.
Miten DevOps-kulttuurin ja ajattelutavan edistäminen vaikuttaa DevOps-tiimin kokonaismenestykseen, ja millä strategioilla organisaatiot voivat edistää tätä kulttuuria kehitys- ja operointitiimeissään?
Kehittäjille:
- Viikoittainen tai joka toinen viikko järjestettävä sprintin suunnittelu voi auttaa määrittämään tehtävien koon ja luomaan tiimin yhteisen näkemyksen siitä, miten tehtävät sopivat tähän ajanjaksoon
- Julkaisuhaaraan kohdistuva automatisoitu jatkuva integraatio sekä koko tiimin näkyvyys tuloksiin auttavat tiimiä pitämään julkaisun rakennettavissa
- Tiimissä kiertävän ”häiriövuoron” ylläpitäminen niin, että on selvää, kenen tehtävänä on pitää julkaisuhaara rakennettavissa
- Yksi parhaista tavoista julkaista keskeneräistä työtä on ottaa käyttöön jonkinlainen ominaisuuslippujen mekanismi.
- Voi myös olla erittäin tehokasta ottaa jokainen pull request käyttöön yksi kerrallaan. Tämän toimintamallin avulla voit sisällyttää muutoksen eräkoon tarkastelun pull requestin koodikatselmointiin. Jos erä on liian suuri, muut tiimin jäsenet voivat pyytää kehittäjää jakamaan muutoksen useiksi pull requesteiksi.
- Riittävästi mittareita ja ymmärrys niiden normaaliarvoista käyttöönoton varmentamiseen
- Ymmärrys siitä, miten tarvittaessa eskaloidaan tilanne ja palautetaan aiempi versio
- Heillä on valtuudet ottaa omat muutoksensa käyttöön kaikissa ylläpitämissänne ympäristöissä nopeasti ja ilman virheitä
Projektipäälliköille ja suunnittelijoille:
- Ota projektipäällikkö mukaan suunnitteluprosessiin, jotta hän voi tuoda esiin asiakkaan tarpeet vaiheittaisissa käyttöönotoissa.
- Ota käyttöön ominaisuusliput, joiden avulla koodi voidaan julkaista ilman, että se on vielä asiakkaiden nähtävissä. Tämä auttaa projektipäälliköitä säilyttämään tarvitsemansa joustavuuden ja antaa kehittäjille mahdollisuuden edetä nopeasti.
- Sopikaa palautteelle ja uudelleentyöstölle yhteinen mekanismi, kuten suoraan kehittäjälle osoitettu tehtävä. Yksi strategia keskeneräisen työn ongelman ratkaisemiseksi on ottaa tiimissä käyttöön kuuden viikon jaksot.
Tekniikan esihenkilöille:
- Ota käyttöön viestintää edistäviä prosesseja, kuten säännölliset suunnittelukokoukset, koodikatselmoinnit ja viikoittaiset demot.
- Sitoudu varaamaan teknistä aikaa sen varmistamiseen, että julkaisuhaaran koontiversiot läpäisevät tarkistukset. Koodin jatkuva eteneminen tarkoittaa myös investoimista tähän uuteen järjestelmään. Kun tiimi tunnistaa pullonkaulan, esihenkilön tulisi voida antaa tiimille mahdollisuus poistaa se (esimerkiksi korjata CI-testit, joiden epävakaus on yli 20 %).
- Ota käyttöön työkaluja, joiden avulla DORA-mittareita voidaan mitata jatkuvasti
Johtajille:
- Nosta projektiesi Accelerate-mittarit esiin ja tuo ne asiayhteyksineen johtoryhmäsi saataville.
- Tuo sovellustesi käytettävyysaika tai vastaava tieto esiin.
- Tarjoa johtoryhmällesi samat korkean tason tiedot toimitettavista suurista toiminnallisuuskokonaisuuksista.
- Jos olet johtaja, ymmärrä, että muutos vie aikaa. Edellytä tiimeiltäsi määrätietoisesti vastuunkantoa korkean tason tavoitteista, mutta ole joustava sen suhteen, miten he saavuttavat ne. Luota, mutta varmista.
- Varaa aikaa selittääksesi organisaatiollesi, miten tuotat arvoa asiakkaillesi. Selitä, miten vaiheittainen toimitus toimii, mitkä asiat julkaistaan kerralla ja miten tämä työskentelytapa voi auttaa teitä tuottamaan arvoa asiakkaille nopeammin.
Mitkä ovat menestyvän DevOps-tiimin olennaiset osatekijät?
1 . Tiimi työskentelee syyllistämättömässä kulttuurissa.
Ohjelmistokehitys on tiimityötä. Häiriöt ja virheet ovat tiimeille mahdollisuuksia oppia, eivät tilaisuuksia syyllistämiseen. Syyllistämätön kulttuuri voi ulottua häiriötilanteita pidemmälle. Kun tiimi asettaa tavoitteita toimintansa parantamiseksi, se voi keskittyä tulosten kehittämiseen sen sijaan, että se syyttäisi yksilöitä tai prosesseja siitä, miksi asiat eivät ole niin kuin niiden pitäisi olla.
2 . Käyttöönotot ovat rutiininomaisia tapahtumia.
Jotta julkaisuja voidaan tehdä pienissä erissä ja häiriötilanteisiin sekä asiakaspalautteeseen voidaan reagoida nopeasti, käyttöönoton on oltava helppo eikä se saa aiheuttaa pelkoa tai ahdistusta. Jos tiimi ei luota käyttöönottoihinsa tai jos ne kestävät liian kauan tai sisältävät manuaalisia vaiheita, tämä aiheuttaa pelkoa ja epäröintiä, mikä estää tiimejä omaksumasta DevOpsia.
3 . Kehittäjillä on henkilökohtaisesti valtuudet viedä muutokset konseptista luotettavaan julkaisuun tuotantoympäristössä. DevOps toimii, kun vastuu koko konseptista julkaisuun ulottuvasta prosessista siirretään kehittäjien käsiin. Näin tiimisi voi jakaa työn pieniin eriin ja tuottaa asiakkaalle arvoa nopeasti pienissä vaiheittaisissa toimituksissa.
4 . Tiimillä on turvaverkkoja, kuten havainnoitavuus ja häiriöiden mittarit, jotta se voi edetä nopeasti luottavaisin mielin (tämä on yksi datan havainnointityökalujen monista hyödyistä). Nopeasti etenemisen ja asioiden rikkomisen aika on ohi. Nyt sinun on edettävä nopeasti ja luotettavasti. Tätä varten käytössä on oltava automatisoidut turvaverkot.
5 . Koko organisaatio on sitoutunut työskentelemään DevOps-virrassa.
Mitä uusia kehityssuuntia ennakoit DevOps-ympäristössä, jotka voisivat vaikuttaa merkittävästi digitaalisen transformaation strategioihin tulevaisuudessa?
Tämä saattaa juuri nyt vaikuttaa itsestään selvältä vastaukselta, mutta tekoälytyökalut muuttavat jo sitä, miten kehittäjät työskentelevät, ja niillä on varmasti suuri vaikutus siihen, miten DevOpsia jatkossa toteutetaan. Tekoälyä käytetään vähintäänkin havaitsemaan ja tunnistamaan häiriöitä tavoilla, jotka eivät nykyään ole mahdollisia.
Jos se lunastaa kaikki lupauksensa, se korvaa kokonaan nykyiset monimutkaiset käyttöönotto- ja testausputket.
Tilaa The CTO Clubin uutiskirje, niin saat lisää näkemyksiä, koosteita, kysymyksiä ja vastauksia sekä paljon muuta!



