GitHubは、2023年5月9日〜11日にGitHubで発生した3つの障害の原因と対策を公式ブログで明らかにした。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
GitHubは2023年5月16日(米国時間、以下同)、5月9日〜11日にかけてGitHubで発生した障害について、原因と対策を公式ブログで明らかにした。
GitHubでは3日間に渡って、立て続けに3つの障害が発生していた。障害の概要と影響は以下の通り。
9日には、8サービスが停止し、大部分は1時間強続いた。障害の原因は、Gitデータを提供する内部サービスの構成変更だった。変更後にクラスタのフェイルオーバーが発生。ロールバックを試したが、内部のインフラエラーにより失敗した。フェイルオーバーの完了後、データベースへの書き込み操作が回復し、影響は軽微なものとなったが、Gitデータ、Webサイトコンテンツ、障害発生中に受け取ったPull Requestの整合性を確保するのに時間を要した。
10日には、GitHubアプリの認証トークンを発行するデータベースクラスタで、書き込み待機時間が通常の7倍に増加。認証トークンリクエストの失敗率はピーク時で76%に達した。障害の原因は、GitHubアプリの権限管理APIの非効率な実装だった。特定の状況において大量の書き込みとタイムアウトが発生する状態になっており、タイムアウト後に別の呼び出し元からAPIが実行されることも、インシデントを誘発させる一因となった。
11日には、Gitデータを提供しているデータベースクラスタがクラッシュした。プライマリーのフェイルオーバーは成功したが、リードレプリカが接続されておらず、読み書きの負荷を処理できなくなった。結果として、平均15%のリクエストが失敗したり遅延したりした(ピーク時は26%に達した)。
GitHubは、分散型システムにおいて障害の発生は不可避だが、上記のような複数のサービスにまたがる重大な障害を引き起こすべきではないと説明。障害の影響が広範囲に及んだ理由を2つ挙げた。
1つは、Gitの読み書きで欠かせないGitデータベースで障害が起きたことだ。多くのワークフローがGitの読み書きを前提にしているため、遅延と障害の増加につながり、GitHub Actionsでデータを引き出せなくなったり、Pull Requestが更新されなくなったりした。
もう1つは、トークン発行に影響を及ぼす障害が起きたことだ。トークンを必要とするGitHubの機能が利用できなくなり、GitHub ActionsやGitHub Codespacesで実行に必要なデータにアクセスできず、大規模な障害につながった。
GitHubは今後の対策として、以下の5つを挙げており、すでに一部の取り組みを開始しているとした。
Copyright © ITmedia, Inc. All Rights Reserved.