Jatkuvan integraation moottorin hienosäätö teknologiajohtajille

By Kohsuke Kawaguchi

Paranna ja optimoi jatkuvan integraation (CI) putkiasi ratkaisemalla haasteita, kuten virheiden selvittely, epäluotettavat testit ja tehokas yhteistyö. Tulokset? Tehokkaampi ohjelmistokehitys, pienempi riski ja parempi sijoitetun pääoman tuotto.

Teknologiajohtajana (CTO) joudut tasapainoilemaan ristiriitaisten vaatimusten välillä yrittäessäsi samalla olla tukahduttamatta innovointia. 

Organisaatiosi kohtaamat haasteet vaihtelevat tiukemmista budjettirajoituksista digitaalisen muutoksen tarpeeseen ja kasvavan kilpailun torjumiseen, eikä niitä ratkaista yhdessä yössä. 

Mutta miten voit realistisesti toimittaa laadukkaita tuotteita nopeammin ja samalla karsia budjetin paisumista? Jotkin näistä haasteista voidaan ratkaista tehokkaammin harkituilla jatkuvan integraation (CI) lähestymistavoilla.

4 CI-putken optimointistrategiaa

CTO:t valvovat kehitys- ja testiautomaatiojärjestelmien suunnittelua ja ylläpitoa julkaisuprosessien sujuvoittamiseksi. Jatkuvan integraation kypsyystasosta riippumatta jopa kaikkein edistyneimmät tiimit voivat jäädä jälkeen seuraavilla neljällä osa-alueella.

Tässä ovat suositukseni yleisimpien haasteiden ratkaisemiseksi, jotta CI tukisi innovointia paremmin.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

1. Aseta älykäs virheiden luokittelu etusijalle

Kuvittele jatkuvan integraation prosessi auton moottorina. Kehittäjien jatkuvasti tekemät koodimuutokset toimivat mäntinä, jotka vievät moottoria eteenpäin. Nämä yksittäiset kontribuutiot on integroitava saumattomasti, jotta ne voivat käyttää koko järjestelmää aivan kuin ne pyörittäisivät valtavaa potkuria.

Parhaassa mahdollisessa maailmassa, jos jokainen koodimuutos olisi virheetön, kehittäjät voisivat tehdä commitin suoraan tuotantohaaraan ja ohittaa CI-prosessin monimutkaisen koneiston.

Todellisuudessa koodimuutoksissa on kuitenkin usein puutteita. Tällöin testaus astuu kuvaan laadunvalvontamekanismina. Aivan kuten moottorit tuottavat kitkaa ja lämpöä, CI-prosessi kohtaa haasteita testien epäonnistumisten muodossa. Nämä epäonnistumiset ovat kuin jumiutuneita mäntiä, ja ne vaativat nopeaa huomiota ja ratkaisemista.

Vaikka testien epäonnistumiset CI:ssä ovat väistämättömiä, virheiden luokitteluprosessin tehokkuus voi vaikuttaa merkittävästi CI-putken onnistumiseen.

Älykäs virheiden luokittelu CI:n tehokkuuden parantamiseksi

  • Hyödynnä dataa oivallusten saamiseksi: Hyödynnä testisarjasi kattavaa dataa mallien, trendien ja poikkeamien tunnistamiseen. Älykkäät virheiden luokittelutyökalut muuttavat raakatason virhelokit tiiviiksi oivalluksiksi. Sen sijaan, että kävisit valtavia määriä testituloksia manuaalisesti läpi, saat nopeammin ja selkeämmin kuvan CI-prosessiin vaikuttavista taustalla olevista ongelmista.
  • Hyödynnä automaatiota ja tekoälyä: Älä rajoitu manuaaliseen virheiden vakavuuden ja prioriteetin määrittämiseen, vaan hyödynnä tekoälyratkaisuja ymmärtääksesi paremmin, onko ongelma ilmennyt aiemmin. Hyödynnä tekoälyä ohjelmistojen virhelokien tiiviiden yhteenvetojen luomiseen, jotta SDET-asiantuntijasi ja testiautomaatioinsinöörisi voivat nopeasti saada tietoa testien epäonnistumisten perimmäisistä syistä.

Ottamalla nämä strategiat käyttöön CTO:t voivat varmistaa sujuvamman ja tehokkaamman CI-putken, mikä parantaa kehitystiimien ja koko organisaation tuloksia.

