ニコニコ生放送がサービスを再開するまでの記録
はじめに
こんにちは、ニコニコ生放送 バックエンド開発マネージャーの yanagi です。
2024 年 6 月 8 日、ドワンゴはランサムウェアを含む大規模なサイバー攻撃を受け、「ニコニコ」全サービスの停止を余儀なくされました。もちろんニコニコ生放送も例外ではなく、2024 年 8 月 5 日にサービスを再開するまでの約 2 ヶ月もの間、その影響を受ける形となりました。
この記事は、サイバー攻撃を受けたニコニコ生放送がサービスを再開するまでの道のりを記録したものです。
今回の復旧作業から学んだ教訓は、「日頃の実践・鍛錬が重要」ということです。今回のような状況においても、物事への取り組み方は日頃からニコニコ生放送内で実践されているものと大きく変わりありませんでした。
ありのままに言えば、ニコニコ生放送には今回のようなできごとを想定した訓練や対応体制は備わっていませんでした。今までに経験したことのない状況に対して、何を考えどのように対応したのか、サービス再開に向けてのアクションやマイルストーンとなったできごとを中心に時系列で振り返ります。
また、以降に記す出来事のほかにも、「ニコニコ」全体で取り組んだことや各サービス単位、各チーム単位で取り組んだことが多数あります。そのひとつとして、パブリッククラウドサービス上のセキュリティ向上の取り組みに関する記事が以下に公開されていますので、興味のある方はぜひご覧ください。そのほかの取り組みについてはここでは割愛します。 https://aws.amazon.com/jp/blogs/news/overview-niconico-security-governance-on-aws/
2024/06/08 -
サイバー攻撃直後の状況
ニコニコ生放送では、サービスを提供する基盤としてパブリッククラウドサービスおよびグループ企業が提供するデータセンター内に構築されたプライベートクラウドサービスを利用していました。このうちのプライベートクラウドサービスがサイバー攻撃を受けてサービス不能な状況となり、その結果としてプライベートクラウドサービス上で稼働していたニコニコ生放送の一部のシステムが停止する事態が発生しました。
当時のニコニコ生放送のシステムは、基本的にパブリッククラウドサービス上で稼働していました。
「基本的に」という言葉が指す状況について補足します。ニコニコ生放送のシステムは複数のシステム・マイクロサービスから構成されており、その大部分は 2023 年度末時点でパブリッククラウドサービスへ移行済みとなっていました。一方で、もともとプライベートクラウドサービス上で稼働していたシステム・マイクロサービスのなかには、以前より老朽化のために刷新の機会をうかがっていたものや、パブリッククラウドサービスでの運用に適したアーキテクチャやコスト面での最適化といった観点から、現状のまま移行するのではなく再構築することが望ましいと判断したものもありました。そうした一部のシステムは、当初から移行計画の対象外となっていたため、当時開発中であった次期システムがパブリッククラウドサービス上で稼働するまでの間、引き続きプライベートクラウドサービス上での運用を継続する形をとっていました。
サイバー攻撃の影響を受けて停止したのはそれらの一部のシステムになりますが、一部とはいえニコニコ生放送にとって極めてクリティカルな事態を引き起こしました。停止したシステムのなかには、ニコニコ生放送の体験の根幹を成す「メッセージサーバ」(コメントサーバ)と「映像配信システム」の 2 つが含まれていたからです。
また、ニコニコ生放送には「ニコニコ」内の複数のファミリーサービス・基盤と結合して提供している機能が多数存在しています。結合先のファミリーサービス・基盤のなかには、プライベートクラウドサービス上で稼働させていたものもあり、それらも同様にサイバー攻撃の影響を受けました。仮にニコニコ生放送側の復旧準備が整ったとしても、ファミリーサービスや基盤の復旧可否によっては提供できない機能があったり、足並みを揃えなければそもそもサービスを再開できないのではないかなどの懸念もありました。
サービス停止の長期化が避けられない事態に直面していると理解するまでに、それほど時間は要しませんでした。
2024/06/10 -
コードベースの復旧と CI/CD パイプラインの再構築
ニコニコ生放送のコードベースは、2024 年度中の完了を目指して GitHub Enterprise Cloud への移行を進めていましたが、まだまだ主としてプライベートクラウドサービス上でホスティングしている GitHub Enterprise Server 上で管理されていました。また CI/CD パイプラインについても同様に、プライベートクラウドサービス上に構築していました。
しかし、今やプライベートクラウドサービスはサービス不能な状況に陥ってしまいました。ニコニコ生放送のコードベースや CI/CD パイプラインといった資産へのアクセス手段は、このとき一時的に失われてしまったのです。復旧には相応の時間を要するという見込みから、GitHub Enterprise Cloud 上でのコードベース復旧、CI/CD パイプラインの再構築が急務の課題でした。
リモートのコードベースにはアクセスできない状況ですが、各開発者のローカル環境には散在しています。それらを一度 GitHub Enterprise Cloud に集約し、ローカル環境にリポジトリを保持している開発者間で連携をとりながら、最新のリビジョンを特定するといった作業を行いました。
その後、必要に応じてソースコードに変更を加えながら、既存のパイプラインのコードを参考に CI/CD パイプラインの再構築を行いました。並行して GitHub Organization 下の細かな権限設定や運用ルールの取り決め、パブリッククラウドサービスのコンテナレジストリへの移行といった作業にも取り組みました。CI/CD パイプラインの全面復旧には 1 ヶ月半の時間を要しました。
復旧可否の判断、復旧難易度の見極め
コードベースの復旧と並行して、システム・マイクロサービスごとにそもそも復旧させることが可能かどうかといった内容を洗い出し、取りまとめました。主な内容は以下になります。
- 名称
- 提供する機能
- 復旧可否
- 復旧難易度
- 受けたダメージ
- (復旧可の場合)
- 復旧のさせ方
- 復旧のハードルと前提条件
- 依存するマイクロサービスやファミリーサービス、基盤
ニコニコ生放送のバックエンドではマイクロサービスアーキテクチャを採用しており、約 50 のマイクロサービスが協調して動作しています。そしてフロントエンドや iOS / Android アプリ向け Backend for Frontend はそれらマイクロサービスに依存する形で動作しています。どの機能から復旧させるべきかを検討し、その機能を提供するのに必要な構成はなにかといった情報を把握する上で、後々にこのまとめが役に立ちました。
サービス再開方針の検討
6/10、ニコニコ生放送の企画職・エンジニア職のマネージャーが集まり、サービス再開方針を検討する会議体が設置されました。
この会議体では、ニコニコ生放送内の各開発チームの最新の状況を整理し、「ニコニコ」内の各ファミリーサービス・基盤の状況などを踏まえながら、主にサービスが提供する機能を中心に据えてどのように復旧作業を進めていくかの検討を行っていました。ここで検討した内容を各開発メンバーが参加する別の会議体に持ち込み、議論の上で具体的なタスクに落とし込み実行する、そのプロセスを繰り返す形で復旧作業は進められました。
議論は、最初から原状回復を目指すことは難しいという認識のもとスタートしました。なにしろ、ニコニコ生放送の中軸となるメッセージサーバと映像配信システムの 2 つが停止している状況です。仮復旧、本復旧と段階を踏んでサービス再開を目指すことは既定路線でした。
初期段階においては、事態の長期化を避けられないことは明らかだったため、まずは仮復旧を目指し「息をしている」というメッセージを示すことが重要と考えました。問題は、どのように仮復旧させるかです。一時はある程度サービスとしての体裁を整えて仮復旧することを検討しましたが、あまりにも変数が多く、現実的ではありませんでした。一方で、最低限の内容で仮復旧するとしても、そこにどれだけの意義やメッセージ性を持たせられるのかといった疑問もありました。
議論を重ねた結果、提供できる体験が限られている上にコンテンツをお届けできるのかも定かではない状況でしたが、サービス再開に向けて取り組んでいる様子を目に見える形でお届けすること、「ニコニコ」運営が情報発信できる場を整えておくこと、多少見栄えせずともそれらを早期に実現することに価値があるとし、まずは以下の要件を満たす小さなニコニコ生放送を準備する方向で合意しました。
- 放送できる番組数は 1 つのみとする
- 映像を配信・視聴することができる
- 誰でもコメントを投稿することができる
- 連投やボットによる機械的な書き込みなどをブロックすることができる
- 運営がコメントをモデレーションすることができる
この小さなニコニコ生放送は、8/5 のサービス再開まで「ニコニコ生放送(Re:仮)」として提供されることになります。
ニコニコ生放送横断 Slack チャンネルの作成
ニコニコ生放送の関係者は、普段はそれぞれが属するチーム用のチャンネルであったり、チーム外の方とやり取りする場合は特定の話題用のチャンネルでコミュニケーションを行っています。
今回のような状況においても、必要な会議体は準備されますし、これまでどおりのやり方で問題なかったのかもしれません。ただ、一口にニコニコ生放送関係者といっても、直接的に復旧作業に関わる人、間接的に復旧作業に関わる人、ほとんど関わりがなく復旧後を見据えて別のタスクに取り組まれている人と、各人の状況は異なっています。復旧作業が進むに連れて、関わっている人と関わっていない人の情報格差が広がっていくことを懸念していました。
協力して物事に取り組む過程ではときに一体感や連帯感が生じる場面があり、周囲を勢いづける効果が期待できますが、それは同じ前提を共有する人が多いほど生じやすいものです。関わり度合いの違いから多少の情報格差が生まれることは避けようのないことではありますが、そうした観点も含めてできる限りその格差を小さく抑えたいと考えていました。
そのような意図から、話題の拡散やノイズが発生することで関係者が見なくなってしまうのではといった懸念もありましたが、復旧に関する話題を一箇所に集約することで得られる効果のほうが高いと見て、ニコニコ生放送横断 Slack チャンネルを作成しました。その後、このチャンネルはここを見ればなんとなく今がわかる場所として機能しました。
2024/06/13 -
ニコニコ生放送(Re:仮)の開発
6/13、各開発チームで優先的に取り組んでいた問題の解決が進んできたタイミングで、ニコニコ生放送(Re:仮)開発のキックオフを行いました。要件を整理して構成図を書き、想定を各開発チームに説明しました。方針そのものに異論はありませんでしたが、メッセージサーバと映像配信システムをどうするかについては確認する必要がありました。
メッセージサーバの復旧パターンとしては、現行のメッセージサーバ(以下、「旧メッセージサーバ」とします)を復旧させるパターンと、2023 年より準備を進めてきた次期メッセージサーバ(以下、「新メッセージサーバ」とします)を本稼働させるパターンの 2 つが考えられました。
前者は、パブリッククラウドサービス上で稼働させるためにインフラの再構築から取り掛かる必要がありますが、クライアントの改修は不要です。後者は、すでに性能検証を終えて Production Ready な状態でしたが、クライアント側の改修が必要です。現行のメッセージサーバと大幅にプロトコルが異なっていることから、コメントの受信や描画といった処理の大部分を書き換える必要がありました。
一見悩ましい問題ではありますが、旧メッセージサーバの復旧は見通しを立てることすら難しい状況だったこと、スコープを狭められるのであればクライアント側の改修は数日中に完了する見通しであったことから、新メッセージサーバを本稼働させて使用することにしました。
映像配信システムについてはニコニコ生放送外の管轄となっており、旧メッセージサーバと同様に復旧の見通しが立っていない状況でしたが、要件としては 1 番組を配信・視聴できればよく、いくらでもやりようはありました。今回はシンプルにパブリッククラウドのフルマネージドサービスを利用することにしました。
方針が決まった後は具体的なタスクに落とし込み、関係者間でコミュニケーションを取りながら開発を進めました。着手日を含めた 3 日後の 6/15 にはリリースできる状態にまで仕上がりました。
開発チーム横断の daily sync 会の設置
6/14、各開発チームで復旧に向けて取り組んでいる問題が同じまたは似ているように見受けられる状況だったため、現場の効率を高める目的で開発チームを横断しての daily sync 会を設置しました。
以下は、実際に用いていた sync 内容のフォーマットです。あらかじめ各開発チームで記入した内容を読み合わせながら、必要に応じて情報共有や相談をするといった形で運用していました。
- いまチームが取り組んでいること
- 今後チームが取り組む予定のこと
- 困っていること、解決した場合はその解決方法の共有
- サービス再開に向けて事前に調整が必要な内容のすり合わせ、または頭出し
- このタイミングで見直しが必要な仕様の相談、または頭出し
開催する上での工夫として、参加者を限定しなかったことが挙げられます。現場レベルで役に立つ会としたかったため、各開発チームのリーダーの参加は必須としながら、予定に招待されていなくても自由に参加してよいものとしました。何かを決定する場ではなく情報交換の場として設置したので、そもそも参加者を絞る必要がありませんでした。
また、もしも今回の事態を受けて不安を感じている方がいるならば、少しはそれを和らげる機会になるかもしれないと考えていました。本当に復旧できるのだろうかという不安に関しては、各所の進捗を見て安心を得られるかもしれませんし、漠然とした不安であっても人の気配を感じられることで少し落ち着けるかもしれません。そうした方向でも役立ててもらえる可能性があるかもしれないと思い、自由参加の形をとりました。
会は徐々に状況が安定してきた 7 月中旬には daily から weekly へと頻度を下げましたが、その後もサービス再開 1 ヶ月後まで運用されました。
2024/06/17
(余談)偉業ムーブメント
この頃に、課題が解決したことの連絡や調査結果の共有などはもちろん、些細なことでも進捗を感じられる書き込みに「偉業」の絵文字リアクションを付ける流れが自然発生的に生まれました。当時は、「偉業」の絵文字リアクションを付け合うことにある種の一体感があったと記憶しています。
6/17 の Slack ログより採取された「偉業」絵文字のサンプル

