Spring to Image
発表者であるVMwareのBen Hale氏は、本セッションの冒頭でまず、モダンなアプリケーション開発では実行環境のコントロールが重要であるという考えを述べました。そしてDocker(OCI)イメージが、その不変性(immutability)や自己完結性(self-containedness)により、プラットフォームに依存しない実行環境を持ち運ぶ「共通言語」になると予想しました。
現在、Dockerイメージを作る一般的な方法はDockerfileです。Dockerfileには柔軟性という大きな利点がありますが、その柔軟性ゆえに、一貫性やセキュリティなどの問題が付きまといます。そのため「良い」Dockerfileを書くには、例えばJREのインストールに30行も必要となることを示しました。
そこでHale氏はアプリケーションをコンテナ・イメージに変換するもう一つの方法としてBuildpackを紹介しました。BuildpackはHerokuによって開発され、Cloud Foundryによって普及したツールです。Dockerfileと比べて大幅に抽象化されており、例えばJavaのアプリケーションをコンテナ・イメージに変換する際のJREのインストールはBuildpack側で面倒を見てくれます。これによりDockerfileを書くのと比べてコンテナ・イメージ作成の労力が大幅に削減され、開発者はよりコードに集中できるようになります。
Buildpackについては、現在Cloud Native Buildpack(以下CNB)というCNCFのSandboxプロジェクトで仕様の策定が行われています。この仕様に対する各種実装の中で、Springチームが特に支援しているのがPaketoです。PaketoはCloud Foundryで使われていた実績のあるBuildpackをベースにしていて、多くの主要なプログラミング言語をサポートしています。またその実績により、既にプロダクションで使えるレベルの品質を持っている点も重要だとHale氏は述べました。
セッションの後半のほとんどは、Cloud Native Buildpackを使ってコンテナ・イメージを実際に作るデモに費やされました。まずSpring Initializrでゼロから作ったSpring Bootアプリケーションに対して、Spring Bootが内包するCNB用のMaven/Gradleプラグインを用いてイメージの作成を行いました。次いでCNBによって開発されたCLIであるpackを用いたイメージのビルドをデモし、最後にkpackというKubernetesに特化したビルド・ツールを紹介しました。
Hale氏は最後に、今まで述べてきたような様々な利点がCNBにあることを改めて述べて、セッションを締めくくりました。
Bootiful Azure Spring Cloud
セッション「Bootiful Azure Spring Cloud」では、MicrosoftのJulien Dubois氏とVMwareのJosh Long氏によるAzure Spring Cloudの紹介が行われました。
Azure Spring CloudとはMicrosoftとPivotalが合同で開発した、Spring BootやSpring CloudのアプリケーションをMicrosoft Azure上で簡単にデプロイおよび操作できるサービスです。昨年のSpringOne Platform 2019の時点ではプライベートプレビューの状態でしたが、今年の9月2日に(即ち本SpringOneの開催に合わせて)一般提供の開始が発表されました。
また両氏は、Azure Spring Cloudを利用したアプリケーションの作成デモも行いました。Azure Spring Cloudの興味深い点は、Spring Azureエコシステムの内包する多様なインフラストラクチャの利用に対応しており、Microsoft Azureの巨大なプラットフォーム上でそれらを組み込んだアプリケーションを容易に構築できるところにあります。
Dubois氏はActive DirectoryやServiceBusといったサービスをアプリケーションに適用することが簡単であることを、デモンストレーションの中でも強調していました。また、スケールの変更を自由に行うことができ、R2DBCを使用できるAzure SQL、PostgreSQL、MySQLに対応しているためリアクティブプログラミングが可能になる等、幅広いカスタマイズが可能です。
最後に、これからAzure Spring Cloudを始める人々に向けて、クイックスタートガイドや自習形式ワークショップ、ドキュメント等の教材が紹介されました。
Make Your Kubernetes Clusters Production-Ready with VMware Tanzu
VMware Tanzuは、Kubernetesを用いたモダンなアプリケーションの開発・運用を支援するソフトウェア/サービスの総称ブランドです。VMwareの自社技術の他に、Bitnami、Heptio、Pivotal、Wavefrontなど、VMwareが近年買収した複数の企業の技術が組み込まれています。
このセッションでは、VMwareのTiffany Jernigan氏から、Tanzuを利用してKubernetesクラスターにアプリケーションをデプロイし、監視/バックアップまでを一貫して行う方法が説明されました。
まずクラスター管理の中心的なコンポーネントとしてTanzu Mission Control(以下TMC)が紹介されました。TMCでは、オンプレミス/オンクラウド両方のKubernetesクラスターを一元的に管理できます。
次に、それらのクラスター上のKubernetesコンポーネントやアプリケーションの状態を一元的に監視するTanzu Observation機能について話がありました。最初に紹介されたのはWavefrontの監視測定ダッシュボードです。これについては、SpringOneということで、Spring Boot Integrationへの言及もありました。次に紹介されたのがオープンソースのダッシュボードであるOctantです。これらはいずれもTMCに統合され、シームレスに使えることを強く訴えていました。
またセキュリティ関連の機能として、コンテナ・イメージの脆弱性スキャンや署名機能が紹介されました。これは最近CNCFを「卒業(graduate)」したオープンソースのコンテナ・レジストリーHarborによって実現されています。
その後、Kubernetesのバックアップ機能(広義のセキュリティに含まれる)を実現するものとして、Veleroについての話がありました。VeleroはKubernetesの各種リソースを、Persistent Volumeまで含めてバックアップ/リストアできるオープンソースのツールです。これにより、クラスターをまたがったKubernetesリソース移行も可能になるとのことです。
最後に、ここで説明された各種機能のデモが行われました。まずTMCを使って、vSphere、Azure、Google Cloud、AWSなどさまざまなクラウド・プロバイダー上のKubernetesクラスターが一元的に管理されている様子が示されました。
さらに、複数のKubernetesクラスターをまたがってNamespaceをまとめるWorkspaceの管理や、Wavefront、Harbor等の機能のシームレスな操作が行えることも示されました。
次に、Springのサンプル・アプリケーションであるPetclinicを実際にTanzu上にデプロイし、そのOctantやWavefrontからの監視や、Veleroを使ってのバックアップ/リストアがTMCからシームレスに行える様子が示されました。最後のリストアの場面は時間切れでカットされてしまいましたが、それくらい盛り沢山な内容のデモだったと言えると思います。