このページの本文へ

前へ 1 2 3 次へ

開発者を魅了するマイクロソフトの開発プラットフォームを探れ 第10回

Java on Azure Day 2022でヴイエムウェア、日本IBM、レッドハットが登壇

Java on Azureを支えるテクノロジー Spring、Open Liberty、KEDAの基礎を学ぶ

2022年05月16日 09時00分更新

文● 大谷イビサ 編集●ASCII

提供: 日本マイクロソフト

  • この記事をはてなブックマークに追加
  • 本文印刷

 4月21日に開催された「Java on Azure Day 2022」では、Azure上でのJava開発を支援するためのイベントだ。マイクロソフトのJavaへの取り組みを解説した基調講演に続いてはヴイエムウェア、IBM、レッドハットのパートナー3社がセッションを披露。クラウドネイティブでのJava活用を支えるSpring、Open Liberty、Quarkus・KEDAについてわかりやすく解説した。

Springで複雑なJavaをシンプルに!

 パートナーセッションの一番手に登壇したのは、ヴイエムウェア デベロッパーアドボケートである柳原伸弥氏。仮想化基盤やインフラのイメージが強いヴイエムウェアだが、柳原氏は一貫してアプリケーション開発畑を歩んできた。ボリューム多めの資料を用意し、「2度見がオススメ」と中身をぎゅっと詰め込んできたようだ。

 柳原氏が最初にアピールしたのは、マイクロソフトのJavaへの貢献だ。そして、今回紹介するSpringを手がけたヴイエムウェアも、当然ながらJavaに強くコミットしている。「このような両者なので、必ずコラボレーションできると思っていた。これからのマイクロソフトとヴイエムウェアのコラボレーションには期待してもらいたい」とコメントし、Springの説明に入る。

 Springとは複数の技術の総称だが、ほとんどの場合は開発フレームワークの「Spring Framework」とそれを使いやすくするための「Spring Boot」を指す。そしてこのSpringのテーマが「Spring makes Java simple(Javaをシンプルに)」になる。

 ところで、果たしてJavaは複雑か? Java EEのようなサーバーサイドJavaを前提に考えると、最近でこそシンプルになってきたが、10年前はかなり複雑だった。「Javaを複雑だと考える方は、サーバーサイドJavaの黎明期をご存じの方だと思う」と柳原氏。今でこそ、Java EEやJakarta EEと呼ばれるサーバーサイドJavaだが、1990年代にJ2EEとブランディングされていた当時、ビジネスロジックはEJB(Enterprise Java Beans)による分散コンポーネントとして構築をしていた。

複雑だったJava

 EJBは開発時に定義ファイルが肥大化するという悩みがあった。また、動作がEJBコンテナに依存するため、単体テストを実施しづらいという課題など複雑だと感じる点が多くあった。一方で、コンセプトとしてインターフェイス指向で、再利用性や移植性が考慮され、現代のクラウドネイティブ開発にもつながる技術でもあった。ミクロな観点でインターフェイスを捉えてみると、インターフェイスを介してクラスを呼び出しても、使用するクラスを生成するため、どうしても依存関係が発生してしまう。

 ここにメスを入れたのがSpringで、呼び出す側のクラスをSpring側のDI(Dependency Injection:依存性注入)コンテナから設定する。これがJavaをシンプルにするSpringの役割で、まさにJavaが複雑だったEJBの時代に当時の回答として登場したものだ。

SpringをKubernetes上で動作させるためのAzure Spring Cloud

 2004年に登場したSpringだが、長らくバージョンを重ね、最新版は5.0となる。2022年の末にはSpring 6.0が登場する予定だ。Springの進化の背景には、SOA指向やクラウド、コンテナ対応などの技術トレンドがあり、クラウド対応のモダンなアプリケーションを構築するための「Spring Cloud」はまさにこの一例と言える。そして、今もっとも注目を集めているのは、やはりKubernetesである。実際に「Spring Cloud Kubernetes」も登場している。

