コテコテ純日本のクリエイター集団「ヤフー」
日本屈指のインターネットサービスとして知られる「ヤフー」だが、意外にカンファレンスなどでの登壇も少なく、その実態について誤解する人も多いのではないだろうか。たとえば、あるときは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サーバへの大量のリクエスト集中や、ヤフー砲からの防御のためだ。また、オブジェクトストレージ、プッシュ通知や認証、セキュリティといったヤフー全体を支えるプラットフォームも自前で用意している。
「技術的リソースを一部に特化するより、全体を自社で開発することで、たとえサービスダウンした際にも、自らの責任のもと復旧できるようにという思いがあります。そして、これらのテクノロジーをトップダウンで決めるのではなく、新卒からベテランまでプルリクエストで意見を交換し、クリエイターが議論して決めていく仕組みがあります。そこに大きな意味があると考えています」(藤門氏)