バルセロナで開催されたDockerCon Europe 2018では、.NETおよびJavaアプリケーションのコンテナベースのマイグレーションツーリングのプレビュー、デジタルトランスフォーメーションとテクノロジインテグレーションプロジェクトのサポート、Docker Desktop Enterpriseのローンチ、Docker Compose on Kubernetesのオープンソース化などの発表と合わせて,MicrosoftとのコラボレーションによるCloud Native Application Bundle(CNAB)仕様が発表された。
会長兼CEOのSteve Singh氏が基調講演を行い,IDCの2018 Container Infrastructure Software Surveyの結果として,回答者の76パーセントが,自身の会社でミッションクリティカルなアプリケーションをコンテナを使って実運用している,と答えていることを公開した。ソフトウェア開発者は世界の経済エンジンの一部であり,"デジタルトランスフォーメーション"はその新しい常識なのだ,と氏は言う。したがって今後のDockerは,エンタープライズエンジニアにエンドツーエンドの"セキュリティ,アジリティ,選択肢"を提供することを重視していく。
Dockerがデジタルトランスフォーメーションにおいて,レガシアプリケーションの移行コンポーネントに多大な投資をしているのは,基調講演で行われた多数のライブデモンストレーションからも明白だ。"Dockerエコシステムに慣れていないエンジニアに対する取り付きやすさ"の提供にも注意が向けられている(関連するトピックとしてSingh氏の基調講演では,非公式な調査結果として,DockerCon出席者の50パーセント以上が初参加であるということも明らかにされた)。
Dockerでデベロッパアドボケートを務めるElton Stoneman氏と,プロフェッショナルサービスプラクティスマネージャのLee Namba氏が,Image2Docker(i2D)を使ってレガシな.NETアプリケーションをコンテナ化する簡単な方法をデモしてみせた。さらに氏らは,ベースイメージをWindows Server 2008(2020年1月に"サポート終了"予定)から,より新しいWindows Server 2019に移行する方法も示してみせた。
同社プロダクトマネージャのGareth Rushgrove氏とデータエンジニアのAmn Rahman氏もまた,既存のJavaアプリケーションを指定することでDockerfileを自動生成する"docker assemble"コマンドのプレビューを紹介した。この生成とアプリケーション構築のプロセスには,一般的な(HerokuやCloudFoundryといったプラットホーム・アズ・ア・サービスにあるような)buildpackプロセスに近いものがある。OSやJavaプラットホーム,アプリケーション依存関係のメタデータが生成され,生成されるコンテナイメージのラベルとして使用される点も同じだ。このメタデータは,特にセキュリティやリスク管理の関係から,依存関係の管理やソフトウェアサプライチェーンにおけるアプリケーションの出所の判断に不可欠なものだ,とRushgrove氏は述べている。
Dockerのテクニカルスタッフの一人であるPatrick Chanezon氏と,MulesoftチーフアーキテクトのDarrin Solomon氏は,Dockerを使ってアプリケーションをコンテナ化した上で,Mulesoftの一連のツールを使ったAPIレイヤ生成とSOAPからRESTへの変換を通じて,それを"マイクロサービス"として統合するという,一連の移行プロセスをデモンストレーションしてみせた。このアプローチを全員が信じた訳ではなく,例えば"Building Microservices"の著者であるSam Newman氏はTwitterで,GartnerのPACE Layered Application Strategyで見られるように,提案されているAPIレイヤの多くでは,必要以上に(予期しない)複雑さをもたらすことにならないか,と危惧している。
スライドのひとつで概説されたように,さまざまなタイプのAPIが明示的に受け入れられ,既成事実となっていることは,企業においては大きな問題のひとつです。ペースレイヤ(PACE leyered)はこれをさらに悪化させます。
このアプローチは,マイクロサービスの目指すものを無視しています。現状を受け入れて固定化するようなツールを開発するよりも,ベンダとしては,これに挑戦する方法を模索するべきでしょう。
Dockerはこの欧州でのフラッグシップイベントを利用して,Docker Desktop Enterpriseのローンチも発表した。これはオープンソースのDocker Desktopアプリケーションが提供する機能の上に構築されたもので、単一のバイナリによるDocker EngineとSwarm、Kubernetesのデスクトップ上へのインストールが可能になる。Docker Desktop Engineは自動インストールにも対応しており、システム管理者が"企業や標準やプラクティスに沿ってセキュアに構成された開発環境をデプロイし、管理"することができる。Dockerによる技術サポートSLAも含まれている。
アプリケーション開発者の側から重要な機能としては、"運用環境をローカルデスクトップに簡単に複製できる"構成可能なバージョンパック、コンテナ化されたアプリケーションをテンプレートベースのワークフローで作成できるApplication Designerインターフェース、"最初にDocker CLIコマンドを実行する必要がない"ことなどがあげられる。管理者チームやアプリケーションアーキテクトは、自身のチーム用にデザインされた"アプリケーションテンプレート"を開発者に提供するツールを使用することで、"開発プロセスの立ち上げと標準化、運用全体を通じて一貫した環境"が実現する。
従来はDocker Enterpriseのみで使用可能であったDocker Compose on Kubernetesも、オープンソースとしてリリースされた。"Kubernetesがすでに宣言型の構成ファイルを使っているのに、なぜComposeが必要なのか"という問に対して、Rushgrove氏は、Kubernetes APIは"驚くほど汎用的"である反面、非常に規模が大きく、"構成が冗長になりがちであるため、開発者による管理が必要になる"ことを理由としてあげている。Docker Compose on Kubernetesを使用するためには、カスタムコントローラのインストールが必要だ。Docker Desktopの最新バージョンには、KubernetesとComposeコントローラが予めインストールされている。
DockerCon EUで発表された最後のニュースは、Cloud Native Application Bundle (CNAB)だ。現在のクラウドネイティブアプリケーションのインストールや設定 – さらには汎用ツールの無秩序さ、さまざまな構成言語を扱うことの面倒さ – に関わる問題に対処すべく、Microsoftは、DockerやHashiCorpの協力の下で、"分散アプリケーションのパッケージングと実行を目的とした、クラウドベンダに縛られないオープンソース仕様"としてCNABを提案した。Chanezon氏がDockerブログで詳しく説明している。
CNABは、さまざまなツールチェーンに広がっているマルチサービスの分散アプリケーションを、オールインワンの単一パッケージ形式に統一します。CNAB仕様により、ランタイム環境とDocker EngineやKubernetes、Helm、自動化ツールやクラウドサービスのあらゆる組み合わせで,デプロイ可能なリソースを定義することができます。
Composeファイルの再利用性と共有性の向上を目的としてすでにリリースされているDocker Appツールでも,プレビューとしてCNABがサポートされており,GitHubリポジトリ経由でデモプロジェクトが利用可能になっている。Twitter上での最初の反応は概ね肯定的だが,VMware(元Heptioの共同創設者)のJoe Beda氏のように,プロジェクトが"非常にメタ"であり,過度に汎用的ではないか,という意見も一部にある。あるいは,Rancher LabsのDarren Shepherd氏などは,"CNABはクラウドネイティブな'curl | sh -'",すなわち,簡単に実行できて,インターフェースがよく定義されており,"信頼できるソースであれば安全であり,それが望むことなら何でもできる",とコメントしている。
結論として今回のDockerConで感じられたのは,Dockerはプラットホームやツーリング,企業のマイグレーションやデジタルトランスフォーメーション活動のサポートに重点をおいている,というメッセージだ。Dockerコンテナの歴史はこれまで幾度となく称賛され,"ビルダ"としてのエンジニアに対する賞賛はいずれの基調講演でも明確だったが,現在のテクノロジシフトはコンテナの概念に不慣れな開発者や,あるいはプラットフォーム実装の詳細に関心を持たない開発者に向いて進んでいる。
Dockerは今後もオープンソースを支持し続けることを示すと同時に,アプリケーションやサービスのパッケージングなど,クラウドベースのソフトウェアデリバリにおけるおもな不一致点の標準化に関して,さらに幅広いコミュニティとの連携を図っている。このような動きが,大規模パブリックベンダによるオープンソースの商用化,コミュニティの構築,Cloud Native Computing Foundation(CNCF)などの組織を出自とする特定利益集団などとどのように関わりを持っていくのかは,今後の動向を見守ることになる。