CodeZine(コードジン)

特集ページ一覧

Yahoo! JAPANの現場で活躍する社内PaaS、サービス開発を10倍早くするための活用術とは【デブサミ2017】

【16-A-3】Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから

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

 エンジニアの業務には開発だけではなく、バージョンアップやセキュリティ対応も含まれる。しかし、それらの対応が影響し、時には開発業務に支障が出るほど人的リソースを取られてしまう。Yahoo! JAPANもまた、そのような課題に直面することがあった。これを解決するべく、Yahoo! JAPANは社内PaaSを導入。結果、開発現場にはどのような変化が起こったのか? PaaS導入の指揮を執った、同社の窪野安彦氏がデモを交えながら紹介した。

目次
ヤフー株式会社 システム統括本部 プラットフォーム開発本部 窪野安彦氏
ヤフー株式会社 システム統括本部 プラットフォーム開発本部 窪野安彦氏

エンジニアが開発に集中するために、手間がかからない仕組みが重要

 窪野安彦氏がYahoo! JAPANに入社した2004年、コンピューターは現在よりもかなり高価で貴重だった。当時の開発エンジニアに求められた思想は「人が頑張って、できるだけ有効に使おう、コンピューターが働きやすいプログラムを書こう」というものだった。

 しかし今は、ハードウェアの価格が大きく下がり、クラウドの普及によりリソースの柔軟な運用が可能となっている。開発面でもスクリプト言語が多くなり、ツールも格段に進化した。開発効率も大きく向上したはずだ。

 しかし窪野氏は、「使う道具は変わったが、『コンピューターをなるべく効率よく動かす』思想は進化していない、もっと人が楽をしてもいい」と語る。

 窪野氏はYahoo! JAPANのサービスで用いられている一般的なシステムでの事例を挙げる。情報の提供元から、Yahoo! JAPANのサーバーに対してデータが入稿されてくる。そのデータをバッチ処理で整形し、問題がなければそのままYahoo! JAPANのデータベースに登録する。さらにアクセス数などの関係でパフォーマンスが追いつかない場合は、データベースからキャッシュファイルを作成し、多くのサーバーにコピーを送る。

 ここでの問題は、バッチ処理は自動実行するcronに仕込まれているため、cronにトラブルがあるとバッチ処理が止まってしまうことだ。また、キャッシュファイル作成工程でも、キャッシュファイルのコピーに失敗してしまう可能性を抱えている。

 そこで窪野氏のチームは、「使う道具が新しくなっているのだし、もっと手間がかからないようにできないか?」と考えた。

 導き出された手法は、cronをやめてMessage QueueingやFaaS(Function as a Service)にする、というものだ。これで夜間にバッチ処理が止まることがなくなる。さらにキャッシュファイルを使用せず、KVSを立てて対応した。

 現場が抱えている課題は他にもある。例えば「バージョンアップやセキュリティ対応が多い」こと。Yahoo! JAPANは物理・仮想サーバーを10万台以上抱えており、その上お客さまのデータを預かっているため、脆弱性はこまめに対応する必要がある。

 プロジェクトにおけるエンジニアの主な仕事はサービスの開発だが、並行してバージョンアップやセキュリティ対応も行う必要がある。エンジニアが少人数だと、多くのサーバーに対してパッチを当てる作業だけでも人的リソースが厳しくなる。また、作業量は安定せず、例えば突発的なセキュリティ対応などで増える可能性もある。だからと言って、プロモーションなどの兼ね合いもあるため、開発スケジュールを後ろ倒しにすることは現実的ではない。結果としてエンジニアにしわ寄せがきてしまい、機能追加や改修、新たなセキュリティ対応もできなくなる、悪循環に陥ってしまうのだ。

 そこで窪野氏は、担当を分けることを考えた。例えばバージョンアップ・セキュリティ対応の専任者がいれば分業ができるので、プロジェクトのエンジニアは、本来やりたかった開発に集中できる。

 しかし社内の全てのチームで、このような運用を行うことは難しい。Yahoo! JAPANには多種多様な100を超えるサービスがあり、対応すべき案件が一気に集中することもある。専任者が全チームのサポートを行うことが望ましいが、プラットフォームがそれぞれ異なるため現実的ではない。人的リソースをなるべく使うことなく、まとめて面倒を見る仕組みを考えているうちに、窪野氏は「社内PaaS」という答えにたどり着いた。


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

バックナンバー

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

もっと読む

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

あなたにオススメ

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