2015年8月10日月曜日

コンテナーの世界(5)-SDNスタートアップ 
 - Socketplane、WeaveWorks & CoreOS/Flannel

前回はDocler周りのSDS(Software Defined Storage)関連2社を紹介した。
今回は広義のSDN(Software Defined Network)として、ネットワーク関連のスタートアップを追ってみよう。

=Docker標準となるか:SocketPlane!=
最初に紹介するSocketPlaneは記憶されている読者も多いと思うが、今年3月、Dockerに買収された会社だ。ファウンダーはCEOのMadhu Venugopal氏とVPのDave Tuker氏、そしてBrent Salisbury氏。彼ら3人とも元はRed HatのエンジニアでOpenDaylightの主要コントリビュータとしても有名だ。2014年10月の立ち上げ時は、たった6人この小さな会社の本拠地はシリコンバレーでは有名なスタートアップ向けシェアオフィPlug and Play、ここでは大小様々なサイズのレンタルオフィスだけでなく、経理やリクルート、ファンディングなど諸サービスの面倒も見てくれる。 

さてDocker周りの課題はこれまで幾つか指摘されてきた。その中でも、最も大きなものはネットワーク関連の扱いだ。問題の根本はDockerが基本的にシングルホストを前提にしたものだからだ。しかし実際の業務適用の場面は、同一ホスト内のコンテナー間は勿論、マルチホスト間でのコミュニケーションが欠かせない。例えばAホストのコンテナーにアプリを乗せ、Bホストにデータベースを乗せて連携させるイメージだ。このためには各ホスト間にトンネルを張らなければならない。SocketPlaneではこのトンネルにVirtual Extensible LAN(VXLAN)対応のOpen vSwitchを採用し、各ホストに搭載してゲートウェイとしてオーバーレイさせる。買収後、同社はこれまで通り単独製品として存続していたが、6月末リリースのDocker 1.7で状況が変わった。1.7のトライアルPluginとして、SocketPlaneベースのMulti-Host Networkingが出たからだ。これが安定すれば、いずれ正式にDockerに組み込まれることになるだろう。ここに至るネットワーク周りの課題と対応は、昨年11月の提案書Native Docker Multi-Host Networkingに纏められているので参照されたい。



=もうひとつの試み:Weave= 
SocketPlaneと殆ど同時期ロンドンを拠点とするWeaveWorks(旧Zettio)もDocker向けSDNを開発していた。設立は2014年、最初のバージョンが出たのは同年9月のことだ。創設者でCEOのAlexis Richardson氏とCTOのMatthias Radestock氏はオープンソースメッセージングシステムで有名なRabbitMQを開発したメンバーである。この経験を活かして開発したのがWeaveだ。複数のコンテナーからなるホストにはWeaveルータがインストールされ、識別子を持ったピアーとなる。それらピアーが連携してTCPコネクションを確立し、さらにトポロジー情報を交換し合う。これがWeave Network(下図)だ。このコネクションによって外部からのアクセスやコンテナーから他システムへのアクセスが可能となる。こうしてみると、WeaveはRabbitMQの経験を活かした独自のトンネル技術であることが解る。


 =Googleの息のかかったCoreOSからも:Flannel= 
CoreOSにもFlannelがある。
周知のように同社製品はGoogleのクラウドGCEKubernetesとの親和性が高い。両社は緊密な関係にある。CoreOSのファウンダーでCEOのAlex Polvi氏とBrandon Philipsは共にRackspaceの出身だが、CoreOSはもともとGoogle Chrome OSからフォークしたものだ。直近のSeries-AはGoogle Venturesがリードして$12M(14.4億円)を調達した。実のところ、このFlannelもGoogleの旧Rudderプロジェクトを引き継いだものだ。Googleのコンテナー管理Kubernetesは各コンテナーの連携にRudderを用いていた。それを一般化したものがFlannelである。FlannelではDocker本来のポートマッピングではなく、各コンテナーにIPアドレスを付与し、SSHで暗号化されたネットワーク通信を行う このゲートウェイとなるのが各ホストでデーモンとして起動させるFlannelだ。これがトンネルとなる。現バージョンでもFlannelをマルチで走らせることが出来るが今年5月CoreOS Fest 2015では、さらに進化させたマルチテナント化やOpen vSwitchの採用なども発表された。


以上見てきたようにDockerのネットワーク課題を解決する取り組みは幾つかある。Dockerが買収したSocketPlaneが逃げ切るのか、はたまた別のものが抜け出すのか、それはこれからデベロッパーが決めることになる。注目すべきはGoogleの動きだろう。CoreOSを押さえながら、FlannelやKubernatesなどをGCE上で戦略的に統合し始めた。さらにGoogle自身、Google Container Engineを開発しており、現在はβとなった。これらが上手くいけばAWSやAuzreをキャッチアップ出来るかもしれない。