動画配信のU-NEXTのCTOが語る自由奔放なソフトウェア開発とは
動画配信サービスを開発運営するU-NEXTのCTOと経営戦略室のVPがThink ITのインタビューに応えて、現在も進行中のモダンなソフトウェア開発スタイルについて語った。インタビューにはCTO、R&D本部長のRutong Li氏と経営戦略室、経営企画G担当部長の柿元崇利氏が参加した。
2015年頃に動画配信システムの刷新を終えたU-NEXTだが、それ以降もアジャイルなソフトウェア開発の浸透に向けて、社内改革が進んでいるという。
まずルートンさんがU-NEXTに入った経緯を教えてください。
Li:入社前まで、私にとってU-NEXTはクライアントだったんです。以前は携帯電話向けの動画配信のソフトウェアを作る会社(パケットビデオ)でエンジニアとして働いていました。そこにドコモの資本が入ってちょっと方向性が変わってきた辺りで、2015年の10月頃に移ってきたという感じです。今はCTOとして、U-NEXTの開発全体を統括する仕事をしています。
柿元:でも実際には、今でもコードを書いていて現役のエンジニアなんです。
以前、柿元さんにU-NEXTのシステム刷新の話を聞きましたが、柿元さんが入社されたのは2014年ごろ、そしてシステムの刷新が終わったのが2015年後半ですから、ちょうど終わった頃にルートンさんが入社したということですね。
Li:そうなります。
ルートンさんが入社されて手がけた最初の仕事は何だったんですか?
Li:最初は、社内のシステムを更新するところから始めました。AtlassianのJIRAとConfluenceを使って社内の情報フロー、情報共有を整理することが目的でした。でも目的はアジャイル開発をやりたかったので、まずはアジャイルが出来る土台を作ろうと。
柿元:システムを刷新する前は、マイルストーンを設けて、「いついつまでにコレを完成させる」というやり方でした。それだとアジャイルなソフトウェア開発にはどうしても向かないという状況だったのです。とにかく何が何でも、この日までにコレを完成させるというやり方なので。なので、ルートンさんが入ってアジャイル開発が行えるようなベースを作るところから始めた、ということになりますね。
ソフトウェア開発と言う意味ではその時は何を使っていたんですか?
Li:最初からこの言語やフレームワークを使うというディレクションはしませんでしたね。それは各チームに任せています。エンジニアは全体で60名くらいで、今はそれを9つのチームに分けて開発を行っています。チームには最小限のルールがあります。それは、新しい言語やソフトウェアを採用する時は2人のエンジニアから賛同を貰わないといけないというものです。なので、新しいことを新しいソフトでやる時は、社内で営業活動が必要です。
新しいソフトを使う時は調査や勉強が必要だと思いますが、その場合には会社としてサポートはするのですか・
Li:基本は自身で勉強してもらうことになりますね。でも書籍の購入や、社外のセミナーへの参加は奨励しているので、どんどんやってもらっています。本を買う場合も事後報告でOKにしています。アジャイル開発に関しても、最初はアジャイルマニフェストに従って始めましたが、今ではそれに従っているチームも自由にやっているチームもありますね。
アジャイル開発だとPivotal Labsのように本格的にやっている会社もありますが、そういう外部の力を借りて進めようとは考えませんでしたか?
Li:私が思うに、外部の力やリソースを借りて何かを変えようとする時点で、もうその問題は解決しているはずではないかなと。つまり問題を外部の人に説明できる時点で、その問題は解決しているし、自分たち以上にその問題を充分に理解している人はいません。そういう意味で、外部の力は必要ないと思っています。ただ、アジャイル開発自体に関しては約1年くらい前から推進していましたが、2017年の12月くらいからやっと本格的にやれるようになったという感じです。
社内で開発しているソフトウェアは全てのエンジニアが見られるようになっていますし、他のエンジニアがコメントすることもできるようにしてあります。いわば「社内オープンソース」とでも言う状況になっています。
アジャイル開発をやったことがないエンジニアが入社した場合に、トレーニングする仕組みはないのですか?
Li:基本的に面接を行う時に、アジャイル開発が出来そうな人かどうかは判断が出来ているので、それは問題にはならないですね。面接も雑談を交えながら色々なエンジニアが話をしますので、1人の判断ではなく、多角的な判断が行えます。
柿元:アジャイル開発を行うと言う部分では、組織を変えるということをちゃんとやりましたね。それまではプロダクトの責任者が仕様を決めてそれを開発に渡すと言う感じで、社内ウォーターフォールとでも呼ぶ感じでした。それを、開発チームの中にプロダクトオーナーを置いて、その人と常にスクラムマスターがコミュニケーションしながら開発を進めるという形にしました。これだとサービスの大きな仕様は決めても、内部の細かい仕様は作らずに開発しながら決めていくというアジャイル的なソフトウェア開発ができるようになりました。「どのソフトウェアを使うのか?」以前に、その部分が非常に重要だと思っています。
元々U-NEXTは、営業とプロダクトを決める部門と開発する部門が分かれていたので、プロダクトの部門からプロダクトオーナーという形で開発に入ってもらったということですね。
アジャイル開発でプロダクトオーナーやビジネスオーナーが開発チームに入ると、そのオーナーが開発に関わる決定の責任を引き受けるということで、日本ではビジネス側がちょっとビビるというか、そこまでプロダクトについて分からないから責任が持てないと言う状況が起こり得ると思うのですが?
柿元:U-NEXTの場合は、プロダクトが細かく分かれているわけではなくて、それぞれが密接に連携しているので、プロダクトオーナーもそれほどわからない部分が少ないというのはあるかもしれないですね。
アジャイル開発でチームによっては使う言語もフレームワークもバラバラと良く言えばかなり自由奔放、悪く言えば決まりがない無法地帯のように見えますが。
Li:実際には開発環境は全てDockerでコンテナ化されていますので、開発環境としてはコンテナで統一されていると言えます。そしてKubernetesのクラスターも稼働していて、その上でシステムが稼働していますが、本番環境としてはいくつかのシステムがコンテナの上でも稼働し始めたというところです。
本番環境がコンテナとして実行されるようになったのはいつ頃からですか?
Li:それも2017年の12月くらいですね。なので、ほんの少し前です。
それはプラットフォームとしてのバグもなく、性能面でも問題ないから移行したということですか?
Li:プラットフォームとしては開発環境も本番も変わらないものを使うようにしていますし、それはパブリッククラウドでも同じです。なるべく素に近いものを使って、どこでも動くようにするということです。性能面に関してはまだ満足はしていませんね。あまりユーザーが多くなくてトラフィックもスパイクしないような部分はオンプレミスのコンテナでも大丈夫ですが、突然アクセスが増大してクレイムになるような部分にはパブリッククラウドのオートスケールできるプラットフォームを使うという判断はしています。基本はオンプレミスで、ハイブリッドクラウドというような複数のパブリッククラウドを使うということは、今のところはないですね。性能面ではソフトウェアを改良して10%の性能向上をするのであれば、そこに時間を使わずにハードウェアで解決するというのはアリだと思います。10倍になるならまだしも、そんな少しの改善に時間をかけないで欲しいと。
柿元:ルートンさんは、コスト意識の非常に高くて厳しいです。例えば昔から使っている商用のミドルウェアについても、他のオープンソースで置き換えることができるならやるべきだし、たった数クリックを省くために無駄なライセンス費用を払っているなら止めるべきだということはよくあります。
Li:U-NEXTのエンジニアは、やはりブラックボックスがキライなんですね。なのでプロプライエタリなソフトウェアとオープンソースソフトウェアがあれば、オープンソースを選びます。
そうするとオープンソースソフトウェアを使う際にコミュニティとの付き合い方、貢献の仕方があると思いますが、それは開発部門として奨励していますか?
Li:特にこうしろというルールはないですね。CTOとしては、上から指図するというのはあまりやりたくないのです。なので、コミュニティにパッチを提供するかどうかというのも各エンジニアに任せてあります。
60名くらいのエンジニアのうち、何人くらいがインフラストラクチャーを担当してされているのですか?
Li:インフラチームは、私を含めて3名です。Kubernetesのクラスターとかオンプレミスのサーバーとかの管理、自動化には今はAnsibleを使っています。なので、インフラのエンジニアも自動化のためのコードを書いていますね。サーバーの数がだいぶ増えていますので、そろそろAnsibleの有償版を使おうかなとは思っています。インフラとしてはログの収集はFluentdからKafka、KibanaとGrafanaで可視化みたいな感じですね。
この後、U-NEXTはどんな方向に行きたいと考えていますか?
Li:映像配信のサービスを作ることはできたので、他のサービス、書籍などのところに横展開していきたいですね。映像配信をもっと深くすることと、横展開を同時にやる感じです。ビジネスオーナーがCTOをすっ飛ばして、エンジニアと「こういうことをやりたいんだけど、できる?」といった会話をしています。その他マイクロサービス化は、どんどん進めていきたいと考えています。
柿元:ビジネスを新しく作るというのは毎日、U-NEXTがやっていることなんですけど、CTOをすっ飛ばして話をするというのはうちの社長がよくやっていることです。
動画配信サービスを支えるインフラもアプリケーションも、完成されたサービスとして完結しているものではなく、有機的に繋がったサービスとして日夜進化を続けている。最終的にマイクロサービス化を目指しているというU-NEXTのCTOのインタビューは、自由を重んじるCTOの性格によるところも多いのだろうが、ぶっちゃけな話も多くあり、非常に楽しい時間であった。「NetFlixが採用しているChaosMonkeyみたいなものは?」「現場がカオスなのでそんなものは今のところ必要ありません」と爆笑していたのが印象的であった。
<編注:2018/3/5 20:40更新>発言内容に関して一部誤解を招く表現があったため訂正しました。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- カスペルスキー、法人向けLinux用セキュリティ製品「Kaspersky Endpoint Security 10 for Linux」を提供開始
- カスペルスキー、Linuxメールサーバ用セキュリティ製品「Kaspersky Security 8.0 for Linux Mail Server」の最新版を提供開始
- カスペルスキー、法人向け「Kaspersky Security 8.0 for Linux Mail Server」を発表
- カスペルスキー、法人向けセキュリティ製品の保護機能を強化
- カスペルスキー、法人向けハイブリッドクラウド向けセキュリティ製品「Kaspersky Hybrid Cloud Security」を販売開始
- カスペルスキー、法人向けハイブリッドクラウド向けセキュリティ製品「Kaspersky Hybrid Cloud Security」を販売開始
- Kaspersky、Linuxで利用可能な脅威検出ツール「KVRT for Linux」を提供開始
- Kaspersky Lab、無償のアンチウイルスソフト「Kaspersky Free」を発表
- Kaspersky Lab、Windows環境下でマルウェア「Mirai」をLinuxベースのIoT機器に拡散するマルウェアの解析結果を発表
- Kaspersky Lab、セキュアな独自のOS「Kaspersky OS」の開発を発表