インタビュー
ナンバーワンポータルを支える心意気
~Yahoo!JAPANを支えるインフラ技術者に聞く
(2014/2/18 06:00)
Yahoo!JAPANは、日本でインターネットを使うなら誰でも知っているほどの知名度がある。扱うサービスも幅広く、とりあえずそこに行けば情報があるという、インターネットの玄関口といえる存在だ。
この巨大サイトを支えるインフラについて、ヤフー株式会社 システム統括本部 基盤システム開発本部 インフラ技術2部の宮田耕一氏と神田剛氏に話を聞いた。(以下、文中敬称略)
100以上のサービスを抱えるヤフーのインフラ構成
――お二人それぞれの担当分野を教えてください。
宮田:私は入社7年目で、インフラのネットワークのチームにいます。担当しているのはロードバランサーによる負荷分散で、それに関連したGSLB(広域負荷分散)やDNSなども含めて、トラフィックの分散を扱っています。
神田:私も同じくネットワークの業務に従事しています。担当は、サーバーが直接接続するスイッチの運用管理がメインです。また、それを束ねるコアのスイッチや、他社と接続する部分をヤフーと切り離したネットワークネットワークの構築をします。専用線で接続したりといったときの調整もしています。
――ヤフーの場合、サーバーやネットワーク機器の数はどのぐらいでしょうか。
宮田:あまりはっきりした数字は言えませんが、物理サーバーでだいたい7万台ぐらい。その物理サーバーの上で仮想マシンが動いているので、実際のサーバー数はもっと多い数ですね。
神田:それらのサーバーが接続するスイッチが、数千台のオーダーであります。
――データセンターの数はどのぐらいでしょうか。
宮田:数は言えませんが、公開されているものでも、新白河や九州など全国各地のデータセンターを利用し、災害などに備えて分散しています。
――子会社のIDCフロンティアのデータセンターでしょうか。
宮田:IDCフロンティアのほかにも、いくつかのデータセンターを利用しています。1つのデータセンターでトラブルが起きてもサービスが止まらないように考えて契約している、と聞いています。
――ヤフーのような規模ですと、インフラで独自の構成などもあるのではないかと思いますが、いかがでしょうか。
宮田:独自の構成というほどのものはあまりないと思います。ただ、他社のエンジニアの方と話して特殊なのかなと思うのは、ある程度の大きさのネットワークの“箱”を用意して、そこにいろいろサービスを入れていくという構成ですね。サービス単位で専用のネットワークを用意する場合もあるにはありますが、それは特殊な案件のときだけで。基本的に、いろいろなサービスを共有のネットワークにどんどん入れていくのが、ヤフーならではの形態だと思います。
サービスごとに専用ネットワークを作ると、新しいサービスを立ち上げるときにネットワークを構築するまでの時間がかかりますが、“箱”に入れることでスピードアップするのが、ヤフーのネットワークですね。
――逆に、デメリットはありますか。
宮田:たとえばDSR(Direct Server Return。インターネットからのリクエストはロードバランサーを通るが、レスポンスはロードバランサーを通さず直接返す方式)をとった場合に、同じ“箱”でないと同じVIP(仮想IP)を設定できず、負荷分散できないということになります。そのため、すでに“箱”がいっぱいだと、負荷分散のためにサーバーを追加できず、サービスを一度止めるなどして空いている箱に移動しなくてはならない、というデメリットはあります。
――サービスや機器の追加は頻繁でしょうか。
宮田:いま100以上のサービスがあって、最近では毎週のようにサービスが追加されています。開発の要望しだいなので、知らないところで次々と出てくる。社内の人もなかなか全部は知らないんじゃないでしょうか(笑)。私のところはDNSを扱っているので、新サービスがわかって楽しいですね。
――サービスの開発側からインフラチームへの依頼はどのようなフローで来るのでしょうか。
宮田:チケットシステムを使って開発側から依頼が来る形です。このサーバーを使うからVIPを作って、とか。そのリソース見積りを見て、大丈夫かなと思ったときなどは、こちらから連絡をとって相談することもあります。あまり起こりませんが。
リリースした後も、気になるものはしばらくトラフィックを見ています。たとえば、2011年にリリースした「Yahoo!ボックス」は、大きなトラフィックがありました。事前のリソース見積りも大事ですが、実際のトラフィックを見ることも大事にしています。
――ヤフーですと買収などにより子会社が増えることも多いと思います。構成が変わって大変では。
神田:こんなに子会社が増えるとは思っていませんでした(笑)。それぞれに専用のネットワークを用意してヤフーのネットワークと接続しなくてはならないのですが、ある程度テンプレート化できているので、そんなに大変ということはありません。
――2009年に動画サイトの「GyaO」がヤフーのサービスになりましたが、やはりトラフィックは増えましたか。
神田:はい。国内のトラフィックは、ニコニコ動画やYouTubeなどの動画トラフィックが上位で、その中に「GyaO!」が含まれています。Yahoo!JAPANはもともと高トラフィックでしたが、さらに一気に上乗せする形でトラフィックが増えました。
宮田:ただ、ヤフーのトラフィックの特徴は、HTMLや画像などの細かいトラフィックの数が多いことですね。動画では1セッションで大きなトラフィックが流れますが、ヤフーでは小さいセッションが膨大な数になります。WBC(ワールド・ベースボール・クラシック)のときには、1秒で数十万セッションのアクセスがありました。それをどうさばくかが、負荷分散担当としての腕の見せどころですね。
仮想化とOpenStackでインフラ構築も爆速に
――「爆速」のキャッチフレーズで動くようになって、インフラチームの仕事も変わりましたか。
神田:やはり、開発がリリースの期間を早めているので、インフラもそれに煽られている感じはありますね(笑)。
宮田:最近では、2ちゃんねるで出たアイデアを12月に実現したAndroidアプリ「キスしよ!」に驚きました。何も知らないところに突然依頼が来て、えっ、なにこれ、と(笑)。現場に権限が移譲されているので、サービス開発のスピードが速くなっていますね。
その要望に応えられるようなインフラ作りということで、仮想化や社内クラウド化を進めている最中です。
――仮想化の取り組みは、いつごろからどのように進めてきたのでしょうか。
宮田:プロジェクトとして仮想化を進めるようになったのが2年ぐらい前で、いま第1段階が完了したところです。いまは4月頃からOpenStackを使った仮想化のプロジェクトに移行しているところです。
そうしたサーバーの仮想化に合わせて、ネットワークも自動化して、ネットワーク機器をサービスに対して自動的にあてはめられていく方法を考えているところです。たとえば、サービス側の人がWeb上から自分で「こういうのを作りたい」と指定すると、それにあわせて実機を設定するような。
実際に動き始めたものとして、ブロケードのロードバランサーをOpenStackから設定して自動化するLBaaS(LB as a service)について、先日のJANOG(Japan Network Operatior's Group)のミーテングで発表してきました。ブロケードがOpenStackのプラグインを出していて、サーバーとロードバランサーのVIPの設定を連動させられる。あとはDNSも設定したいところですが、最初から全機能というわけではなく、まずはスモールスタートで投入したところです。
――仮想化のプロジェクトの目的は
宮田:3つあります。1つ目は、サービスインまでのスピードを上げたいこと。2つ目は、サーバーの稼働率がばらばらだったので、仮想化で稼働率向上させること。3つ目は、ラックスペースを省スペース化することです。
――OpenStackを採用したポイントは
宮田:何種類かのソフトウェアを検証しました。その中でOpenStackを選んだのは、まずOpenStackが検証の段階でちゃんと動いたこと。次に、開発が活発で成長性に期待できること。あとは、Pythonベースで作られていて、自分たちでも機能追加しやすいことです。
――その半面、OpenStackは開発が活発すぎて最新のものに付いていくのが大変という声も聞きます。
宮田:そうですね。それについて、頻繁にアップデートしていきたいと社内では話しているところです。たとえば、“箱”と同じようにOpenStackもそのときの旬の技術で次々作っていって、移行していく、というようなことをやろうと考えています。
ソチオリンピックに向けて対策
―― インフラチームの人数や構成はどのようになっていますか。
宮田:私と神田のいる実運用のネットワークのチームが8人ぐらい。それとは別にネットワークセキュリティのチームが7人ぐらいです。また、サーバーやストレージがそれぞれ10~15人ずついて、OpenStackなどのインフラの開発チームも10名ぐらいいます。
―― 実運用のインフラ担当は、いつ呼び出されるかわらないのが大変ですね。
宮田:そうですね。ロードバランサーはそれほどでもありませんが、神田の担当するスイッチは台数が多いので大変ですね。
神田:スイッチが数千台あるので、母数が多い分、障害が頻繁に起きるのが大変です。対応を定型化して、現地だけで対応できる状態や業務改善を行っていっています。
――運用担当者は一般的に、盆暮れの休みにシステム入れ換えなどのメンテナンスをするという話も聞きますが。
宮田:弊社では盆暮れは逆に避けています。トラフィックは減りますが、現場の人がいなくて、入れ換えたあとトラフィックが伸びてくるときに何かあったらと怖いので。メンテナンスは、深夜帯などのトラフィックが下がる時間にやっています。
――トラフィックが減る時期や増える時期はありますか。
宮田:年末年始はトラフィックが減りますね。あまりニュースもなく、皆さん正月番組などを見ていて、ショッピング意欲もあまりなかったり。
年間でトラフィックが増える時期というのは特にありません。スポーツなどのイベントのときや、Yahoo!ショッピングのセールスのとき、災害のときなどに増えますね。ヤフーのトラフィックは、人々の生活に結びついていると感じます。
イベントについては、いろいろ痛い目にあったので、先まわりして何カ月も前から増強しています。たとえば、WBC(ワールド・ベースボール・クラシック)の第1回では痛い目にあいました。みなさん、1球ごとぐらいの間隔でどんどん更新して(笑)。1つ1つは小さいのですが、動画に匹敵するトラフィックになりました。なんとかトラフィックを捌けましたが、第2回に備えて構成を変えなくてはと。そのあたりを考えて、必要に応じて専用の“箱”を用意し、トラフィックの量やサーバーの台数を計算するのは、トラフィックの醍醐味ですね。
――スポーツイベントといえば、ソチオリンピックへの対策はいかがでしょうか。
宮田:ちょうど今日用意していたところです(注:インタビューは1月下旬に行なわれた)。いろいろな拠点にサーバーを配置し、専用VIPを用意して、どう捌くかと。
前回のバンクーバーオリンピックのときは、構成がうまくいってなくて、かなりのトラフィックが2日間続きました。それを物理的な配線を変えたり、社内のサーバーから社外のCDNにトラフィックを逃がしたり、トラフィックの出口を変えたり、といろいろ対策して、徹夜で作業していました。今回は、おそらくその二の舞にはならないだろうと。
――期待していいでしょうか。
宮田:ソチは期待していてください。
――そのほか、トラフィックが増えるときは
宮田:「Yahoo!ニュース」で面白いトピックがあると、インターネット上で紹介されて広がってみんなで盛り上がり、トラフィックが増えることがあります。そういうときには、後から原因を調べて理由がわかったりします。
先日は、トップページに「バルス」ボタンを置いたり、「進撃の巨人」の巨人が現れたりして、そういった企画をやるとトラフィックが増えますね。ヤフーの体制が変わってから、面白いことをやっているなと思います。
みんなが知っているサイトを支える心意気
――ヤフーは、ネットを使っている人はみんな知っていて、なかば公共サービスのようになっているのが特殊ですよね。それを支える心意気は。
宮田:「トップページは絶対に落とさない」と思っています。
悲しかったのは、2013年の8月に、奈良で大地震が発生という誤報があったときですね。みなさん、気になるので日本中からアクセスが殺到し、アクセスしづらい状態になってしまいました。情報を知りたいという正当な目的でDoS攻撃に匹敵するアクセスがあったわけで、それに耐えて落とさないようにしていかなくてはならないと思います。
――東日本大震災のときには、いちはやく募金を開始したところトラフィックが膨大で、1円も取りこぼさないように苦労したと聞きましたが。
宮田:募金が始まってトップページからリンクされたのは週末でしたが、トラフィックがかなり集中しているのを見て、サービスの人に連絡して増強を提案していました。その後も数日間、落とさないよう増強を繰り返しました。
地震当日は、いちどオフィス近くの公園に避難して、そのあとオフィスに戻って、そのまま張りついていました。まず、みなさん帰宅が心配で路線情報のトラフィックが高騰していたので、緊急で一気に増設しました。あのときのトラフィックは尋常ではありませんでしたね。
また、政府の人といっしょにいた人が、政府のページをヤフーのCDNから配信する話をその場で決めて、すぐに話が降ってきて、これも張りついて対応していました。ほかに、東電のページなどもCDNから配信しました。広く公共の手助けができたのは、やりがいを感じましたし、これを機にヤフーのサイトの公共性をより意識しました。
――もしも東京に大地震が来たときの対策は
宮田:インフラは、東日本だけでなく西日本にも分散して災害などに供えています。主要サービスは、東日本と西日本で同じぐらいの割合で分散しています。
サービスやコンテンツの運営もある程度分散していて、たとえば、ニュースは大阪にも編集部があります。
――先ほどやりがいという言葉がありましたが、インフラエンジニアとしての、あるいはヤフーのインフラエンジニアとしてのやりがいは、どのようなところでしょうか。
宮田:使命感があることに対するやりがいはありますね。特にヤフーは、人の生活と直接つながるトラフィックを感じます。ますます、絶対落とせないなと。
神田:同意見です。あとは、サービスが新しくどんどん出てくる中で、どれぐらいのアクセスが来ているかを直接見て、その対応を考えられる、というところにもやりがいを感じます。
宮田:あとは、エンドユーザーさんに意識させないインフラを守ろうと。パソコンをつないだら快適にヤフーが見られる、というのを維持したい。
―― 今後取り組みたいことは
宮田:ちょうど今やっているのが、高トラフィックを扱うロードバランサーです。高スペックなロードバランサーを使いたおす、というぐらいの構成に取り組んでいます。
神田:私は設定の自動化をもっと進めたい。機器をLANでつないだらコンフィグが入ってしまうぐらいにできればと思っています。数千台のスイッチを抱えて、これからもどんどん増えていくので。
宮田:最終形態としては、障害のアラートをトリガーに全部プログラムで対応できてしまうといいですね。妄想しているぐらいの話ですが(笑)。
―― そもそもお二人がヤフーのインフラチームに入った理由は
宮田:私はもともと、学生時代はインフラ専攻ではなかったので、インフラを知りたい、それならヤフーでインフラまわりを学ぶのがいいだろうと思って。入社のときの面接でもインフラを志望しました。実際、面白い仕事でした。インフラチームもまだまだ人が足りないので、面白そうだと思う人は、ぜひヤフーに来てください。
神田:私は何社か受けて、受かった中でいちばん楽しそうだったのでヤフーを選びました。Windows 95の頃にインターネットを始めて、最初にアクセスしたのがヤフーだったこともあって。実は、最初はインフラ志望ではなかったのですが、適性を買われたのかインフラチームに入って、今はやりがいを感じています。