システム本部技術部たんぽぽグループ
森本 茂樹氏
2010年8月10日、『mixi』にとって、過去5年の運営史上、初めての大規模な障害が発生した。PC、モバイルサイト双方において、全サービスにアクセスができない状況が3日間続いたのだ。その時、『mixi』運用の現場では何が起こっていたのか。復旧の先頭に立ったエンジニアが語った。
取材・文/渡邉昌資/佐藤ゆき恵 2010年10月25日
Check
まず、「たんぽぽグループ」というのは、ミクシィの中でどういう存在なのですか。
コンセプトは、「開発者のための開発」を行なうグループです。『mixi』がどうあるべきかという大局的な視点に立って、全システムに横断的に関わります。具体的には、『mixi』のコアアーキテクチャの検討、開発工程の改善、改善のためのツールの導入検討、パフォーマンスチューニング、アルゴリズム改善、海外向けサービスプロジェクトのサポート、など、『mixi』の開発・運用がスムーズに進むようさまざまな活動を行なっています。
「工場のベルトコンベアから流れてくる刺身の横によくある“たんぽぽ”を延々と置き続けるだけの仕事」---つまり「誰でもできる簡単な仕事」を社内からなくすというミッションを持つグループとして生まれました。システム開発における知識や経験が豊富で、特に高い技術力を持つ人が集まっています。
(システム本部技術部たんぽぽグループ)
奈良工業高等専門学校を卒業後、大手ポータル会社など複数のIT系企業でシステム運用の経験を積む。2007年、ミクシィのCTOに請われて、社内で最も優れた技術力を持つメンバーが集まる「たんぽぽグループ」のコアメンバーとして参画。
先日の障害は、どういう経緯で起きたのでしょうか。
8月10日の午後5時ごろ、「レスポンスが悪い」という最初の報告が入ってきて、すぐに調査を開始しました。すぐに分かったのは、複数のmemcachedサーバが落ちているということでしたが、それまで常に安定稼動していたmemcachedのバグが原因であるとは、この時点では誰も予想していませんでした。当初は、ちょうど同じタイミングで行なわれた新機能のリリースの影響ではないかとか、ネットワークや電源に問題があるのではないかと考えたのです。
なぜなら、100台ほどのサーバで、KeyとValueをペアにして保存するという使い方をしていたので、もしmemcachedが原因なら全部が落ちなければおかしい状況だったのです。そもそも、たとえ10台が同時に落ちたとしても運用が続けられる構造を採用していたため、落ちてしまったことに驚きました。
その後、どうやって復旧したのですか。
即座に、たんぽぽグループと運用グループから4人ずつメンバーが出て対応チームを編成しました。私はmemcachedのソースコードを追い、もう一人は大量データの保存時の動作検証を行ない、さらに別のメンバーはmemcachedで復旧できなかった場合の代替技術を検討するという具合に役割を分担し、原因と対策を探していきました。
復旧に時間がかかった原因のひとつが、落ちた時のログがなかったことでした。『mixi』への1リクエストにつきmemcachedへのアクセスが数十回発生するので、memcachedは一時間に数十メガという膨大なログをはき出します、これをすべて保存しておくことは不可能に近かったのです。そこで、ログを取得する仕組みを再構築し、原因究明を進めることにしました。memcachedをクリアせずに同時にログを取得するのは非常に難易度の高いことで、最終的に原因を突き止めたのは翌日でした。その時わかった事は、memcachedは接続数が限界に達した状態で、頻繁な切断・接続を行うと稀に落ちることがあるということで、未だ知られていなかったmemcachedのバグを発見した瞬間でした。『mixi』ではmemcachedへの接続数が非常に多いため、切断・接続も大量に行われます。そのため「ごく稀」な状況が「ごく稀」ではなくなり多数のmemcachedでバグが発生し落ちてしまっていたという現象が起きていたのです。
『mixi』は、オープンソースを多用して構築したシステムです。中でもmemcachedを利用しているサービスとしては、国内最大規模です。今回の経験を通して、当社はmemcachedをより深く理解することができました。どういう状況で、memcachedが落ちるのかということは、これまで世界でも未知だったのですが、『mixi』がそれを再現し、バグフィックスにつなげることができたというのは、意義深いことだったと思います。また、今回は大規模障害ということでCTOからtwitterを通じてアナウンスを行ったところ、たくさんの方から検証やテストツールなどで助けていただきました。こうして助言をもらえることはオープンソースの大きなメリットだと思います。twitterや弊社エンジニアブログで情報公開を積極的に行ったことも外部の支援を得やすかった一因だと思います。大勢のユーザに影響を与えてしまいましたが、将来的な技術の発展という観点では、大きな前進であったとも考えられます。開発コミュニティに対しても大きな貢献ができたと考えています。
ミクシィのエンジニアの特徴は何だと思いますか。
ミクシィのエンジニアは「非常にシンプルなコードを書く」という印象を持っています。何をしたいのかがすぐに分かると言うのでしょうか。変数や構造の作り方などが、とても分かりやすく、読みやすいのです。そして実は、シンプルに書くということが一番難しいのではないかと思っています。本当は、できあがったものをコピー&ペーストして作ってしまうのが楽なのでしょうが、そういうことはしない。その瞬間には手間隙がかかっても、メンテナンスを含めて考えたら、全体のコストは明らかに小さくなります。
そういうコードを書く人が多いのは、なぜなのでしょう。
「規模が大きく、息の長いシステムを運用し続けていくこと」を突き詰めて、システムを作ってきた考え方が、新しく入ってくる人にもソースを通じて伝わっているのだと思います。
また、「コードレビュアー」によるチェックも、一役買っているでしょう。コードレビュアーとは、アプリレイヤーで書いたソースコードをチェックする人のことです。レビュアーに了承を得ないと、その先の開発は一切進みません。私もコードレビュアーですが、レビューにおいては、即、正解を与えるのではなく、「この部分が気になります」「こうしてはいかがでしょうか」といった助言に留め、開発者自身にもう一度考えてもらうことを意識しながらレビューしています。
とにかく矢継ぎ早にサービスを出していくことも大切ではありますが、ミクシィのものづくりには、クオリティを追求するためであれば、しっかりと必要な時間をかけるという精神が根底にあるといえるかもしれません。
転職を考えているエンジニアにメッセージをお願いします。
もしあなたが、大規模なシステムを運用したり、新しいことにチャレンジしたいと考えているなら、ミクシィはそれを実現することができる場所だと思います。『mixi』では、2,100万人のユーザが時間を問わず、いくつものデバイスからアクセスして、多彩な使い方をしていますので、いつどんなサービスが急激に伸びるか、予測が非常に難しいのです。予測不可能な状態での負荷分散にかけては、他社では絶対に得られないスキルも身につくと思います。数百台のサーバを動かせる環境は、特定の場所にしかありません。ミクシィには、それがあるのです。
森本氏も執筆しているミクシィエンジニアブログ
mixi大規模障害について http://alpha.mixi.co.jp/blog/?p=2109
mixi大規模障害について その2 http://alpha.mixi.co.jp/blog/?p=2153
mixi大規模障害について解明編 http://alpha.mixi.co.jp/blog/?p=2211
たんぽぽグループのエンジニアは、社内でも一目置かれる存在のようだ。特に森本氏は、「尊敬するエンジニア」として真っ先に名前が挙がるような存在感がある。そんな森本氏がソースやそのレビューを通して伝えるものを、後進のエンジニア達が吸収し成長している。そのような技術のリレーは、ミクシィという会社やサービスの「息の長さ」の源ではないか。ミクシィの強さの秘密は、まさにエンジニア達の成長にあると感じた。
毎月増えるサーバーのマウントから行い、慣れてきた段階で既存のサーバー・ネットワーク構成および問題点を洗い出し、より最適なサーバー・ネットワークの構成を考えていただきたいと思います。その後、サーバー・ネットワーク機器の選定作業(既存のもの以外に必要な場合)を行い、構築・運用まで一貫して行っていただきます。
【必要なスキル・経験】・Unix、Linuxでのシステム運用・構築経験のある方
mixi Platform事業に関する開発を推進しています。mixiアプリ、mixi OpenID、mixiボイスのTwitter連携やAPI開発等、mixiのプラットフォーム戦略に関する施策の開発および保守を行っています。また、パートナー企業や一般開発者への技術的サポートを通じて、mixi Platform全体の市場拡大を目指しています。
【必要なスキル・経験】Unix、Linux環境でのWebアプリケーション開発経験
ミクシィのコンピュータソフトウェアおよびコンピュータシステムの設計および開発、管理およびその保守並びにコンピュータによる情報処理並びにこれらに関連する全ての業務を管掌している部署になります。 具体的な業務・ラックマウント後のサーバへの各種ソフトのインストールと設定・ツールを使った負荷状況の監視(ツールの作成)・サーバの設定調整
【必要なスキル・経験】・Linuxを使用した経験、Unix系のプログラミング言語の知識
システム本部運用部運用グループ
吉野 純平氏インタビュー
新しい“つながり”を生み出すためのサービスを提供し、世界への進出を図る
日本最大級のSNSサイト「mixi(ミクシィ)」。2,000万人を超えるユーザを抱える強大な交流プラットフォームとして、進化を続けている。mixiアプリなど多くの新機能が実装され、ユーザはさらにサイト滞在時間を伸ばしている。そのメディア力を活用したいと考える企業も集まり、mixiは大きな影響力を持つようになった。そのサービスを支えるエンジニアを中心とした社員は、やりがいのある仕事の数々を通して大きく成長していく。今後も人と人、社会やモノをつなぐ場として成長していくために、仲間となってくれる人を求めている。
資本金 | 37億5,347万円(2010年3月31日現在) |
設立年月 | 1999年 |
従業員数 | 322人 |
平均年齢 | 30.6歳 |