LINE Engineering
Blog

LINE Engineer Insights vol.4「OpenStackベースのPrivate cloud "Verda" の野望」

LINE Engineering Blog 2017.06.08

LINE で働くエンジニアに色々と話を聞いていく「LINE Engineer Insights」の第4弾です。当コーナーはインタビュアーに LINE で働くエンジニア @tokuhirom を迎え、エンジニア同士でざっくばらんにお話を伺っていくというものです。今回も、LINE のエンジニアは一体どんな人達なのか、その内面に迫っていきたいと思います。

第4弾は、ITサービスセンター Infra platform TF 所属の Ibradzic Samir(イブラジッチサミル)にLINE のサーバ管理や、新たに作り運用を開始したばかりの Internal Infrastructure Cloud "Verda" などについて聞いてきました。

入社前からイベントなどで現在のチームメンバーとは話していました

―― tokuhirom
今日は宜しくお願いします。最初に、入社されたタイミング、所属と主にやっている仕事などを教えていただけますか?

―― Samir
宜しくお願いします。入社は2017年の1月なので最近です。ただ、入社する数ヶ月前に技術系のイベントでよく会ってたのでチームメンバーとは結構話していました。バルセロナのサミットでも会いましたし。
LINEではクラウドをメインに開発をしています。所属はITサービスセンターという部署で、LINEの全てのサービスで使っているサーバの管理をしているところです。その中で Infra platform TFとしてシステムエンジニアをしていて、主にクラウド関連を担当しています。

―― tokuhirom
ご出身はどちらですか?日本語がとても上手ですが日本は長いのでしょうか。

―― Samir
母親はクロアチア人で、私はボスニア・ヘルツェゴビナで育ちました。日本語は勉強中ですが日本に来て11年になります。

Internal Infrastructure Cloud "Verda"

―― tokuhirom
Samir さんが担当しているサービスについて教えてください。

―― Samir
Cloudサービスを担当しています。実はLINEで利用しているCloudサービスには2つあって nCloud と呼ばれているものと Verda というプロダクト名で呼ばれているものがあり、私は Verda のほうを担当しています。Cloud というと一般的には AWS や Azure に代表される Public Cloud のイメージが強いと思います。Verda はLINE内部での利用を想定して作られた Internal Infrastructure Cloud です。
編集部注:LINE では大規模な開発をしており、既存のツールでは社内の要求を完全に満たすものがないことが多いため内製することがあります。特に NAVER で開発されたものは N を prefix としており、社内向けのクラウドが「nCloud」という名称になっています。

Infra Platform TF というチームでは Verda の開発をしていて、そのうち私が担当している Component は3つあります。それ以外に Cloud の管理やメンテナンスをしたり、トラブルシュートやアーキテクチャのデザインをしています。

―― tokuhirom
Infra platform TF は何人くらいのチームですか?具体的にどういったことがメインの仕事ですか?

―― Samir
Infra platform TF は20人くらいで、 Verda に関しては他のチームから合流してやっている人もいます。メインは Cloud で、Internal Private Cloud をデザインして開発してメンテしてサービスを提供しています。IaaS (Infrastructure as a Service) を Internal 向けに、普通の開発者は一般的なサーバを使わずに開発が出来るように Cloud のバーチャルマシンなどを作ってサービス提供しています。

―― tokuhirom
IaaS 的な部分で言うと、具体的にはどういうレイヤーから開発をされているんですか?

―― Samir
この Internal cloud の Verda というプロジェクトはオープンソースの OpenStack というベースがあり、サーバ、プラットフォーム、データベース、ハイパーバイザ、KVM(Kernel Virtual Machine)など色々なテクノロジーを使っていて90%はオープンソースソフトで出来ています。そのままで使うのではなくカスタマイズしている部分もあります。

Verda のカスタマイズポイント

―― tokuhirom
どういうところをカスタマイズしているんですか?

―― Samir
Component ごとに対応は異なりますが、基本的には私達の requirement に合わせて Python のコードを修正する部分が多いです。LINE はセキュリティに関する requirement 水準が高いので、特に認証周りの修正はほとんど全ての component に対して実施しました。

―― tokuhirom
カスタマイズしたところをオープンソースにフィードバックしたりすることはあるんですか?

