Virheenkäsittely erottaa prototyypin tuotantokoodista
Skripti toimii. Sitten API vastaa 429, verkko katkee puolessa välissä ja joku ilmoittaa, että automaatio rikkoi tuotannon.
Tämä on se hetki, jolloin prototyyppi eroaa tuotantokoodista.
Yksinkertainen jako: prototyyppi käsittelee happy pathin. Tuotantokoodi käsittelee kaiken muun.
Kolme asiaa, jotka puuttuvat lähes joka kerta
Retry-logiikka
Jos ulkoinen API ei vastaa tai palauttaa 429, skripti kaatuu. Sen sijaan pitäisi yrittää uudelleen, odottaa hetki, yrittää uudelleen, ja vasta sitten ilmoittaa virheestä.
Yksinkertainen esimerkki PowerShellissa:
$attempts = 0
do {
try {
$result = Invoke-RestMethod -Uri $url -Headers $headers
break
} catch {
$attempts++
Write-Warning "Yritys $attempts epäonnistui: $($_.Exception.Message)"
Start-Sleep -Seconds (2 * $attempts)
}
} while ($attempts -lt 3)
if ($attempts -ge 3) {
Send-MailMessage -To "admin@yritys.fi" -Subject "Automaatio epäonnistui" ...
}Exponential backoff, eli kasvava odotusaika uusintojen välillä, on standardi. Se antaa palvelulle aikaa toipua.
Osittaisten ajojen käsittely
Jos skripti prosessoi 500 käyttäjää ja kaatuu numero 312:ssa, mitä tapahtuu? Ajetaanko kaikki uudelleen alusta? Käsitelläänkö osa käyttäjistä kahdesti?
Tähän tarvitaan joko checkpoint, jossa tallennetaan, mihin asti on päästy ja jatketaan siitä, tai idempotenssi: varmistetaan, että sama operaatio voidaan ajaa uudelleen ilman sivuvaikutuksia. Idempotenssia käsitellään tarkemmin erillisessä artikkelissa.
Hälytykset oikeille ihmisille
Try-catch, joka kirjoittaa virheen lokiin kansioon, johon kukaan ei katso, ei ole virheenkäsittelyä. Se on itsepetos.
Virheistä pitää ilmoittaa jollekin. Sähköposti, Teams-viesti, kirjaus seurantatyökaluun. Lokin pitää sisältää riittävästi tietoa, jotta vian voi selvittää ilman arvausta.
Miksi tämä unohtuu
Koska prototyyppi toimii. Kun testivaiheessa kaikki menee hyvin, virheenkäsittely tuntuu tarpeettomalta.
Mutta automaatio, joka hajoaa hiljaa, on pahempi kuin automaatio, joka ei toimi ollenkaan. Ainakin silloin tiedetään, että pitää tehdä jotain.
Tuotantovalmis automaatio ilmoittaa selkeästi kun jokin menee pieleen, eikä jätä virhettä hiljaisesti lokiin.
Haluatko arvioida automaatioidesi tuotantovalmiutta? Otetaan yhteyttä.
Lue myös
Dokumentointi on tärkeämpää kuin itse automaatio
Automaatio ilman dokumentaatiota on ajastettu ongelma. Tässä käyn läpi, mitä hyvä dokumentaatio tarkoittaa käytännössä ja miksi se on tärkeämpää kuin moni luulee.
Lue lisääIdempotenssi automaatiossa: miksi sama operaatio pitää voida ajaa kahdesti
Idempotenssi on yksi tärkeimmistä mutta harviten mainituista automaation rakennusperiaatteista. Tässä selitän, mitä se tarkoittaa ja miten se toteutetaan käytännössä.
Lue lisää