GitHub、2023年5月に発生した3つの障害の原因を明らかに 分散型なのになぜ?:構成変更によるフェイルオーバー、データベースクラッシュなど
GitHubは、2023年5月9日〜11日にGitHubで発生した3つの障害の原因と対策を公式ブログで明らかにした。
GitHubは2023年5月16日(米国時間、以下同)、5月9日〜11日にかけてGitHubで発生した障害について、原因と対策を公式ブログで明らかにした。
GitHubでは3日間に渡って、立て続けに3つの障害が発生していた。障害の概要と影響は以下の通り。
- 2023年5月9日:
- 設定変更に伴うGitデータベースの性能低下
- 主要10サービス中、8サービスで性能低下
- 2023年5月10日:
- 高負荷によるGitHub Appの認証トークン発行の性能低下
- 主要10サービス中、6サービスで性能低下
- 2023年5月11日:
- リードレプリカの喪失によるGitデータベースの性能低下
- 主要10サービス中、8サービスで性能低下
9日には、8サービスが停止し、大部分は1時間強続いた。障害の原因は、Gitデータを提供する内部サービスの構成変更だった。変更後にクラスタのフェイルオーバーが発生。ロールバックを試したが、内部のインフラエラーにより失敗した。フェイルオーバーの完了後、データベースへの書き込み操作が回復し、影響は軽微なものとなったが、Gitデータ、Webサイトコンテンツ、障害発生中に受け取ったPull Requestの整合性を確保するのに時間を要した。
10日には、GitHubアプリの認証トークンを発行するデータベースクラスタで、書き込み待機時間が通常の7倍に増加。認証トークンリクエストの失敗率はピーク時で76%に達した。障害の原因は、GitHubアプリの権限管理APIの非効率な実装だった。特定の状況において大量の書き込みとタイムアウトが発生する状態になっており、タイムアウト後に別の呼び出し元からAPIが実行されることも、インシデントを誘発させる一因となった。
11日には、Gitデータを提供しているデータベースクラスタがクラッシュした。プライマリーのフェイルオーバーは成功したが、リードレプリカが接続されておらず、読み書きの負荷を処理できなくなった。結果として、平均15%のリクエストが失敗したり遅延したりした(ピーク時は26%に達した)。
分散型システムのGitHubで広範囲に影響が出た理由
GitHubは、分散型システムにおいて障害の発生は不可避だが、上記のような複数のサービスにまたがる重大な障害を引き起こすべきではないと説明。障害の影響が広範囲に及んだ理由を2つ挙げた。
1つは、Gitの読み書きで欠かせないGitデータベースで障害が起きたことだ。多くのワークフローがGitの読み書きを前提にしているため、遅延と障害の増加につながり、GitHub Actionsでデータを引き出せなくなったり、Pull Requestが更新されなくなったりした。
もう1つは、トークン発行に影響を及ぼす障害が起きたことだ。トークンを必要とするGitHubの機能が利用できなくなり、GitHub ActionsやGitHub Codespacesで実行に必要なデータにアクセスできず、大規模な障害につながった。
GitHubは今後の対策として、以下の5つを挙げており、すでに一部の取り組みを開始しているとした。
- 内部プロセスを見直し、変更が常に安全にデプロイされるよう調整を進める
- 障害後の分析とレビューに加えて、障害がサービス全体に与えた影響を分析し、今後同様の障害が発生した場合に影響を軽減できる場所を特定する
- 高コストで低頻度のクエリパターンの観測性を改善し、同様の問題を迅速に診断し軽減する能力を向上させる
- 複数の障害の原因となったGitデータベースのクラッシュに対処する
- データベースのフェイルオーバーに対して、介入なしで稼働再開することを保証するための対策に取り組む
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
ChatGPTの障害、Redisクライアントライブラリのバグでデータ不整合、情報漏えいが発生
OpenAIは2023年3月24日(米国時間、以下同)、2023年3月20日に発生した障害に関する分析報告を同社公式サイトに掲載した。Redisクライアントのオープンソースライブラリ「redis-py」にあったバグによるデータ不整合が発生し、ChatGPTユーザーの投稿内容やクレジットカード情報の一部が意図せず別のユーザーに漏えいした。クラウドネイティブ時代、データベースに求められる要件を整理する
クラウドネイティブは、その要素技術としてコンテナやマイクロサービスなどを含んでおり、近年の開発において一般的となりつつある。では、データベースにもそうした技術要素は取り込まれていくのだろうか。本連載では、クラウドネイティブ時代のデータベース設計で考慮すべきポイントを検討する。アプリ開発環境をセルフサービスで素早く準備できる「Azure Deployment Environments」とは?――Microsoft Build 2023で発表
Microsoftは「Microsoft Build 2023」で、セルフサービスでアプリ開発環境を素早く準備できる「Azure Deployment Environments」の一般提供を発表しました。このサービスは、現在、東日本を含む一部のリージョンで利用可能です。