振り返って考えてみると、絵文字リアクションを付ける・付けられることの本質は、小さな肯定を表すること・受け取ることなのかもしれません。「諸行偉業の響きあり」の精神で小さな肯定を交わし合うことは、些細なことですがモチベーションに多少プラスの影響をもたらしていた部分があったような、そんな気がしています・・・定かではないですが。
2024/06/19 -
ニコニコ生放送(Re:仮)のリリース
YouTube で配信していた「サイバー攻撃からのニコニコ復旧を見守る場所」の引っ越し先とする形で、ニコニコ生放送(Re:仮)をリリースしました。11 日ぶりにコメントが流れる様子には、非常に感慨深いものがありました。
つつがなくニコニコ生放送(Re:仮)をリリースできたことは良い話だった一方で、1 マネージャーとしては反省すべき点があります。
各開発メンバーには最優先でニコニコ生放送(Re:仮)の開発に取り組んでもらいましたが、その時点でいつまでに完了させる必要があるかを明示できずにいました。各所が着手した時点では社内調整を経て 6/17 にリリースする予定ではあったものの、この期日が必達目標なのか努力目標なのかがはっきりしておらず、また事情によっては遅らせることもありえるといった状況でした。
各開発メンバーの素晴らしい動きにより 3 日間で仕上げることができたため、その達成感と熱量を維持したままリリースすることができれば、復旧作業を勢いづけることにも繋がると思っていました。ですが、実際にはいくつかの事情がありリリースを 2 日遅らせる運びとなってしまいました。スケジュールの変更は仕方ないとしても、それを残念だと思う度合いについては、事情により予定どおりリリースできないかもしれないが、それでも早急に準備することの意義をすり合わせることで軽減できていたかもしれません。当時の話の進め方は少し丁寧さに欠けていたと反省しています。
2024/06/20 -
ニコニコ生放送(Re:仮)の拡張
ニコニコ生放送(Re:仮)では、「枠」ではなくテレビ放送におけるチャンネルのイメージで場を提供していました。枠の概念を持ち込んで運用を行うには、不向きな構成だったことが主な理由です。
リリース時点では 1 チャンネルのみ準備して「サイバー攻撃からのニコニコ復旧を見守る場所」のみを放送していましたが、「ニコニコ実況(Re:仮)」の提供や映像コンテンツの拡充を企図して、「番組を編成できるようにしたい」「チャンネルを複数準備したい」という要望がありました。要望をもとに各開発チームと検討した結果、以下のデータがあればクライアント側の改修で対応できる見通しでした。
- チャンネル ID
- 番組名
- 概要欄
- 視聴用エンドポイント
- 放送開始日時、放送終了日時
- コメント再生開始位置となる日時
問題は、これらのデータをどのように登録・取得できるようにするかです。多少の時間をかければ管理画面を準備して API から取得できるようにするといったことも可能でしたが、当時はニコニコ生放送(Re:仮)をいつまで運用するのか定かではない状況だったため、まずは軽量な対応で様子を見たいと考えていました。
いくつかのアイデアを議論した結果、Google スプレッドシートをマスターとして、それをもとに生成した JSON ファイルを CDN で配信する方向で進めることになりました。編成担当者にはスプレッドシートに情報を記入してもらう必要がありますが、それ以降の処理を GitHub Actions を用いて自動化できること、取得したいデータはどのユーザにおいても同じであることなどが選択した理由になります。仮に半年や一年以上運用することが確定している状況であれば、また異なる選択をしていたのかもしれません。
フロントエンド開発チーム、アプリ開発チームには負担をかけてしまいましたが、ニコニコ生放送(Re:仮)が 2 ヶ月で運用を終了したこと、それまでに扱うデータを増やしたいといった要望がなかったことを踏まえると、良い結論を得られた場面だったのではないかと考えます。
2024/06/24 -
本復旧作業の準備
ニコニコ生放送(Re:仮)対応が落ち着いたタイミングで、バックエンド開発チームは他のチームに先行する形で本復旧作業の準備に取り組みました。バックエンドが復旧しないことには、フロントエンド開発チームやアプリ開発チームは本復旧作業に取り掛かれません。先回りの対応が必要でした。
冒頭で言及したとおり、ニコニコ生放送には「ニコニコ」内の複数のファミリーサービス・基盤と結合して提供している機能が多数存在しています。この時点ではファミリーサービス・基盤のほとんどが復旧していなかったため、縮退運転ができるように改修する必要がありました。
特に対応箇所が多かったのは、メディエーターとして機能するシステムです。そのシステムにおける対応方針としては、復旧していないファミリーサービスや基盤との結合部分に feature switch を仕込んで一時的に利用しないようにし、フォールバック時と同様に振る舞うようにしました。結合先が復旧した場合には、対応する feature switch を有効にすることで生放送側の機能を復旧できるような形です。また、すでに復旧が困難であると判明していたファミリーサービス・基盤に依存する機能は、実装ごと削除するようにしました。
周辺のマイクロサービスについても必要に応じて同様の対応を実施した上で、依存先がないマイクロサービスや依存先が生放送バックエンドに閉じているマイクロサービスの開発環境へのデプロイを順次進めていきました。
縮退運転とは別の文脈として、新メッセージサーバ自体の開発を進める必要もありました。基本的な開発は完了していましたが、もともとは段階的な移行を想定していたこともあって後から実装する予定の機能が複数存在していたからです。そうした機能についても急ピッチで実装が進められました。
旧メッセージサーバの復旧作業
旧メッセージサーバは、今後どのように進行するかに関わらず、何としてでも復旧させなければならない対象でした。過去のコメントデータおよびシステムメッセージを、新メッセージサーバに取り込む必要があったからです。
サービス停止の数時間前に取得された過去のコメントデータ、およびスレッド情報や統計情報を保存しているデータベースのバックアップの存在は事前に確認できています。リポジトリについても手元に持っていたメンバーがいて無事です。問題は、現在のニコニコ生放送組織内に旧メッセージサーバを熟知している人がいないということでした。その背景として、旧メッセージサーバは 17 年もの間にわたり利用されてきましたが、仕様的にもパフォーマンス的にも安定していたために、「たまにトラブル対応や機能の追加などをしていくうちに詳しくなっていく」といった現場あるあるがまったく起きないままここまできたという事情があります。
とはいえ、少しずつ積み上げていくしかありません。過去に旧メッセージサーバをコンテナ化できるかを検証していた、別部署に所属する元ニコニコ生放送の開発メンバーと koizuka さんに協力をお願いし、インフラチームと連携しながら対応を進めていただきました。この救援はたいへんありがたいものでした。
ソースコードをビルドするための環境作りから始まった対応は、コンテナ化、システム構成の再設計、インフラ構築、データ復旧、IaC の整備、周辺のマイクロサービス群の改修、デプロイ、セキュリティチェック、動作検証と着実に進んでいきましたが、すべてが完了したのは 10 月も終わりに差し掛かった頃でした。見通しを立てるための見通しが立たない状況からスタートした復旧作業は、やはりかなりの時間を要するものでした。
メッセージサーバの選択
ニコニコ生放送(Re:仮)は新メッセージサーバを使用する形でリリースしましたが、サービス再開にあたっては旧メッセージサーバの復旧を待つべきか、それとも新メッセージサーバに移行するべきか、この時点ではまだ判断できていませんでした。
旧メッセージサーバの復旧を待つ場合の懸念点として、各所クライアントの改修は不要ですが、いつ復旧できるかの見通しがまったく立っておらず、サービス再開スケジュールによってはそもそも間に合わない可能性があります。新メッセージサーバへ移行する場合の懸念点としては、後方互換性のない変更であることから、「ニコニコ」内はもちろんのこと、取引先の方々や有志の方々が提供するサービスやツールへの影響は避けられません。また、ニコニコ生放送単独で移行するとしても 1 ヶ月で完了させることはかなり厳しい見通しです。そうした懸念や影響について周囲にヒアリングしながら、検討を重ねていました。
そんな中、映像配信システムが 7 月末には復旧する見込みとの情報が入り、それに合わせてニコニコ生放送も復旧できないかという打診がありました。さらに、まだ確度は高くないがファミリーサービスも 7 月末の復旧を目標として動き始めているという情報や、足並みを揃えて「ニコニコ」全体でサービスを再開する可能性を探っているという情報も入ってきていました。
サービス再開時期の目標が近々設定されるかもしれない状況の今となっては、もう迷っている時間はありません。フロントエンド開発チームとアプリ開発チームに感触を伺いながら、早期にサービス再開を果たすことが最優先と考えて、新メッセージサーバへの移行を進めることに決めました。結果論ではありますが、旧メッセージサーバの復旧に丸 4 ヶ月要したことを踏まえると、関係各所にご迷惑をおかけする形になってしまったものの、当時の判断は妥当だったのではないかと考えています。
方針が決まり、バックエンド開発チームのメンバーには先んじて移行に向けての実装や改修を急ピッチで進めてもらいました。サービス再開までにすべての対応が完了していることが望ましいですが、当時は 1 ヶ月で完了させることはまず難しい見立てだったため、最初から間に合わない可能性があることを考慮していました。具体的にはメッセージサーバを用いた機能を洗い出し、項目ごとに三段階の優先度を設定して、優先度が低いものについては間に合わなくても良いとして対応を進めていきました。
2024/07/03 -
本復旧作業の本格化
7/3、フロントエンド開発チームとアプリ開発チームがニコニコ生放送(Re:仮)対応を終えて、ニコニコ生放送全体で本復旧作業に取り組める状態となりました。
本復旧作業のテーマとして以下の 3 つがありましたが、テーマごとに会議体を設置して進めていくことになりました。
- 復旧全般
- 新メッセージサーバへの移行
- ハリボテ化: サービス再開時に提供できない機能の UI を変更する、あるいは削除する対応
進め方としては普段のプロジェクトに取り組むときと変わらず、あまりこれといったエピソードはありません。あとはひたすらやっていくのみというフェーズでした。
2024/07/18 -
サービス再開時期の確定
7/18、「ニコニコ」内のファミリーサービスや基盤が開発環境において徐々に復旧してきた頃、 8/5 のサービス再開を目指す方針が共有されました。引き続き足並みを揃えて「ニコニコ」全体でサービスを再開する可能性が探られていましたが、ニコニコ生放送にとってはかなり厳しい目標でした。
会議体を分けていることからもうかがえますが、やはり新メッセージサーバへの移行とハリボテ化はかなり重い対応だったからです。この時点では、公式番組のみ、またはユーザー番組のみとスコープを絞るのであれば 8/5 の再開も可能だが、両取りは厳しいという見解を示しました。
とはいえ、やはり両取りを目指したい「ニコニコ」としての意向もあり、各開発チームとしてもなんとか実現できるようにと引き続きの復旧作業に取り組みました。質的にも、量的にもハードワークが求められる時期が長らく続いていましたが、全員が持ち場で力を発揮し、サービス再開 1 週間前の 7/29 には想定していた内容をすべて含む形でなんとかリリースできそうな状態にまで仕上がりました。
残りの数日は動作確認や QC、発見された不具合の修正、リリース当日の打ち合わせなどに時間を充て、8/2 には当日を待つのみという状態にこぎつけました。
2024/08/05
サービス再開
8/5、満を持してサービスを再開しました。ピークタイムの終わりまでログやメトリクスを見守っていましたが、特に大きな問題も観測されず、無事に翌朝を迎えることができました。「ニコニコ」関係者の慌ただしい日々にも、ようやく一区切りがついた日となりました。
とはいえ、ニコニコ生放送ではサービス再開後に取り組むべき課題が山積みでした。しばらくのリフレッシュ期間を挟んでから、再開時点では利用できなかった機能の提供再開、提供に向けての新規実装、タイムシフト視聴の救済措置、コミュ限番組の後継となるしくみの開発、PS4 版ニコニコ生放送の復旧、新メッセージサーバの改善、旧メッセージサーバの復旧などの対応を進めていきました。
そして 12/16、Android 版ニコニコ生放送アプリにおけるギフト・ニコニ広告の復旧をもってすべての対応が完了し、192 日間に及ぶ復旧作業は幕を下ろしました。
ニコニコ生放送(Re:仮)の爆破
ニコニコ生放送(Re:仮)は、サービス再開後に爆破されました。たくさんのコメントをいただき、ありがとうございました。
おわりに
かくして、ニコニコ生放送はサイバー攻撃によるサービス停止から復旧することができました。振り返ってみると、長いようで短い、短いようで長い、そんな 192 日間だったと個人的には感じています。
ニコニコ生放送が復旧を果たせたのは、以下の幸運が重なったことによる部分が大きいと考えます。このうちのひとつでも欠けていたら、復旧作業は間違いなく比較にならないレベルで厳しいものになっていました。
- 6/8 時点で、移行計画の対象外だったシステムを除くすべてのシステムがパブリッククラウドサービス上で稼働していたこと
- プライベートクラウドで稼働していたシステムが参照するデータのバックアップが存在していたこと
- 新メッセージサーバの基本的な開発が完了していたこと
- 結合先のファミリーサービス・基盤が復旧できていたこと
幸運に恵まれていたので、いずれにしてもニコニコ生放送の復旧は果たせていたことでしょう。ただ、それを早期に実現するとなると、幸運に恵まれていただけでは十分ではなかったと思います。
「ニコニコ」組織には、関係者と合意形成してから実行するという手続きの文化が定着しています。ニコニコ生放送においては「課題と課題に対する認識の共有・合意」「起こしたいアクションとその理由の共有・合意」「採りうる手段の選択・合意」「実行」といった合意形成の型が用いられており、それぞれの段階で議論を交わし、結論を出し、全体の合意に至れば実行する、といった流れを日常的に実践しています。
今回のような事態を乗り越えるためには、関係者全員が同じ目標を目指して力を合わせることが重要となり、そうした状態はそれぞれが直面する課題を自分ごととして捉えることではじめて生じるものだと考えています。そして、そのためには納得感のある合意形成が欠かせません。
復旧作業中は対応方針や課題についてチーム内外を問わず話し合わなければならない場面がしばしば生じましたが、日頃と同じように合意形成を積み重ねることで、物事を着実に進めていくことができました。全員が常に納得感を得られるようにすることは難しく、場面によっては納得していないケースもあったかと思いますが、それでも各人が持ち場で力を発揮したことで約 2 ヶ月という期間でサービスを再開することができたと考えています。現在はすでに通常業務に戻っていますが、この教訓を糧に基本を大切にしながら日々の業務に取り組んでいきたいと思います。
最後にニコニコユーザーの方々へ、ニコニコ生放送および「ニコニコ」の復旧を見守ってくださり、誠にありがとうございました。
—
株式会社ドワンゴでは、教育事業、ニコニコ事業、モバイル事業など様々なサービス、コンテンツを一緒につくるメンバーを募集しています。
ドワンゴに興味がある・または応募しようか迷っている方がいれば、気軽に応募してみてください。