―― Samir
カスタマイズしているところはこれからやっていこうと思ってますね。例えば NOVA のBug fix とかそういうハイパーバイザモジュールなどシンプルな fix からコミュニテイにコミットしたほうがいいなと思っています。今まで全然やっていなかったのでこれからやっていきたいなと。

稼働開始から約1ヶ月半でProduction VMが300以上

―― tokuhirom
Verda は今どのくらいの規模感で運用されているんですか?

―― Samir
Verda の Cloud というのは2つ Environmemt があって、1つは Verda for Dev という Cloud で、これは開発者がよく使っているテスト環境とかリリースする前に利用するものです。もう1つは Production という Cloud で、Production 用のサービス、システムクリティカルなサービスのプラットフォームになります。規模感でいうと Verda for Dev で使われている VM は現在で 1700 くらい。

―― tokuhirom
あ、結構あるんですね。

―― Samir
Production はVMだけで300〜400くらいあります。物理サーバのリソースも作ることが出来て、全体の1/3は物理サーバになっています。最近は、for Dev も Production も両方増えてきていて、そのために Cloud のリソースサイズもサーバもこれから増やしていかないといけない状況です。LINE の Cloud はスケールがすごく簡単で、auto provisioning system を使っているのでデータセンターにサーバをそのままプラグインして再起動すると自動で入ります。

―― tokuhirom
Production はけっこう最近リリースされたものですよね。

―― Samir
そうですね、4月くらいです。

―― tokuhirom
それでもう300以上使われてるってすごいですね。

―― Samir
Production のほうは日々何かしらの新規サービスのリリースが行われているので、その需要に Verda が match したんだと思います。

―― tokuhirom
今まで社内のITサービスセンターのサーバって仮想マシンの払い出しってワークフローで申請してやる形だったじゃないですか。そこから基本的には Verda ベースにして置き換えていく予定ですか?
※編集部注 LINEでは定型的な業務はワークフローという申請方式になっています

ペーパーワークを極力減らし使いやすさを追求

―― Samir
私が入社した時はワークフローを毎日の仕事としてやるのが、なんか、ちょっと… めんどくさくて(笑) 意味はわかるんです、セキュリティ的なルールも当然あったほうがいいんですけど、うちの Production Cloud にもワークフロー的な部分もありますが全てでは無い。例えば、Private Network にアクセスしたい VM にワークフローは要らないですね。Public にトラフィックを出す時はワークフローが必要ですし、新しいプロジェクトを作る時だけはワークフローが必要になります。
Verda for Dev は関係ないので、開発をはじめる時などはかなり使いやすくなったはずです。

―― tokuhirom
そうですね、だいぶ使いやすくなりました。

―― Samir
ワークケースによっては色んな Cloud を使ったほうがいいですよね。開発者がペーパーワークも不要で、ワークフローもいらなくて、Production 環境に同じようにそのまま作れるということが大事です。例えばプロダクションユースケースではスケールに関する問題があったときに、スケールイン・スケールアウトはワークフローが無くても出来るようになっています。

―― tokuhirom
実際のところスケールアウトしようと思ったら、どのくらいの台数だったらいきなり申請してOKですか?

―― Samir
Production にはキャパシティとして2500くらいVMがありますけど、すごくインフラレベルでもスケールアウトが簡単に出来て、50%になった場合はすぐ新しいスーパーバイザーに切り替わります。今は東京をメインにした Cloud なんですが、これから関西の新しいデータセンターにも Cloud の部分リソースが入って、韓国や他の国にもと考えています。


LINE で Internal Cloud を作ろうとした理由と今後の野望

―― tokuhirom
他社の場合は AWS とかそういう Public Cloud を使っていることが多いと思いますが、 LINE で Internal Cloud を作ろうと思ったのはどういう経緯なんですか?

―― Samir
ユーザーケースがちょっと違うんですけど、開発者もサービスもスケールがダイナミックになってしまうので、自社で Private Cloud があった方がいいなと。ポリシーだけが Private になっていて、希望があればすぐ Public になるように作ってあるんですね。社内のユーザーケースでいうと、トラブルシュートして経験やノウハウを蓄積していったものを Public Cloud で公開することが出来たりします。

nCloud はレガシーというよりは VMwareベースを使っていて、それはコストが高くてフレキシブルじゃないんですね。例えば、LINE の requirement にコンポーネントとコードが変更したかったら、あんまり簡単に出来ない。例えばストレージも入れたかったらすごく値段が高くて、リソースも高い。問題点のメインはコストで、あとはスケールが遅くて、早くスケールさせたかったらすごくお金がかかってしまう。Advance Feature が欲しかったら高すぎる。自分たちで作った Cloud は全て requirement で変更できます。

