CenturyLinkによるインタビューで、Dokkuの作者で初期からのDockerコントリビュータであるJeff Lindsay氏は、自身が取り組んでいるDocker関連プロジェクトと、Dockerベースのサービス指向アーキテクチャにまつわる問題をどう解決しようとしているかについて語った。
Jeff氏はHerokuライクの次世代オープンソースPaaS、Flynnの開発にも協力している。目標は、HerokuといったPaaSサービスの後に続く、仮想マシンの代わりにコンテナをサービスとして使うことにある。
私はずっとコンテナが理想的なアプライアンスになるのを切に望んでいます。 [...] 人々のコンテナの使い方はよりSaaSライクです。このコンテナを実行すると、それを管理し、再構成するのに使えるAPIが提供されます。構成ファイルに対して変更する必要はありません。 [...] 私はただAPIを持っているものが好きなんです。
Docker界隈では、サービス指向アーキテクチャの構築を簡単にするためのプロジェクトがいくつか始まっている。
Discoverdはシンプルだがパワフルなサービスディスカバリシステムだ。現在はEtcdをベースにしているが、ZooKeeperなど他の分散コンシステントストアを使うよう拡張することもできる。ConsulやEtcdといったプロジェクトはサービスディスカバリに関しては原始的だが、Discoverdはその上に、もっとサービスディスカバリに特化した、プラグイン可能なAPIを提供する。
AmbassadordはDockerのためのambassadorパターンの実装だ。ホストを横断してDockerコンテナを接続し、静的フォワード、DNSベースフォワード、Consul+Etcdベースフォワードをサポートする。クラスタにはambassadorが1つあればよく、iptablesをうまく利用して、ポートに基づいて向かうべきところを見つけ出す。
Registrator(以前のDocksul)はDockerのためのサービスレジストリブリッジだ。ホストを横断して動くよう、アップ/ダウンするコンテナのイベントを監視し、ConsulやEtcdを使って登録する。
ConsulateはDockerのための分散ディスカバリとメッシュルーティングであり、Consul、Ambassadord、Registratorで動いている。Consulateはホストで動き、任意のコンテナはクラスタ内の任意のコンテナとお話しすることができる。これはサービスディスカバリを使った、SDN (Software Defined Networks) の代替だ。
Duplexはシンプルなアプリケーション間通信プロトコルおよびライブラリだ。ブローカーレスメッセージングアーキテクチャでRPCを実行することを目的としており、ZeroMQにかなりインスパイアされたものだ。Duplexは、Dockerの軽量ネットワーキングライブラリlibchan上で、完全なRPCセマンティックスを使ったRPC実行を可能にする。
Configuratorは、Nginx、Haproxy、Apacheなど、コンフィグレーションファイル使った古いソフトウェアをアプライアンスに変えるものだ。これはconfdの代替であり、中央ストアなしに実行することができる。REST APIを公開しており、これを使ってプログラムから、サービスのコンフィグレーションを変更することができる。
またJeff氏は、Consulate上に構築されたサービスディスカバリおよび分散スケジューラ、Manifoldにも取り組んでいる。これはApache Mesosの代替で、概念モデルをシンプルにするが、拡張可能でハック可能だ。これはクラスタ内のコンテナ配置戦略を定義することができる。CoreOS Fleetに似ているが、Systemdに縛られない。