国内有数のWebサービスを手がけるYahoo! JAPANは、その毎秒100万リクエストという膨大なトラフィックを支える大規模なインフラチームを抱えています。そのうち画像などを配信するプライベートCDNでは、オープンソースのATS(Apache Traffic Server)をキャッシュサーバーに採用し、本家OSSプロジェクトでの開発にも積極的に参加しています。OSSのコミッタを業務とするYahoo! JAPANのプラットフォーム開発エンジニアのお二人と、はてなからインフラチームとMackerelのエンジニアが参加し、インフラエンジニアの働き方について座談会形式でお聞きしました。
座談会出席者は、(上写真、左より)ヤフー株式会社の小柴薫居さんと北條正和さん、はてなの坪内佑樹(id:y_uuki)と松木雅幸(id:Songmu)。構成はITジャーナリストの星暁雄。記事の最後にプレゼントのお知らせもあります!
(※この記事は、ヤフー株式会社の提供によるPR記事です)
■ Yahoo! JAPANのインフラチームではインフラのコードを書いている
──みなさんが担当されている業務を中心に自己紹介をお願いします。
小柴 Yahoo! JAPANのプライベートCDN(Contents Delivery Network)の開発をしています。日々、インフラを相手に遊んでます(笑)。
北條 今は別のプロジェクトに移っていますが、つい最近まで小柴と同じくCDNを開発していました。
小柴 北條はバグハンターなんですよ。コードからバグを見つけるのがうまい!
北條 コードを眺めて「こうするとダメなのでは?」という部分を拾い出して、やってみて「やっぱだめじゃん」となるのが好きです(笑)。
──業務としてOSS(オープンソース・ソフトウェア)のコミッタもされているそうですが。
小柴 Yahoo! JAPANのプライベートCDNには、OSSのキャッシュサーバーであるATS(Apache Traffic Server)が組み込まれているんですが、そのプロジェクトのコミッタとPMC(Project Management Committee)をやってます。
北條 私も去年(2015年)12月にATSのコミッタとPMCになりました。
坪内 はてなのインフラチームに所属しています。Mackerelやレガシーシステム全般のインフラ周りを手がけています。
松木 Mackerelのディレクターをしています。
──Yahoo! JAPANとはてなでは、インフラの規模もかなり違いますよね。
坪内 ブログを拝見すると、通常は秒間100万リクエスト/秒、災害発生などピーク時に200万リクエスト/秒という数字が出ていましたが。
小柴 薫居(こしば・まさおり)
ヤフー株式会社
プラットフォーム開発本部
配信プラットフォーム部 開発1
小柴 はい。秒間100万、200万という規模ですね。
坪内 はてなのシステム規模は、Yahoo! JAPANに比べておそらく数桁小さいでしょう。インフラチームは7人で、数千台のサーバーを見ています。アプリのコードも書くし、ハードウェアの購買の仕事も、設計もモニタリングもなんでもありです。
松木 Yahoo! JAPANはインフラチームだけで何百人にもなるとのことですが、入社時にどういう仕事をすることになるか、イメージできましたか?
北條 自分の場合は、大学の研究で共通基盤を提供する仕組みを扱っていたこともあって、なんとなくイメージはできていましたし、採用面接時の希望通りに配属してもらえました。
小柴 バックエンド側の方が、なんとなく技術的に面白そうだったので「プラットフォームがいいです」と希望したところ、拾ってもらいました。
松木 はてなの場合、アプリエンジニアとインフラチームは密にやりとりをしています。データ量や全体のアーキテクチャを一緒に把握して、一緒にやる感じです。Yahoo! JAPANの場合はどうですか?
小柴 Yahoo! JAPANの場合、完全にチームが分かれています。サービスを開発するエンジニアがサービス開発自体に集中してもらうため、サービスで共通に使えるものはプラットフォームとして社内に提供しています。
さらに、インフラの中でもそれぞれの専門分野に分かれています。僕らはインフラの開発が仕事です。サーバーの選定はしますが、発注やラッキング、OSの設定などは別の本部が担当しています。運用も別チームです。
坪内 サーバーの選定は、どんなふうにするのですか?
小柴 秒間100万リクエストをさばかないといけないので、そこで流れるトラフィックに対して一番いいサーバーはなんだ、という観点で選びます。CPU性能か、ディスク性能か、トラフィックの特性によって違ってきます。
■ 社内プロダクトからオープンソースのATSへと移行
松木 ATSにはいつごろから取り組んでいるのですか?
北條 正和(きたじょう・まさかず)
ヤフー株式会社
プラットフォーム開発本部
配信プラットフォーム部 開発2
北條 入社したころは、YTS(Yahoo Traffic Server)と呼ばれる米Yahoo!内部のプロダクトだったんです。それを米Yahoo!がOSSにしたものがATSで、YTSはクラッシュすることもあったので「OSSになったATSを全社に導入しないとね」という流れになり、OSSのATSに業務として取り組んでいいことになりました。
小柴 実は、入社するまでATSを知らなかったんです。
坪内 はてなでは、3年ぐらい前にATSを検証したことがあります。当時の判断でリバースプロキシとしては使わないことにしたんですが、今もフォワードプロキシとして使っています。
北條 3年前というと、うちのインフラがYTSからATSに切り替わったころですね。
小柴 その時期、Yahoo! JAPANのインフラでレガシーなものを取り替えていく動きが始まりました。ATSも、RHEL4からRHEL6に変えるといった形でインフラ全体を取り替えていく中で、導入しました。YTSは32ビットでしか動かなかったことが大きかったですね。ATSはYTSと似ているし、速い。こっちに変えようと。
切り替える大きなきっかけは、僕と北條がATSのイベント「Fall 2013 Summit」(2013年秋、米Yahoo!キャンパスで開催)に参加したことでした。その時点ではATSを使っていなかったのですが、「こんなイベントがあるんですけど」と部長に言ったところ「行ってこい」と背中を押してもらい、参加して「YTSを使ってる」と説明すると、「マジで? よくクラッシュするでしょ?」と言われて(笑)。
いまさらYTSじゃないだろうという雰囲気で、それが転機になってATSを使いはじめました。同時にATSのコミュニティにも入っていこうと活動を始めて、今に至っています。
松木 いい具合にOSSに移行できたのですね。
小柴 ATSに関しては、移行はスムーズでした。品質がぜんぜん違うんですね。速くなってるし、バグも減っているし。いいことばかりでした。
北條 しかも使い方は変わらなかった。
小柴 違いは「クラッシュしなくなったこと」みたいな感じです。
松木 良くなった理由は何ですか?
北條 OSSとして公開して、いろいろな所で使われると見えてくるものがあります。他の会社で使ってくれて踏んでもらえたバグがあったり、それを別の会社の人が改善してくれたり。どんどん良くなる。そこがOSSのいいところだと思います。
■ ATSへの貢献を始め、やがてコミッタに招待される
坪内 佑樹(つぼうち・ゆうき)
株式会社はてな
システムプラットフォーム部
エンジニア
坪内 ATSのようなインフラ開発のスキルはどう磨いたんですか? C/C++でかっちりしたコードを書くのは高度なスキルが必要だと思います。
小柴 高度と言われると怪しいものが(笑)。
北條 ATSにすでにあるコードを見て、学びながら作るのが大きいですね。そうして見ていると、「なんだこれ?」と思うような特有の作法があることが分かってきます。
例えばC++のSTL(Standard Template Library)を使っちゃだめなんですよ。C++なのにCっぽいコードが残っちゃって、つらい感じなんですけど。
松木 どういう経緯でATSのコミッタになったのですか?
北條 ドキュメントの翻訳から始めました。CDN以外に独自にATSを社内で使おうとすると、ドキュメントがないと設定しづらい。英語のドキュメントはあるけれども。ドキュメントの和訳で自分たちの理解を深めて、Summitにも参加して、コミッタの人たちに自分たちがやっていることを説明したり。そのうちバグ修正もするようになって。
小さい仕事から交流や信頼を深めて、そのうちにコミッタが求めるなんらかの基準を満たしたらしく、コミッタに招待してもらえました。大きいのはHTTP/2への取り組みに参加したことでしたね。
小柴 ある日突然「コミッタとPMCやらない?」みたいなメールが飛んできます。それまでの積み重ねと、貢献してくれそうな期待があるからだと思います。
坪内 Yahoo! JAPANでATSの開発に関わっているのは何人ぐらいですか?
小柴 7~8人かな。
坪内 はてなのインフラチーム全体と同じぐらいの規模ですね。
小柴 そう聞くと、ぜいたくかも(笑)。
松木 雅幸
株式会社はてな サービス開発本部
Mackerelチーム
ディレクター兼チーフエンジニア
松木 ATSのコミット権を持っているのは?
小柴 コミット権を持ってるのは3人かな。(コミット権のない)隣の席の人が書いたパッチをマージするとか、そういったことはやってます。
松木 ATSのオープンソースプロジェクト全体では?
小柴 コミッタが41人、アクティブな人はその中で15~20人ぐらい。
松木 けっこういるんですね。
小柴 Apple、LinkedIn、Comcast、それに米Yahoo!の人が多いですね。
松木 ビッグプレイヤーがかなりいるのですね。特定の一社の思い通りにはならないと思いますが、各社とどう協調するかで悩ましいことはありますか。
小柴 企業からオープンソースプロジェクトに来ている人は、自分の背景にある会社の利益を優先したいというところはあります。でも、ATSが速くなれば、それぞれの会社にとって大きなメリットになりますから、良くしていこうというコンセンサスはあります。
坪内 OSSのプロジェクトとしての優先度と、業務との兼ね合いはどうコントロールしていますか。
北條 個人的にやっている部分もあったりしますが、OSS開発も基本は業務です。業務の中では、特別な優先順位というものはありません。
小柴 業務とOSSの板挟みになるような局面はありますね。業務として取り組むと、優先度の付け方が変わりますから。
例えば、ATSを導入した当初は、プライベートな取り組みとしてドキュメントの翻訳を進めていました。その後、業務としても翻訳をすることになったのですが、他の業務と比べると優先度が下がってしまって、なかなか進まないということがありました。
ただ、ATSが速くなれば、インフラの力が上がって、Yahoo! JAPAN!の利益になりますから。業務としてOSSに取り組むのも、やりやすい環境になりつつあります。
松木 OSSと業務の割合はどうですか?
小柴 僕個人について言うと、最近はATSのHTTP/2の実装にフォーカスしていたので、8割はオープンソースのコードを書いている感じです。一方で、社内向けでコードを公開しないプラグインを書いている人もいます。その場合でも、困った場合はオープンソースで公開されているコードを直しにいくし、業務の中にはOSSをつなぎ込む時間が入ってきます。だから、OSSとそれ以外を切り離して考えるのは難しいですね。
松木 OSSに取り組むことで、より技術を洗練させられるし、エンジニアとして成長できる。それに自分の会社で作ったオープンソースプロダクトのコミュニティをうまく運営できれば、社外のリソースも活用できる形になる。反対に、ずっと使っているOSSに急な仕様変更があって困ることもある。だから、OSSを採用するなら、普段から積極的に関わっていた方がいいですね。
小柴 自分たちが重要だと思っていた機能が、メジャーアップデートしたらdeprecated(非推奨)になるとか、そこでフォークしたコードをごりごりメンテしなくちゃいけなくなって大変な目に遭うとか(一同、うなずく)、そういったリスクがOSSにはあります。そうならないためには、コミュニティに参加して積極的にやっていく方がいい。ギブアンドテイクというか、もらった分は返せるといいなと思います。
■ オープンな開発の作法が分かる人がいい
──インフラチームに向いているのは、どんな人ですか?
小柴 いろいろな要素がありますが、オープンソースコミュニティがどう運営されているか、どんなお作法があるかが分かっている人はスムーズに入れると思います。
松木 GitHubを使ってるかどうかで作法の違いが多少あるかもしれませんね。
北條 そこはプロジェクトによって違うかもしれません。実は、ATSプロジェクトをGitHub上でやりはじめたのは比較的最近です。
──OSSがここまで重要になってきた理由って何でしょう?
小柴 自分たちだけで作るより、他の会社と一緒に作った方がうまくいく例が増えてきたんですね。
松木 Yahoo! JAPANさんの場合はクローズドソースのプロダクトも充実しているのでは?
小柴 どうでしょうね(笑)。「伝家の宝刀」みたいなプロダクトより、オープンソースの方が成長が早いですから。YTSとATSの違いはオープンソースかどうかだけなのですが、成長スピードがまったく違います。オープンにすることで、いろいろなところが良くなります。
松木 OSSだと、社内特有の要件を入れないのできれいな設計になります。クローズだと甘えが出て……。
小柴 つい依存関係が出てしまう。
──オープンソースに取り組むことで意識が変わってきた面はありますか?
小柴 コミュニティでのやり取りから学ぶことがあります。OSSの人たちはすごくオープンマインドで。Google翻訳そのままみたいな、何を言ってるか分からない質問にも、「質問の意味は分からないけど、このへんじゃない?」とかコア開発者が答えているんですよ(笑)。
■ インフラエンジニアの「楽しさ」とは
──インフラエンジニアと一口にいっても、仕事の中身はずいぶん変わってきたのですね。
坪内 インフラエンジニアって、昔はオペレーションをする人みたいな印象があったと思うんですが、最近はオペレーションを自動化しましょうということで、インフラストラクチャをコードにする動きが盛んです。
一方で、C/C++言語でOSとシステムコールのレベルで対話して、検証して、パフォーマンスを出すことは、自動化するためのコードとはまた違った面白さがあり、そういう開発に魅力を感じる人もけっこういるんじゃないかと思います。
──エンジニアにとってインフラの魅力って何でしょう?
松木 大量のトラフィックを扱うのが楽しいとか?
小柴 それはありますね。「いかに大量のトラフィックをさばくか」というのは、取り組んでいて面白い問題です。
北條 技術が好き、というのはあります。インフラチームが向かい合う相手は、技術そのものだったり、技術者だったりする。技術が好きな人間としては面白いですね。
さらにオープンソースの場合は、自分が書いたコードが他のところで動いているかもしれない。そう思うとうれしくなります。
小柴 オープンソースのコードを書いていると、そういったスケール感がありますね。
──そこに醍醐味がありそうですね。本日は興味深いお話をありがとうございました。
■ ホームユース向けNASサーバーを1名様にプレゼント!
※キャンペーンは終了しました。たくさんのご応募、ありがとうございました。
記事をお読みの方の中から抽選で1名様に、Synology社製のホームユース向けNASサーバーDiskStation DS215jに、Western DigitalのHDD(3TB)1台を付けてプレゼントいたします。応募方法は、下記の応募要項をご覧ください。
<プレゼント応募要項>
- 応募期間
- 2016年4月5日(火)から2016年4月18日(月)24時まで
- 賞品と当選人数
- Synology DiskStation DS215j+WD Red WD30EFRX (3TB HDD) を1名様
- 応募方法
- Twitter連携した上で、この記事をはてなブックマークに追加してください
※プライベートモードでのご利用は対象外です - 当選発表
- 厳正なる抽選の後、本記事で、当選者様を発表させていただきます
- 賞品発送
- 当選発表後、はてなよりメールをお送りし、送付先情報(送付先住所、受取人氏名、電話番号)をお聞きします
※プレゼントの発送は日本国内に限らせていただきます
※当キャンペーンはSynologyおよびWDの提供・協賛によるものではありません。
■ 2016年4月20日追記:プレゼント当選者発表!
厳正な抽選の結果、当選された方を発表します。おめでとうございます!
Synology DiskStation DS215j+WD Red WD30EFRX (3TB HDD) :1名様
当選者の方には、のちほど送付先情報を確認するメールをお送りいたします。
- ※期日までにご返信をいただけなかった場合は、再度抽選を実施し、繰り上げ当選者へ当選権をお渡しします。
- ※繰り上げ当選が発生した場合、発表は、はてなからの当選連絡をもって代えさせていただきます。ご了承ください。
<関連記事>
池澤あやかとはてな大西がヤフーの村上さんに「エンジニアの働きやすい職場って?」と聞いてみた。【前編】 /【後編】 - itstaffing エンジニアスタイル
[PR]企画・制作:はてな
取材・構成:星 暁雄
写真:小高 雅也