―― tokuhirom
オープンソースだから?

―― Samir
オープンソースもコードベースはそんなに難しくなくて、チームに技術者がいれば何でも出来る。それは nCloud では出来ない。ソースもオープンじゃないので。

―― tokuhirom
今後の Verda のプランとしては、広く社内で使われて location も増やしてというイメージですかね。他にも野望とかありますか?

―― Samir
けっこうありますね。マイルストーンは毎週変更したり、プランニングをしたり、今は入っているサービスはバーチャルマシン、物理マシン、DNS、これからリリースするのはデータベースサービス。LINE のサービスにとってすごく大事な CDN サービスなど オープンソースをベースにした Software Storage になります。Amazon S3と同じように API を使って色々と出来ます。コンテナーサービスも、オブジェクトストレージもブロックストレージも結構やりたいことは多いです。

―― tokuhirom
結構ありますね(笑) たしかにオブジェクトストレージ新しいの欲しいって話は聞きますね。じゃあ CDN とかやるのであればマルチロケーションでやっていくんですね。

―― Samir
そうですね。あとは今月か来月かリリースする予定ですけど、100% LINE向けに作ったロードバランサ。あとはスケールやパフォーマンスがよく出るサービスになりますよね。Legacy System を使ってこれから Production にリリースするのは100% 自分たちで作った Cloud になっていきますね。そこはプライドを持ってやってます。

―― tokuhirom
Fabric LB ってやつですか?

―― Samir
そうですね、bleeding edge Linux Kernel technology を使っています。

Verda のオープン化

―― tokuhirom
これは今後オープン化とかする予定はあるんですか?

―― Samir
もちろんリリースする時にコードが完璧ではないとは思うけど、メインの開発者は出したいと言っているし、やりたいですね。

―― tokuhirom
このロードバランサって L4 と L7 と両方できるみたいなやつですか?

―― Samir
そうです、バランシングアルゴリズムを作ったり、latest Linux Kernel version を使っているし、パフォーマンスもすごくいいものになってきてます。

―― tokuhirom
既存のものじゃなく新しく作ったのはなぜですか?

―― Samir
LINE アプリとサービスは特別な requirement がありますので、スケールが変わってるんですね。毎日毎日どこかのロケーションでスケールする必要があったり、今つかっている物理ロードバランサが壊れやすいのでリソースも手間もコストも高い。自分たちが作っている requirement なシステムにスケールがよく出来るシステムは考えてみて、そんなことを考えながらサブプロジェクトとしてやっていますね。

―― tokuhirom
データベースのホスティングって話がありましたけど、具体的にどんなかんじでやってるんですか?

―― Samir
少しカスタマイズしている OpenStack な DB component に基づいて、一般的な MySQL と Redis の データベースを作成しています。これがなぜリリースされていないかというと、うちの DBチームの厳しいルールがあって、OS と DBサービスのどのバージョンを使っているかなど、そのためにけっこうバックエンドのテストが多かった。それが完璧に出来たらリリースします。Verda for Dev にはもうリリースしています。

―― tokuhirom
おお!本当だ!いつの間にかタブがあります。


―― Samir
たぶん MySQL だけだと思います。これから Redis もやっていきます。あとは公開予定がいつかわからないけど、ロードマップには別のデータベースも予定していて HBase もあります。

―― tokuhirom
Verda の Production にのる時は MySQL とか作ったものは DBA (Database Administrator) の人が管理してくれるって形になりますか?

―― Samir
そういう時もありますね。サービスの DB になる時はもちろん DBA の担当者が必要。そのためには、DB を作るときはワークフロー申請が必要になるけど、スケールアウトの時は要らないです。 Verda for Dev ではワークフローは要らないです。

―― tokuhirom
おお、すごい。Verda for Dev の方だと DBA を誰にするかが選べるんですね。

―― Samir
そうですね、これはリクエストがすごく多かったので機能として入れました。1つのシンプルな DB を作った場合は関係ないですけど、クラスタだと関係あるので。
もう1つ、Verda Production と Verda for Dev の違いがあって、UI が違います。全然違います。この新しい UI は Verda UI というシンプルな名前なんですが、100% 自分達のチームで作っているものです。