アーキテクチャテクノロジーの歴史

 では、なぜKubernetesに注目が集まるのか? これに関して柳原氏は、「多くの日本人は『コンテナのデファクトプラットフォームだから』と答えるだろうが、欧米では『次世代の抽象化ソリューション・基本ソフト(OS)のようなもの』という意見も出てきている」と語る。物理環境の上にOS、アプリケーションが載るように、仮想環境上にKubernetesが動作し、アプリケーションとの架け橋として機能するというわけだ。

 グーグルのクラウドアドボケートであるケルシー・ハイタワー氏も、「Kubernetesはプラットフォームを作るためのプラットフォーム」と述べている。このようにKubernetesを利用しKubernetesを抽象化したアプリケーションプラットフォームが、マイクロソフトの「Azure Spring Cloud」やヴイエムウェアの「Tanzu Application Platform」になる。

 Azure Spring CloudはSpringアプリケーションを動作させるためのフルマネージドなインフラストラクチャーになる。Basic、Standard、Enterpriseの3つのエディションがあり、それぞれ機能やSLAが異なってくるが、以下はEnterpriseの説明になる。

Azure Spring Cloud

 重要なのはKubernetesの存在を意識させないインターフェイス。開発者がコードを記述し、いざデプロイを行なう場合でも、Azure Spring Cloudでは、あくまでAzureのインターフェイスを叩くことで、Kubernetes上にアプリケーションデプロイを行うことができる。

 もちろん、さまざまなAzure上のサービスと統合できるので、オブザーバビリティツールでアプリケーションの依存関係を可視化したり、Azure DevOpsとの連携で自動化することも可能だ。そして、このインテグレーションという観点でもっとも重要な点が、Azure Spring Cloudとそのコア技術になるVMware Tanzu テクノロジーとの統合だ。

Kubernetesがあればどこでも動くTanzu Application Platform

 たとえば、「VMware Tanzu Build Service」はデプロイ時にコンテナイメージを自動生成してくれるため、開発者はわざわざDockerfileを記述する必要ない。また、Tanzu Service Registryはアプリケーションの自動を探索してくれる。さらにAzure Spring Cloudのロードマップ上には、Springのコードはプロジェクトテンプレートを生成するApplication Accelerator for VMware TanzuなどのTanzu テクノロジーも今後追加される予定だ。

 VMware Tanzuのテクノロジーをフルマネージドで提供するAzure Spring Cloud。一方、「フルマネージドは便利だがマネージドで使いたい」「ローカルで使いたい」「マルチクラウドで使いたい」などの要望に応えるのがヴイエムウェアのTanzu Application Platformになる。Tanzu Application Platformはオンプレミス、クラウド、エッジのいずれの環境においても、Kubernetesさえあれば動作する。つまり、AzureであればAzure Kubernetes Service (AKS) を利用してTanzu Application Platform環境を構築できるわけだ。

 Tanzu Application Platformではプラットフォームエンジニアとアプリケーションエンジニアの責任分解点を明確にしつつDevOpsを実現できる。それぞれの役割に応じた関心事、つまり開発対象のコード、品質検査やリリースに関する定義などをTanzu Application Platformに投入するだけで自動的に処理をしてくれる。また、セキュリティ観点も強く意識されており、コンテナイメージの脆弱性・妥当性検査などを組み込んだDevSecOpsのパイプラインを自由にカスタマイズ可能なサプライチェーンとして構築することが可能となっている。このように、Kubernetesを抽象化したPaaS環境をマルチクラウドで実現できるのが、Tanzu Application Platformの特徴になっている。

VMware Tanzu Application Platform

 Tanzu Application PlatformはvSphereのようなプロプラエタリな技術ではなく、OSSベスト・オブ・ブリードな形で組み合わせて構築している。「OSSに対して強く貢献している現れとしても、OSS の組み合わせによりベンダーニュートラルなテクノロジーによるアプリケーションプラットフォーム環境を提供できるようになったことは、私たちヴイエムウェアの人間にとっても喜ばしいこと」と柳原氏は語る。

 「ヴイエムウェアは仮想化の会社というイメージが強いし、実際にそうでもある。ただ、仮想化のメッセージは『すべてのものを抽象化して、シンプルにしていく』というもの。だからこそ仮想環境を抽象化するKubernetes自体をも抽象化し、シンプルなプラットフォーム環境を提供できるTanzu Application Platformが登場したことは、ヴイエムウェアの精神、そのものなのかなと感じている」と柳原氏はまとめた。

■関連サイト

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事
  • 角川アスキー総合研究所
  • アスキーカード