本記事のレポーター
- 【NTT ソフトウェアイノベーションセンタ】小泉 雄太、山口 央理、岩塚 卓弥
- 【NTTデータグループ】小峰 規行、高橋 寛恒、猪木 宏真
- 【NTTコムウェア】田村 祐揮
SpringOneとは
SpringOneは、Broadcomが開発を牽引するOSSのアプリケーション・フレームワークであるSpring Framework、Spring Bootなどに関する最新情報、ユーザ事例を中心に、DevOpsやマイクロサービスといったソフトウェア開発のトレンドを扱うカンファレンスです。今回のSpringOneは同社が主催するVMware Exploreを構成する一部として開催されました。
今年は米国ラスベガスで8月26~28日の3日間開催されました。
VMware Explore全体で600を超えるセッションが実施され、その内26のセッションがSpringOneのセッションでした。セッションにはSpring開発者が登壇し、セッション中に質問する参加者が多く見受けられました。
今年のSpringOneは現地開催に限らず、オンラインでのライブストリーミングが実施されました。ライブストリーミングされたセッションは8月29日の時点でYouTubeに公開され、誰でも視聴できるようになっています。
本レポートではイベントの冒頭で実施されたKeynoteセッションの内容に加え、筆者らが興味深いと感じた個別セッションを紹介します。
Spring Spotlight: Sustainable Evolution with Spring
イベントの冒頭Keynoteセッションが行われ、現在のSpringに対するニーズや、Spring AI、Spring Boot 3.3など最新動向についての紹介が行われました。
VMware Tanzu
まずは、VMware TanzuのゼネラルマネージャーであるPurnima Padmanabhan氏が登壇しました。SpringがJavaの開発フレームワークの内、エンタープライズのワークロードで46%という1位のシェアを誇り、それをなし得ているのはコミュニティの貢献であると謝辞を述べました。
現在Springベースのアプリケーションが、銀行業や動画配信サービス、健康管理サービスといった多種多様な業界で稼働しています。そこでのSpringユーザの次のニーズは、チャットといった生成AIとの対話機能をSpringアプリケーションに組み込むことだと同氏は述べました。そしてそのニーズはSpring AIによって既存のエコシステムを逸脱することなく達成することができると主張しました。
続けて、同氏は一つの統計データを示しました。それは、半数のアプリケーションがコード変更後のデプロイに1週間以上、遅いと半年ほどかかっているという調査結果です。そして、VMware Tanzuがその遅さを解決する手段であると述べました。VMware Tanzuはそのプラットフォーム上でSpring環境を用意し、簡単な操作で本番環境へのデプロイが可能であると主張しました。VMware Tanzuはコードのビルド、各機能の本番環境へのバインド、ネットワークレイヤの環境操作、そして運用時のスケーリングまで多様な機能を提供していることが説明されました。
同氏はVMware TanzuがSpringコミュニティを強力にサポートすると改めて強調した上で、その新機能をいくつか挙げました。
-
Visibility
- デプロイされたSpringアプリの状態を可視化
-
Security
- Springアプリのセキュリティリスクの検出と、プルリクエストを紐づけたCI/CDパイプラインによる自動更新
-
Compliance
- Springアプリが準拠しているポリシーを示すダッシュボードや、組み込み可能なポリシー準拠のライブラリの提供
-
Speed
- Springアプリの起動時間、処理時間の高速化が可能なプラットフォーム
-
AI Solutions
- 生成AI機能を搭載したSpringアプリの構築支援
Spring Modulith / Spring AI
続いて、Developer AdvocateのCora Iberkleid氏、Spring AIのチームリードであるMark Pollack氏、Spring Developer AdvocateのJosh Long氏が登壇しました。
まずJosh Long氏がSpring Initializrを用いてSpring AI、Spring Modulithを利用した小さなアプリケーションをあっという間に作り上げ、Cora Iberkleid氏にバトンタッチしました。Spring AIやSpring Modulithは後ほど紹介するJosh Long氏のセッション「Bootiful Spring Boot」でも利用されており、重要性の高さが伺えます。
Cora Iberkleid氏は、Spring Modulithの使用による、クラスの依存関係を疎結合にしてモジュール化する記述の方法とモジュール化された機能のテスト方法についてレクチャーをしました。Spring Modulithの解説は昨年のSpringOneレポートでも解説しているので、興味のある方は是非ご覧ください。
その後に解説役を引き継いだMark Pollack氏は、Spring AIについての解説を行いました。同氏はまず、生成AIを組み込んだアプリケーションを作る上で考慮すべき、生成AIが持つ特徴について言及しました。例えば、生成AIでは入出力に文字列が必要となる点や、今やデータサイエンティストでない多くの人々がWeb APIから生成AIにアクセスできるという点です。Spring AIはSpringアプリと既存の学習済みの生成AI(例えば、OpenAI社のChatGPT等)の間に入ることで、生成AIのチャットボットの組み込みといった実装を支援します。これらの内容は昨年のSpringOneレポートでも解説しています。
Mark Pollack氏はSpring AIの最新リリース(v1.0.0-M2)に際して、コミュニティの貢献に謝辞を述べつつ、リリースの主眼がSpring AIと生成AIの可観測性の向上であると述べました。最後に、どのトークン周辺の呼び出しに時間がかかっているかを分析できるダッシュボードについて解説した後は、再びJosh Long氏によるライブコーディングが行われました。ここまで解説された内容が実演され、生成AIを呼び出すアプリケーション実に素早く実装できることが示すデモとなっていました。
Netflix Uses Spring Boot 3
続いて、Netflix社のPaul Bakker氏、Asi Bross氏が登壇します。このサブセッションでは、Springで構築されているNetflixのエコシステムにおいて、Spring Boot 2からSpring Boot 3へのアップグレードで得られた知見が紹介されました。
Paul Bakker氏はSpring Boot 3を導入すべきそのモチベーションを語りました。特にMicrometer Observation APIによって提供される優れた可観測性は魅力的だと述べました。同様に、Java 17+へアップグレードするモチベーションについても語りました。Java 8からJava 17へのアップグレードを検証した結果、ガベージコレクションの改善でCPU使用率が20%も改善されることが判明したと述べました。
そして、Asi Bross氏がSpring Boot 3へのアップグレードの手順について詳細を解説しました。以下がアップグレード前の前提です。
- Java 17+
- 最新のSpring Boot 2.7系であること
- 非推奨のコードが使われていないこと
アップグレードのための変更としてまずOpenRewriteやGradle Lintといったツールを用いた自動リファクタリングが実行されました。自動化で解決できない課題の一つがJavaxからJakartaへの変更処理です。アップグレード期間中はSpring Boot 2のアプリケーションとSpring Boot 3のアプリケーションが混在してしまい、Spring Boot 2用のJavaxとSpring Boot 3用のJakartaもまた混在させなければなりませんでした。そこでNetflixでは解決策として、Spring Boot 3用にJavaxをJakartaに変更した一時的なjarプラグインを作成しました。Spring Boot 3へ移行が完了する際にJavaxのプラグインは完全にJakartaに置き換わりました。
アップグレードのための変更を終えたのち、結合テストやカナリアテスト、手動での検証を以ってSpring Boot 2からSpring Boot 3へのアップグレードが完了したとAsi Bross氏は振り返りました。
Asi Bross氏はアップグレードに際して得られた教訓として、アップグレードでは焦点を絞ることが大事だと述べました。当初はSpring Boot 3以外の要素も手広くアップグレードしようとしたが、これは作業が複雑になりすぎ、遅々としてアップグレードが進まなかったと回顧しました。Spring Boot 3へのアップグレードのためのJava 17+への更新、Jakartaへの更新だけでも十分に複雑であったと振り返りました。
Tanzu Platformを用いたCI/CDパイプライン
続いて、Spring Developer AdvocateのDaShaun Carter氏とVMware TanzuのシニアマネージャーであるChris Sterling氏が登壇しました。このサブセッションでは、Purnima Padmanabhan氏からも言及があったTanzu Platformを用いたCI/CDパイプラインによる自動更新についてデモが展開されました。
通常、アプリケーションは多くのライブラリに依存しており、依存ライブラリの管理は一つの悩みになっているのではないでしょうか。このデモでは、Tanzu Platformのダッシュボード上から依存ライブラリの脆弱性リストを確認し、Spring Application Advisorを組み込んだパイプラインでライブラリのアップデートに伴う変更とテストを実行する様子が示されました。登壇した両氏は、このパイプラインが定期的なライブラリのアップデートの自動化に役に立つことを説明していました。
Tanzu PlatformでのSpringアプリケーションの高速化
続いて、Springのメンテナーの一人であるSebastian Deleuze氏が登壇しました。このサブセッションでは、Tanzu PlatformにおけるSpringアプリの効率化と、Spring Boot 3.0で追加されたSpring ahead-of-time(AOT)、Spring Boot 3.3で新たに追加されたClass Data Sharing(CDS)について解説されました。CDSについては、本稿後半の「Efficient Containers With Spring Boot 3, Java 21 And CDS」にて扱っておりますので、そちらをご覧ください。
このサブセクション中のデモでは、Spring AOTを有効化することでSpringアプリ(Spring Petclininc)の起動時間が10秒から5秒の短縮、CDSを有効化することでメモリ消費量が338MBから251MBに削減できることが示されました。
プラットフォームとSpringアプリケーション
本キーノート最後のサブセッションでは、DATEV社のクラウド開発者のJürgen Sußner氏とVMware Tanzu開発者のJames Watters氏が対談形式で語り合いました。
DATEV社は税務コンサルティングを支援するソフトウェアを提供しているドイツの企業です。DATEV社は現在、すべてのソフトウェアのSpringベースのエコシステムとしてクラウド上に移行している最中にあるとJürgen Sußner氏は述べました。
Jürgen Sußner氏はSpringアプリをTanzu Platform上で構築することによって、ネットワーク制御を含め多くの複雑さが軽減されることを期待していると表明しました。特にTanzu Platformのパイプライン機能が提供する自動化は有益であると述べました。
話題はプラットフォームエンジニアリングとSpringの関係性に深掘りされていきました。プラットフォームにSpringを統合することで、開発環境と運用環境のギャップが軽減され、またモニタリング機能や依存関係の自動アップグレードといった運用性・保守性を大きく向上できたとJürgen Sußner氏は強調しました。象徴的な出来事として、数年前のLog4Shellの脆弱性が発覚した際に、DATEV社はプラットフォームで稼働している20,000ものコンテナを1週間で4回アップグレードできたと当時を振り返りました。
対談の終盤、プラットフォームにおける最も困難な点は、開発者自身がアプリケーションに責任感を持たせることだとJürgen Sußner氏は言及しました。そして開発者が責任感を持つには、プラットフォームによる抽象化を開発者が信頼できるかが肝要であると、James Watters氏へメッセージを伝えました。
* * *
以上がKeynoteセッションの紹介です。昨年のSpring Oneから継続的に紹介されている内容も多く、一貫したトレンドの中でTanzu Platformを用いたSpringアプリケーションの開発・運用を意識した機能が強調されていたように感じました。
以降は筆者が興味を持った個別セッションについてピックアップし解説していきます。