Interview/

Saegusa Yoshihiro

ーー自己紹介をお願いします。
入社は2005年で当時のNHN Japanに入りました、社歴はかなり長いです(笑)。それ以来、約15年ネットワークやデータセンターまわりなどのインフラ領域に携わっています。今は、LINEのプライベートクラウドである「Verda」の企画・開発・運用をしているVerda室の室長をやっています。LINE DEVELOPER DAY 2018の動画や資料を見てもらうと、具体的なイメージを持ってもらえると思います。
ーーインフラエンジニアの組織や役割を教えて下さい。
ITサービスセンターというLINEの中でインフラを担っている組織があります。基本的な役割としては、LINEの様々なサービスを動かすための環境であるインフラを提供することです。インフラの組織は細かな役割ごとにいくつかの室やチームに分かれています。室としてはVerda室・ネットワーク室・システム室・データベース室の4つです。

それぞれの室の役割としては、データセンターからネットワークまでをネットワーク室が担っていて、サーバーのハードウェアの部分やストーレジ、OSはシステム室が見ています。

データベース室はMySQLなどのRDBMSやRedis, MongoDBといったデータストア系のインフラに責任を持つ部門になります。
Verda室はそれら各インフラコンポーネントに対して、仮想化の技術や抽象化のアプローチで、自動化やプライベートクラウド化をすることで、利用者であるLINEサービス開発者とインフラ運用者双方の負担を軽減する取り組みを行っています。
ーー自社でインフラをつくっていることには、どんな意義があるのでしょうか?
一般的にインフラを自社で持つということは調達・構築・維持などの所有コストが課題になります。パブリッククラウドの隆盛には当然この背景があります。パブリッククラウドを使えば面倒な所有に関連するコストを直接支払うことなく、一番大きな目的であるインフラの利用に集中できるというわけです。

逆に言えば、所有コストの課題さえ解決できるのであれば、パブリッククラウドでは得られない恩恵を受けることができるということです。それはつまり、インフラに対する制御をより自分たちのそばに置く事ができるということだと思います。別の言い方をすると、LINEのサービスに合わせたより柔軟なインフラの選択が可能であるということです。

このインフラに対する制御・柔軟性を高めるというアプローチはパブリッククラウドかプライベートクラウドかという軸だけではなく、技術選定をする上でも特定のベンダーソリューションに縛られないようにするなど、LINEのインフラへの基本的な向き合い方になっています。
ーー具体的な業務内容を教えてください
インフラは全てのサービスで使われるものなので、基本的に全ての事業や部署と関わることになります。

LINEのインフラは部署ごとに特化しているものではなく、全サービスで使える汎用性の高いインフラを目指しています。業務の仕方としては、まずインフラをサービスや事業側に提供して、その運用を行います。運用してると色々な課題が出てきます。そうすると改善課題や開発部門からのフィードバックが来るので、それらの分析をします。どのように解決できるのかを考えるのですが、そのときに該当のサービスに当てはまる部分的な解決策ではなくて、どのようにすれば汎用的なインフラになるのかを重視しています。

LINEのサービスはとにかく規模が大きいので、規模への対応も大きな課題です。例えば、LINEのMAUは国内だけでも8,100万人以上。膨大なユーザーがメッセージを送受信するために常に数千万単位のTCPコネクションがあり、どうすれば安定して取り扱えるかが課題になっていた時期がありました。

TCPのコネクションの振り分けはロードバランサーと呼ばれるインフラのコンポーネントが担っています。従来の方式では、トラフィックの規模に応じてスケールアップするしかなく、そのスケールアップにも限界が見え始めていました。そこでスケールアウトが可能なアーキテクチャーの模索をはじめましたが、既成のアプライアンス製品では私たちの要件をすべて満たすものはなかったため、Linuxベースでロードバランサーを自作するという道を選びました。今はすでにプロダクション環境に投入されています。その顛末については過去に発表したスライドにまとめられていますので、是非読んでみてください。
ーー今そして今後の課題はなんでしょう?
これまでは、プライベートクラウドのアプローチによるインフラ利用者であるサービス開発者の利便性の向上と、インフラ管理者の負担軽減に取り組んできました。また、インフラそのものの効率性を高める取り組みとしては、主に仮想サーバーの適用範囲を広げることで対応してきました。

