Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

【デブサミ2016】18-A-1レポート
ヤフーCTOが語る、Yahoo! JAPANのテクノロジー20年の軌跡と未来への挑戦

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2016/03/16 14:00

 日本最大級のポータルサイトYahoo! JAPAN(ヤフー)。20年にわたり、社会の課題をITの力で解決する「課題解決エンジン」として、時代に即した様々なテクノロジーやサービスを提供し続けてきた。そして近年、業界はもちろん、様々な社会の変化が加速度的に進み、また新たなテクノロジーが求められている。そうしたニーズにヤフーがどのように応え、エンジニア集団としてどこを目指すのか。同社CTOの藤門千明氏が「今後のヤフー」について語った。

目次
ヤフー株式会社 CTO 藤門千明氏
ヤフー株式会社 CTO 藤門千明氏

コテコテ純日本のクリエイター集団「ヤフー」

 日本屈指のインターネットサービスとして知られる「ヤフー」だが、意外にカンファレンスなどでの登壇も少なく、その実態について誤解する人も多いのではないだろうか。たとえば、あるときはpingの発射先として認識され、米国ヤフーの日本法人と思われ、開発を自社で行わないビジネス企業と捉えられる。さらには米国のサービスを日本に普及させるビジネスモデルであり、独自開発を主としていると思われがちだ。

 しかし、実のところは「コテコテの日本企業」であり、社員の約半数である2500人がエンジニアやデザイナーというクリエイター集団だという。そして彼らが開発するのは数々の独自サービスであり、基本的にはオープンソースを活用し、OpenStackなどのオープンソースコミュニティにもコントリビューターとして積極的に参画している。そんなヤフーの技術力と“エキサイティングさ”を伝えたいと同社CTOの藤門千明氏は語る。

 確かに、月間631億以上のPV、一日8300万以上のユニークブラウザ、そして月間アクティブユーザーIDは3100万とサービス規模は日本最大級。月間有料会員1600万ID、サービスは100以上を数え、アプリについては数えられないほど。その成長ぶりは、20年間で月間総ページビューは6000倍以上になり、その半数以上がスマートフォンからのものになっている。さらに2014年より2年連続でスマホアプリ(※ゲームアプリを除く)のパブリッシャーNo.1を獲得しており、藤門氏は「近年、着実にスマホシフトが進み、既におよそ6割のDUB(デイリーユニークブラウザ)がスマートフォン経由となっている」と語る。

自社サービスはファシリティからHTTPキャッシュまで全てを開発

 そんなヤフーのサービスは、どのような技術で構築され、運用されているのか。藤門氏は、ファシリティから、インフラ、ミドルウェアやサービングエンジンまで、いわば下から上までトータルに開発し、それぞれの強みを発揮しているという。

どんな技術で運営しているのか(インターネットサービス)
どんな技術で運営しているのか(インターネットサービス)

 ファシリティとしては、日本4カ所と米国ワシントン州にデータセンターを持ち、帯域400Gbps、平均200Gbpsの環境を運営する。また、OSは近年になってCentOS(RHEL)、そして6万台以上の物理マシンに加え、OpenStackをベースとしたプライベートクラウドを組み、仮想マシンとして活用している。

 「当初は全て自分たちで構築をしていたのですが、そのうちどんどん手が回らなくなってきました。そこで2013年よりクラウドの基本機能についてはOpenStackを導入してコミュニティによるグロースを促進し、ストレージはどうするのか、ACLをどう設定するのかといった不足分はベンダーと共同開発しました。そして、それでも不足する部分についてはヤフー独自の機能として開発する。それを戦略的に行ってきたわけです」(藤門氏)

 その結果、8万台以上のVMへ到達。ヤフー独自機能に注力し、OSSコミュニティを活性化し、現在では社内のほとんどのサービスで活用されているという。

 また、その上の開発ツールについてもまたDevOpsの開発ツールが一式揃っている。Jenkinsなどを活用した継続的インテグレーション(CI)の仕組みが整っており、さらに継続的デリバリー(CD)ではChefなどを使って構成管理し、デプロイするといった開発スタイルを実現している。すべてがこれに則っているわけではなく、「これから2000人のエンジニアがこれに乗ろうというステイタス」(藤門氏)だという。

どんな技術で運営しているのか(開発ツール)
どんな技術で運営しているのか(開発ツール)

 プログラム言語については、サービスが複数のビジネス分野にまたがること、エンジニアによって好き嫌いがあることなどから、選定には苦慮するものだ。そこで、ヤフーでは、言語の選定基準として「メンテナンス、学習コストを最小化すること」「オープンソースとの親和性」「過去のソフトウェア資産の活用」の3点を明確に定め、それに基づき選定している。WebサーバはPHP、サーバサイドのJavaScriptに対応、ビッグデータやコンピューティングリソースが必要な場合はCや C++、Javaを使っているという。

 また、Webサーバも同様に選定が難しいものだが、安定性やパフォーマンス、セキュリティを考慮してApacheやNode.js、Jettyを採用。さらに安定性とパフォーマンスを意図して独自のパッチをあてているため、社内では、ApacheはyApache、Node.jsはyNode.jsと呼ばれている。

 HTTPキャッシュについては、画像やスタイルシート等をWebサーバ側から配信するとコストがかかるためCDNを経由している。さらに天気やファイナンスといったサービスもTraffic Serverを挟んで提供されている。そうしているのはWebサーバへの大量のリクエスト集中や、ヤフー砲からの防御のためだ。また、オブジェクトストレージ、プッシュ通知や認証、セキュリティといったヤフー全体を支えるプラットフォームも自前で用意している。

 「技術的リソースを一部に特化するより、全体を自社で開発することで、たとえサービスダウンした際にも、自らの責任のもと復旧できるようにという思いがあります。そして、これらのテクノロジーをトップダウンで決めるのではなく、新卒からベテランまでプルリクエストで意見を交換し、クリエイターが議論して決めていく仕組みがあります。そこに大きな意味があると考えています」(藤門氏)


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:【デブサミ2016】セッションレポート

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5