ドキュメンタリー:障害発生時の中のひと

公開日:2025-03-21

サービスグループのマネージャーをしている西島です、こんにちは。

2025年3月18日早朝から、弊社が提供しているgusuku Customineにまったく弊社の責任ではない超特大の障害が発生しました。こちらの障害に該当したお客様には、大変ご迷惑をおかけいたしました。 内容詳細は[gusuku Customine] 想定外のkintone Webhookが発生する障害について にてご確認いただければと思います。

内容自体はサイボウズ社によって行われたkintoneの内部アップデートによる不具合だったのですが、それにより弊社サービスやお客様にどのような影響があったのかを記録しておこうかな?ということで、社内に許可を取ってブログとして公開してみます。

障害発生時に弊社がどのような対応をしているのかの一例として、ドキュメンタリー風に読んでいただければと思います。

予兆

琉球ゴールデンキングスが第100回天皇杯で初優勝を果たした余韻がまだまだ残る18日火曜日の朝、弊社Slackへの通知がなにかおかしいことにある社員が気づきます。

なんだこれ・・・?
なんだこれ・・・?

弊社内のお知らせアプリには既読・未読を管理や表示するカスタマイズが入っているのですが、それ経由での通知が何故か繰り返し発生しているようでした。

これを連携の仕組みも含めて作成しているのものがあいにく移動中だったので、「あとで直すわ」の一言でその場は終了してしまいました。朝は各自色々忙しく、私も忙殺されていて想像力が足らず、あまり深く追求せずに流してしまっていたのですが…実際には直せるような代物ではなく、時限爆弾はすでにセットされていたのでした。

発覚

その数時間後、サポートチームのメンバーから悲鳴が上がります。

なんだと・・・!?
なんだと・・・!?

こちらの「補足」にあるとおり、仕様では複数のレコードを一括操作するREST APIを使用してレコードを操作した際には、Webhookの通知は送信されません。

悲鳴に気づいてすぐに「ほかのひと誰か検証して」とSlackに投げたところ、複数人の検証にて上記仕様に反する現象が確認されました。この段階で、この事象が再現性があることは確定しました。これは大事(おおごと)です・・・。

障害対策体制への移行

このような障害時に矢面に立つのは、当然ながらサポートチームとなります。また、パートナー営業のチームなども、販売代理店様とのコミュニケーションを密にする必要が出てきます。

この段階ですべきことは、現状認識を作成しそれを統一見解として社内外に共有することになります。また、その内容は知り得た事象や状況を正確に公開することが重要になります。

社外に報告した第一報はこのようなものでした。

確認した現象、お客様に起こりうる影響、対策を考えているなら考えているという事実、分からないことは現時点では分からないと社外に公開・共有します。

この現状認識は、状況に変化があり次第随時更新されます。なのでサポートチームがお客様から問い合わせがあった場合には、この現状認識に基づきご回答する、という対応をすることになります。もちろん通常のサポートを提供しながら、です。

これは不具合なのか仕様変更なのか?

さて、問題が確定しその情報共有体制までは出来ました。ただ、この問題自体の行き先がまったく定まっていません。具体的には、この現象が不具合なのか仕様変更なのか、ということです。

これを確定させるために、まず先ほどの事象の確認・確定作業を行った後、問題についてサイボウズ社のなかのひとに確認を取る必要があります。

今回の場合、サイボウズ社のなかのひとに連絡をするのと同時に、観測気球を上げたくてウズウズしていた弊社の金春が個人でXに投稿し、それを見つけた別の担当者の方から確認がありました(通常、弊社から「これこれこんな状況がこうやると再現できるのですが、これってどういう感じですかね〜!?」と問い合わせる形になります)。

何度か情報のやり取りをした後、15時40分の段階で不具合であるということが判明しました(これをもって第1報を社外に報告可能となります)。この段階では、「ではどうする?」ということはサイボウズ社の中でも弊社の側でも決まってるわけではありません。

ただ弊社の側から見ると、不具合であるということであれば、取るべき方向性としてはおおよそ決定されることになります。

原因が分かれば対応策は決まる、の法則

これがもし予告のない仕様変更ということであれば、考えたくもないほどの大きな改修と膨大な顧客周知の作業が待っていました。が、流石にその線は薄いだろうと感じていましたので、不具合と確定しある程度はホッとしました。これで、最終的な解決の落とし所までのすべてを想定することが出来るようになります。

一旦状況を整理すると、今回のkintone側の不具合による弊社側サービスへの影響は、以下のとおりです。

  • 意図せずWebhookが実行されているので、Job Runnerの残り使用時間がどんどん減っている
  • 残り時間が0になると、その後何もWebhookが実行できなくなる

実際にこの不具合に巻き込まれたお客様の中には、「使用時間がどんどん減ってしまい、全然間に合わないので一旦使用を止めた」というお客様もいらっしゃいました。