2. Minimoi epäluotettavien testien aiheuttama kitka

Ajattele epäluotettavia testejä moottorin hammasrattaiden väliin joutuneena hiekkana. Ne aiheuttavat tarpeetonta kitkaa ja voivat valvomatta jätettyinä pysäyttää koko järjestelmän. Tilanne on verrattavissa siihen, että jättäisit autosi vilkkuvan moottorin merkkivalon huomiotta.

Yksi epäluotettavien testien yleisimmistä aiheuttajista on "epävakaisuus". Nykypäivän nopeatempoisissa CI-ympäristöissä nopean koodin käyttöönoton tavoittelu usein pahentaa epävakaiden testien ongelmaa. Nämä epäjohdonmukaiset testit häiritsevät ohjelmistojen toimitusputkea, kuormittavat projektiaikatauluja ja herättävät epäilyksiä testien luotettavuudesta, mikä vie kehittäjiltä arvokasta aikaa ja energiaa.

Epävakaiden testien perimmäiset syyt liittyvät usein joko puutteelliseen testisuunnitteluun tai ulkoisiin ympäristötekijöihin. Monet tiimit ottavat käyttöön strategioita näiden testien hallitsemiseksi, kuten:

  • Testien suorittaminen uudelleen, kunnes ne menevät läpi.
  • Testien siirtäminen alemmas putkessa.
  • Testien eristäminen yksittäisiä suorituksia varten.

Nämä toimenpiteet voivat kuitenkin hidastaa tahattomasti sekä CI-prosessia että kehittäjien työskentelytahtia. Tämän haasteen ratkaisemisessa keskeistä on testien havaittavuus ja aiempien suoritusten seuranta. Tunnistamalla epävakauteen taipuvaiset testit tiimit voivat vahvistaa luottamusta testisarjaansa ja puuttua perimmäisiin ongelmiin.

Innovatiiviset tiimit näyttävät jo tietä tällä alueella. Esimerkiksi Spotify on kehittänyt matemaattisen mallin, joka yhdistää epävakauden muihin testien epäonnistumisiin, kun taas Dropbox analysoi testidatojaan yksityiskohtaisesti perimmäisten ongelmien paikantamiseksi.

Vaikka epävakaisiin testeihin puuttuminen on ratkaisevan tärkeää, liiallinen korjaaminen voi olla haitallista. Oikean tasapainon löytäminen on välttämätöntä, ja paras tapa saavuttaa tämä tasapaino on dataan perustuva lähestymistapa. Tämä menetelmä auttaa erottamaan, mitkä testien epäjohdonmukaisuudet vaativat välitöntä huomiota ja mitkä voidaan hetkeksi sivuuttaa.

3. Optimoi testaus nopean epäonnistumisen varalta

Perinteisesti testaus on ollut kattavaa: jokainen testi suoritetaan joka kerta. Ohjaavana periaatteena oli perusteellisuus. Tekoälyn yleistymisen myötä voimme kuitenkin nyt keskittyä strategisesti testeihin, jotka todennäköisimmin tunnistavat virheet.

Testien priorisointi vähentää merkittävästi CI-putken paisumista, mutta sen määrittäminen, mitkä testit ovat ratkaisevia, voi ehkäistä tehottomuudet jo alkuunsa.

Paranna testikokoelmasi nopeutta ja tehokkuutta omaksumalla nopeasti epäonnistumisen periaate. Tässä on joitakin huomioon otettavia tekniikoita:

  • Priorisoi liiketoimintavaikutuksen perusteella: Tunnista ja priorisoi testitapaukset, jotka kattavat keskeiset toiminnot. Varmista, että nämä vaikutukseltaan merkittävät testit suoritetaan heti aluksi.
  • Suorita testit rinnakkain: Sen sijaan, että testit suoritetaan lineaarisesti ja peräkkäin, hyödynnä TestNG:n tai JUnitin kaltaisia työkaluja useiden testien suorittamiseen samanaikaisesti. Tämä lähestymistapa poistaa joutilaana odottamisen ja maksimoi testien läpimenon.

Intel DAOS sovelsi tätä lähestymistapaa testien valintaan. Suorittamalla valikoivasti muokattuun lähdekoodiin liittyviä testejä tiimi nopeutti kehityssyklejään ja säästi yli 2 000 tuntia kuukaudessa.

