Skip to content
Latchkey

CIインシデントとは何か?解説

CIインシデントとは、チームのmergeおよび出荷の能力をブロックまたは低下させるほどに重大な、継続的インテグレーションシステムへの混乱です。

すべての赤いbuildがインシデントというわけではありません。インシデントとは、pipeline自体が信頼できなくなる、あるいは利用できなくなり、デリバリーを停止させるほどになった状態です。プロバイダーの障害、ダウンしているregistry、停止したself-hostedのフリートなどです。これらを検知と対応を伴うインシデントとして扱うことが、チームを静かに消耗させるのを防ぎます。

何が失敗をインシデントに引き上げるか

単一のjobがfailするのは日常茶飯事です。それがインシデントになるのは、影響が広範または持続的であるときです。多数のbuildが同時にfailする、pipelineがまったく実行できない、あるいはチーム全体でデリバリーがブロックされる、といった場合です。範囲と継続時間こそが、インシデントを一度きりのものと分けるものです。

よくあるCIインシデント

  • jobの実行を妨げるCIプロバイダーの障害。
  • registryまたは依存関係のミラーがダウンし、多数のインストールがfailすること。
  • 停止したself-hosted runnerのフリート。孤立したjob、あるいは埋まったディスク。
  • すべてのpipelineを壊す、不適切な共有設定の変更。

インシデント vs transientな不具合

transientな不具合は短時間で自然に解消しますが、インシデントは持続的で、通常は介入を必要とします。リトライは不具合には対処できますが、進行中のインシデントには対処できません。多数のjobにわたってリトライがfailし続けるなら、おそらく孤立したtransientなノイズではなく、インシデントの最中にいます。

適切に対応する

早期に検知し(個々のjobだけでなく失敗率にアラートを設定する)、チームが時間を無駄にしないようコミュニケーションし、緩和し(failover、一時停止、または問題の変更をロールバックする)、その後は改善できるよう復旧時間を測定します。MTTRを追跡することで、インシデントを学習のループへと変えられます。

Latchkeyの視点

自己修復は、人間に到達する孤立した失敗の数を減らすため、本物のインシデントが際立ちます。Latchkeyの自己修復managed runnerは、transientおよびメカニカルな失敗を自動的にリトライするため、一度きりの不具合があなたのbuildをfailさせることはなく、インシデントと取り違えられることもありません。

重要なポイント

  • CIインシデントは、チーム全体にわたってデリバリーをブロックまたは低下させます。
  • 範囲と継続時間が、インシデントを一度きりの失敗と区別します。
  • プロバイダーの障害、registryのダウンタイム、停止したフリートがよくあります。
  • 早期に検知し、コミュニケーションし、緩和し、復旧を測定しましょう。

関連ガイド