サイバーエージェントを支える技術者たち

第46回メンテナンス時間短縮に向けた取り組み[後編]

従来のアメーバピグでは、サービスの品質向上や新機能の提供などを目的として、毎週火曜日の午前中に3時間ものメンテナンスが行われていました。これを短縮するために立ち上げられたのが「ナイトホーク」と呼ばれるプロジェクトです。前編に続き、このプロジェクトを担当した並河祐貴氏と有馬慶氏にお話を伺っていきます。

並河祐貴氏(右)と有馬慶氏
並河祐貴氏(右)と有馬慶氏

稼働系と待機系に分けてメンテナンス時間を短縮

アメーバピグにおけるメンテナンス時間の短縮、そして安定性の向上を目的として始まったプロジェクトが「ナイトホーク」です。前回解説したように、安定性の向上についてはデータベースの冗長化や信頼性の高いハードウェアの導入などによる単一障害点の解消といった対応が図られています。一方、メンテナンス時間の短縮はシステムの二重化によって実現されました。その具体的な内容を有馬氏は次のように説明します。

「メンテナンス時間を短縮するために、アメーバピグで利用しているサーバ群を稼働系と待機系といった形で二系統に分けることにしました。普段は稼働系が動いていて、ユーザからのトラフィックはロードバランサによって稼働系に振り分けます。一方の待機系は、普段は落ちているという状態ですね。そのうえで、メンテナンスを行う際には待機系を立ち上げて必要な作業を行い、動作確認が済んだところでロードバランサを使って稼働系と切り替えます。このように待機系のサーバを使って作業することにより、メンテナンス作業や動作確認中でもサービスを継続することが可能になったわけです。二系統に分けるにあたって、稼働系と待機系で違うバージョンのアプリケーションが動くわけですから、どのようにすればシステム全体の整合性を保てるかを考えるのはたいへんでした。しかし、結果としてサービスの停止時間はロードバランサによる稼働系から待機系への切り替えにかかる10分程度で済むようになりました(有馬氏⁠⁠」

メンテナンスに伴うサービス停止時間が3時間から10分に短縮できたことのメリットは極めて大きいと言えるでしょう。ユーザにとってアメーバピグを楽しめる時間が延びるのは間違いなくメリットですし、サービス提供側としても機会損失によるロスを防ぐことにつながるからです。

さらに並河氏は、このタイミングでデータセンターの移設も行ったと話します。

「当初は稼働系と待機系をそれぞれ別のデータセンターで運用することを考えていたのですが、システムをデータも含めた形で完全に二重化するのはたいへんだよねという話になりました。もちろん二重化もできたとは思いますが、そもそものプロジェクトの目的がメンテナンス時間の短縮だったので、まずは低コストでそれを実現しようということで1つのデータセンターに集約して運用することになりました。その際、従来のデータセンターがネットワークと物理的なスペースの両面でキャパシティに不安があったことから、新たなデータセンターにサーバを移設することになったわけです(並河氏⁠⁠」

約2ヵ月をかけて慎重に新環境へ移行

このような大規模なアーキテクチャの刷新ではトラブルが付きものでしょう。とくに大規模かつ定常的に高負荷状態で運用されているシステムの場合、環境の変化が大きなトラブルにつながるケースは少なくありません。しかし、ナイトホークでは大きなトラブルもなく、ほとんどユーザが気づかないうちに移行作業を完了させることができました。その背景を並河氏に伺うと、次のような答えが返ってきました。

「今回のプロジェクトでアメーバピグのアーキテクチャをガラっと変えることになったのですが、問題はそれによって従来の負荷に耐えられることをどうやって担保するかということでした。もちろんテストは行うのですが、あれだけの負荷を生み出すっていうのはすごく難しい。またロードバランサに至っては、負荷試験自体ができないんですね。グローバル環境で膨大なトラフィックを生成して負荷をかけるというのは非常に難しいためです。そこで、従来のデータセンターからネットワーク回線を1本ずつ新環境の回線・ロードバランサへ移行させていきました。そのあと、トラフィックや負荷を見ながら大丈夫なことを確認したうえで、次の回線を、と少しずつ慎重に移行作業を進めました(並河氏⁠⁠」

ちなみに、このネットワーク回線の移行作業に約2ヵ月を要したということからも、極めて慎重に作業が進められたことがわかります。最終的には無事に移行作業が完了し、11月中旬からは完全に新しいシステムでアメーバピグが運用されています。

このナイトホークプロジェクトの成功は、ユーザだけでなくスタッフにとっても大きなメリットがあったようです。

「今回のプロジェクトでサービス停止時間を短縮することができましたが、実はメンテナンス作業自体は以前とそれほど変わっていないんですね。待機系に対して行うことによってサービスを止める必要がなくなっただけなので。ただ、それまでは朝6時からメンテナンスをしていたので、早朝出社しなくてはならず、一週間のリズムと、体調を維持するのがたいへんでした(笑⁠⁠。今回の改修で、わざわざ朝早く来て作業する必要がなくなったので、スタッフの作業効率という面でもメリットはあったと思います(有馬氏⁠⁠」

最後に、今回のプロジェクトを進めていくうえで大切にしていたことを聞くと、並河氏は「ユーザに影響を与えないこと」と即答します。

「アメーバピグのトラフィックを見ていると、一日の中でも何度か波があるのですが、たとえば、夕方の4時くらいからグッと伸びる傾向があるんです。学校が終わった学生さんたちが、アメーバピグで楽しんでいるんだろうなあと思います。そんなふうにアメーバピグを楽しんでくれている人がいるにもかかわらず、メンテナンスなので今日一日はアクセスできませんというのは申し訳ないですよね。ユーザに影響が出てもかまわないのであれば、もっと早く移行できたと思いますが、そうではなくてユーザに少しでも影響を与えない形で移行したかった。それを実現できて本当によかったです(並河氏⁠⁠」

この困難なプロジェクトをやり遂げた2人は、今後どのようにアメーバピグを進化させるのでしょうか。大いに注目したいと思います。

サイバーエージェント公式エンジニアブログ
URL:http://ameblo.jp/principia-ca
エンジニアの生の声を週替わりでお届け中!

おすすめ記事

記事・ニュース一覧