More Articles

4. Paranna yhteistyötä oikeilla tiedoilla, oikealle henkilölle ja oikeaan aikaan

Sujuvan CI-prosessin kannalta on olennaista hallita vetopyynnöt tehokkaasti. Tiimit seuraavat usein, mitkä testikokoelmat ovat aktiivisia niiden vetopyynnöissä, ja toimivat niiden valmistuttua tilanteen mukaisesti. Tämä voi kuitenkin johtaa toistuviin keskeytyksiin; tärkeät testien ilmoitukset saattavat jäädä huomaamatta sekavan CI-järjestelmän keskellä tai hukkua täyteen sähköpostilaatikkoon.

Yksi ratkaisu tähän haasteeseen on “suoraan vastuussa olevan henkilön” (DRI) käsite. Vaikka tätä periaatetta voidaan soveltaa useilla eri aloilla, siitä on erityistä hyötyä CI:n yhteydessä.

DRI-henkilöiden nimeäminen tiimeissä tarjoaa useita etuja:

  • Poistaa epäselvyyksiä: DRI:n nimeäminen selkeyttää rooleja ja ehkäisee yleistä ongelmaa, jossa tehtäviä jää hoitamatta, koska kaikki olettavat jonkun muun huolehtivan niistä.
  • Välttää päällekkäisen työn: Kun DRI on nimetty, ei ole vaaraa, että useat tiimin jäsenet työskentelevät tahattomasti saman tehtävän parissa.
  • Parantaa tehokkuutta ja kustannustehokkuutta: Selkeät DRI-roolit tehostavat viestintää ja varmistavat, että keskusteluihin osallistuvat vain olennaiset henkilöt, mikä säästää aikaa ja resursseja.
  • Helpottaa päättäväistä toimintaa: DRI-henkilöiden avulla johtajat voivat delegoida tehtäviä tehokkaammin, estää päätöksenteon jumittumisen ja parantaa koko tiimin tuottavuutta.

CI:ssä huomaamatta jäävien testien ilmoitusten haasteen ratkaisemiseksi yksilöityjen testi-ilmoitusten toimittaminen suoraan DRI:lle voi nopeuttaa priorisointiprosessia ja vähentää muun tiimin tarpeettomia ilmoituksia.

CI:n parantamisen sijoitetun pääoman tuotto

Tehokas CI parantaa ohjelmiston laatua, nopeuttaa julkaisuja ja havaitsee ongelmat aiemmin yhteistyöhön perustuvassa putkessa. Niille, jotka kamppailevat pilvipalvelujen kustannusten kanssa tai joiden toimintaa laitteistorajoitteet rajoittavat, testien suorittaminen rinnakkain ei riitä palautteen nopeuttamiseen. 

Hienosäädä CI:täsi ja kohdista se yleisiin kitkakohtiin, kuten priorisointiin, epävakaisiin testeihin, testien valintaan ja ilmoituksiin, jotta voit vähentää riskejä ja virheiden todennäköisyyttä myöhemmissä kehityssykleissäsi.

Älykkäämpi ja dataan perustuva ongelmien tunnistaminen ja yhteistyö tulisi sisällyttää CI:n optimointisuunnitelmaasi, jotta saat CI-työstäsi parhaan mahdollisen sijoitetun pääoman tuoton.

Aloita kehitysprosessisi tehostaminen jo tänään! Hyödynnä jatkuvan integraation voimaa ja nopeuta ohjelmistoprojektejasi liittymällä uutiskirjeemme tilaajaksi – saat päivityksiä, kun julkaisemme uusia artikkeleita alan johtajilta. 

Kohsuke Kawaguchi
Kohsuke Kawaguchi is co-founder and co-CEO at Launchable. Famous for creating Jenkins, Kohsuke is passionate about solving problems developers face every day. As CTO of CloudBees, he worked with Harpreet to create the Jenkins business and grew the team to over 400 people. Before joining CloudBees, Kawaguchi was with Sun Microsystems and Oracle, where he worked on a variety of projects and initiated the open-source work that led to Jenkins. He is an O’Reilly open-source Award recipient, JavaOne Rockstar, Japan OSS Contributor Award recipient, and a Rakuten Technology Award recipient.
Follow the author:

You may also like