JANOG48ミーティング 企画編成委員の海野です。

プログラム紹介第7弾は、Day2(2021年7月15日 木曜日)の17:30から SOPIA にて行われる「High Functional Cloud NFV System Design and Implementation at LINE Cloud」の発表者である城倉 弘樹さんにお話を伺いました。

画像左 発表者:城倉さん / 右 担当プログラム委員:加藤

宣言的でリコンサイル方式のプラットフォーム

海野:今回の応募理由は?

城倉さん:我々のPrivate Cloudの新しいネットワークサービスのために開発したSDNプラットフォームが宣言的(1)でリコンサイル方式(2)のメカニズムになっていて、これが比較的先進的なデザインだろうと思ったのでその紹介しつつ、国内のSDNエンジニアの皆様と議論したいとおもい応募しました。
JANOGで登壇するのは初めてなので緊張しています!


(1): 宣言的なSDNというのは、何かしらの手順を実行する インターフェースを持つのではなく, どのような構成になるかどうか のみを定義するインターフェースを持ったSDNです

(2): リコンサイルとは調整という意味であり、現在のシステム構成と期待されるシステム構成の差分を調節するときのシステムの動き方としてkubernetesなどで採用されている動作方式です。

Kloud NFVは何故誕生したのか

海野:SDN基盤を開発した背景を教えてください

城倉さん:LINEの多くのサービスは我々が開発しているPrivate Cloudで動作しているのですが、すべてのサービスを収容出来ているわけではありません。
特定のインフラ要件の厳しいサービスでは別々にインフラを構築してサービスを収容しています。
このようなサービスを収容するために必要なインフラ要件はNetworkの分離だけでなく、Site間VPNなどの比較的複雑なNetwork Functionサービスです。
Public CloudではVPCというサービスがそれらの機能の総称なのですが、これを機にわれわれも, それに近いサービスを昨年開発し始めました。私のチームは大昔からPrivate Cloudのネットワークサービスを提供し続けていて、
SDNやNFVの開発に精力的なのですが、新しいサービスの企画からリリースまでは骨が折れる作業です。

今回の背景のような高要求サービスだとなおさら負担も大きくなるためより一層サービスの品質に敏感にならざるを得ません。このようなSDN/NFVの開発をより短期間に、さらに高品質に行うために、我々はSDN基盤の開発自体に着目し、何かしらのブレイクスルーを模索しつづけていました。
模索の結果、我々は Kubernetes を活用し、宣言的でリコンサイルベースのSDN基盤を開発しました。
Kubernetes ベースの Cloud NFV サービスの基盤なので、これをKloudNFVと名付けました。
既存のKubernetesのエコシステムを活用し, 本来必要な機能の開発を効率化することにより、この直前に私が血反吐を吐きなら半年かけてリリースしたサービスよりはるかに高品質で高機能なサービスがわずか2ヶ月程度でリリースできました。(これは個人的な見解です)
KloudNFVを模範解答だとは全く思っていませんが、少なくともたくさんの知見が集まったため、その知見に関して紹介しようと思ったわけです。

高速に開発されたところが自慢

海野:ここはイケてる!というポイントはどこでしょうか?

城倉さん:KloudNFVは Kubernetes の Custom Resource / Custom Controllerという拡張機能をベースに開発された宣言的SDNプラットフォームです。
この宣言的SDNはこれまでのSDN機能とくらべ比較的、動的に動作し、なかなか壮大なピタゴラスイッチのようになっています。これが「どのように動くか」「どのように設計されているか」のアプローチをお伝えするのが楽しみです。
もう一つは、実際にこのような取り組みをして高速に開発されたメカニズムがすでにプロダクション環境で動作していることです。このような機能を開発するのは骨が折れる仕事ですが、これを検討段階から短い期間で実施出来ている、という点もアピールポイントだと思います。

当日議論したいポイント

海野:当日議論したいことは何ですか?

城倉さん:主に以下の2点に関して話がしたいです。

(1) 宣言的SDNの可能性について議論したいです。例えばKloudNFVではたくさんのSDN applicationがそれぞれ疎結合に連携することによって、動的な仮想ネットワークインフラを提供しているのですが、結果的に、これは手続きベースで実装することが出来ないほどに複雑でした。
その反面、宣言的SDNにももちろん欠点もあり、内容によって向き不向きがあると思います。皆さんの率直な意見や, 別のアプローチなど様々なコメントをいただけると嬉しいです。

(2) SDNの適用範囲に関して議論したいです.
例えば我々のKloudNFVはメンテナンスやアップグレード等のWeekly作業は近い将来に、ソフトウェアによって自動的に実施されるようにしたいと考えており、そのための機能をすでにアルバイトの学生に作ってもらっています。
このように、SDNでどこまでやるか、やるべきか、みたいな論点はたくさんあると思っており、みなさんがどのようにお考えかどうかそれぞれ意見を共有しあっていきたいと考えています。
特に我々は比較的アグレッシブに特定技術を本番環境まで導入してしまいますが、もちろんこれが常に正しいとは思っておらず、より堅実なアプローチを取る人たちはSDNはどの程度の距離感を持っているのかに興味があります。

予習のポイント

海野:最後に一言お願いします。

城倉さん:このセッションほんのすこしだけ前提知識の難易度が高いかもしれません。
例えば、分散システムの基本的な部分に関しては触れずに、いかにして分散システムをソフトウェアで制御するかというテーマにいきなり突入します。
Kubernetesに関しても同様です。
予めヒントを出すならば、Kubernetesの基本概念とDeployment, ReplicaSet, Podがどのように動くか、なんとなく理解していると、ものすごくスムーズにこのセッションが理解できるはずです。
セッションとしては限られた時間でしか議論出来ませんが、もし不明点や興味があればセッション後にslackなどでいくらでも追加説明いたしますので興味があればぜひ質疑応答やslackでお尋ねください。
それでは当日にVirtual会場でお会いできるのを楽しみにしています。
若輩で至らぬ点もあるかと思いますが, 皆様の御指導御鞭撻のほど, お願いいたします!

海野:城倉さんありがとうございました!当日のセッション楽しみにしています!セッションまたSlackでの議論も楽しみですね!! Slackでの議論は#janog48-sopiaのチャンネルをご利用ください。