ただ、このアプローチではすでに限界が見え始めています。プライベートクラウドで確かに利便性は向上しましたが、開発者がやりたいことを実現するためにはプライベートクラウドの各コンポーネントを理解し、使いこなす必要があります。既にコンポーネントも多岐にわたっているので、それをすべて理解するコストが高くなってきているという課題があります。また、たとえ仮想サーバーを使ったとしても、アプリケーションがサーバーを専有するモデルではリソース活用の効率化には限界があります。

それらを解決するために、よりインフラの抽象度を高めることで、さらなる利用効率の向上と、インフラコンポーネントに対する高い次元でのオーケストレーションを提供し、開発者サイドのインフラの利用コストの大幅な軽減を実現しようとしています。
ーーインフラエンジニアに必要な素養やスキル、志向性などはありますか?
チームメンバーが全員が同じ考えを持っているより、多様な人達が集まっていろんなアイデアを出し合い、議論を深めたほうがより良いソリューションが出てくると考えています。
ですので、少なくともITインフラへの関心がある方でしたらインフラエンジニアの素養は十分にあると思います。

スキルについては、LINEのインフラの取り組みはソフトウェアエンジニアリングのアプローチを取り入れていますので、コンピュータの動作原理といったコンピュータサイエンスや、アルゴリズム・データ構造などのプログラミングの基礎の理解は必須ですね。
ーーLINEでインフラエンジニアとして働くやりがいは何でしょうか。
ITのサービスは各社千差万別ですが、そのインフラの構成要素には違いはほとんどありません。アプリケーションを動かすためにはCPUメモリ、ディスクなどのコンピューティングリソースが必要で、多数のアプリケーションが組み合わさりサービスが作られるので、アプリケーション間の通信のためのネットワークが必要ということは、LINEであっても、より巨大なインフラを持つGoogleやFacebookのような企業であっても一緒です。

そこには似通った技術的課題がありますが、課題解決のためのソリューションは様々です。要素技術の進歩は非常に早いので、他社のソリューションとはまた違ったアプローチで技術課題を解決するというのはインフラの面白さのうちの一つだと思います。

また、LINEのインフラは全サービスで統一されたプラットフォームなので、何か1つの課題解決の影響が非常に大きいことが挙げられます。あともう1つは、やっぱり規模の大きさです。課題の面白さや挑戦しがいは規模に比例すると思っているので、その規模が大きいことは非常にやりがいを感じますね。

それと最初にも触れましたが、できるだけオープンな技術選択を行っているというのも特色として挙げられると思います。具体的には、OpenStackやKubernetesといったOSSを採用してプライベートクラウドのプラットフォームを構築しています。自分たち自身で必要に応じてカスタマイズし、運用をしていますのでOSSに思う存分携わりたいという人にもうってつけの職場だと思います。OSSのコミッター・コントリビューターの方も多数在籍していますので大変刺激的な環境になっています。
ーー活躍している若手、伸びる人の特徴はありますか?
学生時代の傾向をみると、インフラを研究テーマで取り組んできた人、もしくはメインはインフラじゃなくてもソフトウェアに興味があって、自分で何かしらアプリケーションを作っていましたという人は活躍していますね。

入社してからで言うと、プロジェクトに取り組むとき、目的や解決が必要な問題の背景まできちんと捉えられて、物事の本質を理解しようとする人は学生時代の取り組みに関係なく活躍をしています。インフラ的な課題で誰か困っている人がいたら、何に困っているのか正確に把握できること。課題を分析して、細分化ができ、それに対してどうアプローチして、デザイン・実装をすればいいのか、この把握・分析・解決の3つを考えられる人。面接でも、過去に取り組んだ課題について必ず質問するようにしていて、最終的な解決は不完全であったとしても、この3つのフェーズをきちんと踏めているかどうかは見るようにしています。
ーー最後に学生の皆さんにメッセージを。
大きな方向性としてオープンな技術、ソリューションで課題解決をしていくということに取り組んでいますので、やはりそこに共感が持てる方はぜひチャレンジして欲しいと思っています。そして、技術・ソリューションに対して体系的に理解をして、段階的な課題解決アプローチをしていくという姿勢があると良いですね。実際にやろうとすると時間も手間もかかって大変ですが、LINEが目指す課題の根本的な解決と達成したときの面白さには欠かす事ができないポイントだと思っています。