Verda UI は カンタン、キレイ、ハヤイ

―― tokuhirom
LINE が OpenStack を使ってるというのは今まであまり言っていないですよね。これからどんどん広めていくというフェーズだと思いますが。 Verda for Dev の UI は自分たちで作っていなかったんですか?

―― Samir
Verda for Dev は OpenStack のコンポーネントですね。結構コードの変更が多かったので、メンテナンスが難しくなって新しいコンポーネントを作ったんですね。これから Verda for Dev にも入ってきます。管理するためにはまだ Horizon という OpenStack の WEB GUI コンポーネントを使っているので、これを Admin feature は自分たちで作った UI が入ったあとはやめる予定です。Verda UI の方が、カンタン、キレイ、ハヤイ。

―― tokuhirom
たしかに今のやつちょっと重いですよね。機能としてオートスケールとかの予定はありますか?

―― Samir
今は普通の OpenStack API を使った場合は出来ます。別にクラウドコンポーネントもあります。 OpenStack int という orchestration というコンポーネントがあるので Verda のロードマップにも入っています。例えば、LAMP の構成とかを YAML でルールを書いて「10台欲しい」とかやると、自分で全部作ってくれます。MySQL も DB も、全部コネクトしたりそのまま使ったり。APIで全部もらえるような。

―― tokuhirom
Verda だと OpenStack のAPIは全部たたける?

―― Samir
そうですけど、いくつかの例外があります。物理マシンは以前の Legacy API のサーバプロビジョニングAPIを使ってます。

―― tokuhirom
OpenStack とかで IaaS みたいなものを提供していく中で、PaaS(Platform as a Service) とかやったりしないんですか?Cloud Foundry 的な。

―― Samir
Cloud Foundry と同じような API で Syntax は違いますけど同じようなものは出来ますね。最近 OpenStack API を使っている Public Cloud の会社が多くて DigitalOcean とかアメリカでは結構あります。OpenStack は compatible API もありますね。S3 と同じような API を使ってます。

Linux エヴァンジェリストとして

―― tokuhirom
これからロードマップ以外の、例えば Verda 以外の事でやっていきたい事とかありますか?チームでも Samir さん自身でもどちらでも。

―― Samir
最近のIT業界はコンテナサービスとかマイクロサービスとか増えてきてますね。自分もちょっと経験を持っているし、LINE のインフラにそういったテクノロジーをプッシュしたい。オープンソースのコミュニティもプッシュしたいですね。自分にセキュリティやネットワークエンジニアのバックグラウンドもあるので、出来たらもうちょっと自由にやれたらいいかなと思っているところはあります。
あとは Linux エヴァンジェリストなので、LINE の開発者たちに Linux を推していきたいですね。開発者のPCとか、サービスを提供しているサーバとか、これは夢ですね(笑)

―― tokuhirom
デスクトップ環境で Linux を許容してほしいというのはたまに言う人はいますね。

―― Samir
わたしは会社支給の Mac に Ubuntu を入れてますね。セキュリティチームにもヘルプデスクチームとも交渉して導入できました。

―― tokuhirom
あ、OKなんですね。ダメだと思ってました(笑)

―― Samir
インフラ的な面でも、マイクロサービス、データセンター の オートメーションは Legacy System を使っているから出来ていないので、もっと早くやったほうがいいのかなと思っています。ネットワークの部分でレガシー的なスイッチとか network equipment を使っていて、最近はクラウドシステムは White box Switch が多くなってきているでそういうテクノロジーを社内的にプッシュしたいと思ってます。

―― tokuhirom
今って Verda で OS は何が使えるんですか? Linux だけでしたっけ

―― Samir
Verda for Dev は Linux Cent OS のイメージも入ってるし、 Windows Server もありますが。これはハードポリシーではなくて、ユーザーケースがあれば何でも使えるようになるはずです。

Cloud開発 最大の秘訣

―― tokuhirom
最後に質問ですが、 Cloud をうまく開発する秘訣って何かあるんですか?

―― Samir
これは秘密なんですけど、毎日この ゆず茶を飲むことです。LINEのカフェで120円で買ってます。

―― tokuhirom
なるほど (笑)

LINE Engineer Insights Verda Openstack

LINE Engineering Blog 2017.06.08

Add this entry to Hatena bookmark

リストへ戻る