実際Webhookがどのくらい動作していたかといいますと、とあるグラフですがこの程度でした(平時の10倍以上のリクエストを処理しています)。意図せず負荷テストを実施したような状態ですが、システム的には特に問題なくこの負荷は処理されています。ですがもちろん、お金は飛ぶように消えていきます…辛い。

復旧対策:お客様への影響を最小限にするにはどうすればいいかを検討

上記のような影響に対処するため、開発チームの方では復旧もしくは解決案をいくつも検討します。刻々と状況が悪化していく中ではありますが、落ち着いてアイデアを出し合い、既存システムやビジネスへの影響度を比較検討する必要があります。ここで下手な案で対応してしまうと、後々とんでもないことになることがままありますので注意が必要です。

出された案を元に、最終的には偉い人が判断をします。 そう、偉い人はビジネス上の判断をする義務があるのです。

今回の場合、使ってしまった時間を巻き戻すことは出来ませんし、事象が起こってしまって使用時間を大きく浪費してしまったのは仕方のないことと判断し、3月18日以降は月末まではJob Runnerの使用時間を無視して使い放題としました。これはビジネス上の大きな判断で、弊社に与える金銭的ダメージもありますので、経営判断が出来る人間でないと決断することが出来ません。

この決定がされたのが16時43分です(弊社内では基本的にどんな議論も文字で残っているので、あとでも時間はすぐに確認できます)。

一度決断が下れば、開発チームはその対策を実装しテスト、そしてリリース作業を行います。限られた短い時間内に対策をリリースするのは開発チームにとってもかなり困難な作業の一つとなりますが、ここでも淡々と落ち着いて作業をする必要があります(焦ると何もいいことはありません!!)。

社内の情報共有について

このように刻々と変わる状況の中で、弊社内ではどのように情報共有をしているかをちらっとご紹介したいと思います。ここでの基本的考え方は、「情報の集約・共有を心がける」、その1点に尽きます。

このようなとき、各担当者は基本的には自分の作業範囲しか見えていません。例えば偉い人は社外に出す告知を何度も推敲しているし、サポート担当は矢面に立ってお客様と相対していますし、開発チームはソースコードとにらめっこをしています。正直、人のことをかまってる余裕がある人など、あまり居ません。

ですのでこの非常事態の間はどこかに何かを報告したり、誰かに報告させたり、などということは事実上行わず、基本的には情報の集約とその共有だけをオープンに行い、見たい人・知りたい人はそれを自分自身で確認する、という流れになります。

と言うことで、意外にも社内のどこかに現場から現状報告をする、というのは後回しになりがちなもののひとつになりがちです。それでも情報自体は全てオープンなので、あまり大きな問題にはなりません。

もちろん、落ち着いてきたら報告は行いますよ!

ちなみに以前から『オフィスにパトランプ(パトカーの上に乗ってるあの回転灯)を置いてくれれば、緊急事態になったら鳴らすよ』と冗談半分に言っていたのですが、まだ買われたことはありません。いまやリモートで働いている人が多数派なので、オフィスでパトランプが回っても気づかれないですね、残念。

対策のリリース、その後の後処理

対策が入ったソースコードをテストし、問題ないことが確認されリリースされたのは18時20分です。これが早いか遅いかは個人の感覚によるのでなんとも言えませんが、意思決定後の数時間でここまで対処できるチームを誇りに思います。

また、同時並行で作成されていた外部へのお知らせは、この段階で何度も推敲され、公開を待つ状態になっています。これを公開し、通知としてメールでも送信して、一旦可能な対応はここまでで終了となります。

並行して対応していただいていたサイボウズ社のほうでは、リリースした内部アップデートを切り戻したようです(アップデートを止めてその前の状態に戻した、ということになります)。対応いただきありがとうございました。

このあとは、障害がおこる前の状態に戻すための作業計画と、そのためのエビデンスを収集する作業を行うことになります。これは現在進行中の作業ですが、比較的軽度で済みそうでひと安心というところです。

まとめ

ということで、3月18日に発生した障害の弊社内の様子を紹介してみました。システム障害という恐ろしい事故が勃発したとき、なかのひとはこのように動いているのだなぁという一例として、参考にしていただければ幸いです。

現在の情報システムを活用したビジネスでは、システム障害というものは避けられない宿命です。残念ながら、起こってしまったことは変えられないので、努めて冷静に対処することが必要と我々は考えております。

『何このチーム面白い、なかのひとになってみたい!パトランプ鳴らしたい!』と思ったそこのあなたは、ぜひ採用情報のページをご覧いただき、弊社にお問い合わせください。

投稿者プロフィール

アバター画像
西島
"沖縄の自宅からリモートワークで参画している根っからのクラウド・コミュニティ大好き人間。
オープンソースとクラフトビールをこよなく愛する。"