SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート

Spring誕生から20年! Spring FrameworkやJavaの最新情報が披露された「SpringOne 2023」レポート

You Don't Need Kubernetes to Be Cloud Native

 目を引くタイトルの本セッションでは、クラウドネイティブなアプリケーションプラットフォームであるVMware Tanzu Application Service(以下、TAS)の価値が強調されていました。

 「クラウドネイティブの文脈でKubernetesがよく登場するが、Kubernetesの導入が必ずしもアプリケーション開発者を超生産的にするわけではない。そもそもアプリケーション開発者の関心事は書いたコードを動かすことであり、それがどこであるかは気にしない。だからこそ、我々は抽象化レイヤにフォーカスしている」

 VMwareのNick Kuhn氏はこのようにタイトルの真意について触れました。

 そして、その主張を裏付けているのが同社製品のTASです。TASはオープンソースのCloud Foundryをベースとした商用プラットフォームで、開発の一連のプロセスを抽象化し、開発者のエクスペリエンス向上に貢献します。アプリケーションのデプロイメントやスケーリング、ルーティングやロードバランシング、バックエンドとの連携、ロギング、セキュリティ対策などコーディング外の作業を強力に支援します。これにより、アプリケーション開発者はコーディングに集中することができるのです。なお、TASにホスティングされたSpringアプリケーションは、追加費用なしで商用サポートを受けられます。

 また、TASではBOSHと呼ばれるインフラのライフサイクルを管理するツールによって、クラウドインフラのプロビジョニングやアップグレード等が高度に自動化され、レジリエントなプラットフォームが持続的に提供されます。これにより,プラットフォームエンジニアリングの効率が大幅に上がるのです。

 実際、TASはFortune 100に名を連ねる企業や金融機関等で利用されており、多くの企業がこの堅牢なプラットフォームに投資し続け、成果を上げていることが示されています。

 TASを用いたデモでは、Spring Bootアプリケーションのデプロイメントが披露されました。アプリケーションのパッケージング、スケーリング、データベースサービスのバインドなどが容易に実行でき、開発者のワークフローを根本的に変える様子が示されていました。

 今後も開発者のエクスペリエンスやプラットフォームエンジニアリングの変革の動きに注視していく必要がありそうです。

Preparing Spring Web Applications for Loom

 Java 21で正式導入される仮想スレッドを使用したWebアプリケーションについては、Keynoteでも取り上げられていましたが、長年Tomcatの開発に携わっているMark Thomas氏の本セッションでは、より多面的な検証の結果を含めて詳細に解説されました。

 サーブレットは、単純に言えば1リクエストに対してスレッドプール内の1スレッドを割り当てて処理を行う方式を採ってきました。すべてのリクエストにスレッドを割り当ててしまうと、すぐにスレッドが枯渇してしまいます。ノンブロッキングI/Oや非同期I/Oの導入により実際に処理を行っているリクエストのみにスレッドを割り当てるように改善を重ね、現在はスレッドプールのスレッド数以上のリクエストやコネクションを並行で捌くことができるようになっています。とはいえ、すべての処理がOSのスレッド(プラットフォームスレッド)に紐づいたJavaのスレッドで実行されることには変わりはなく、スケーラビリティの面では課題を抱えていました。

 一方、仮想スレッドはプラットフォームスレッドとは独立したスケジューラを持つ、より軽量なスレッドです。そのため、リクエストに対して従来のスレッドに代わり仮想スレッドを割り当てることで、少ないプラットフォームスレッドで多数のリクエストを処理できるようになります。

 Springにおける仮想スレッド使用時の注意点としては、以下の2点が挙げられます。

  • synchronized:ブロックの中でのブロッキングAPIを使用を避けること
    • synchronized:ブロックの中では仮想スレッドがプラットフォームスレッドと紐づけられ、プラットフォームスレッドをブロックしてしまう恐れがあるため
  • キャッシュ目的でのThreadLocalの使用が意味をなさない可能性があること
    • 仮想スレッドはスレッドプールを持たず、処理の度に生成・破棄されるため

 セッションの後半では、仮想スレッドの性能の検証結果が紹介されました。非公式な実験の結果によると、仮想スレッドの使用によってスループットの面では若干の向上が見られた一方、レイテンシがやや増大していたようです。全体的な結論としては、既にノンブロッキングAPIを使用しているアプリケーションではほとんど差が見られないであろう一方、現在ブロッキングAPIを使用しているアプリケーションではスケーラビリティの向上に目に見える効果があるだろうとのことです。

次のページ
Intelligent Beans with Spring AI

この記事は参考になりましたか?

イベントレポート連載記事一覧

もっと読む

この記事の著者

SpringOne 2023 参加チーム(SpringOne 2023 サンカチーム)

【NTT ソフトウェアイノベーションセンタ】小泉雄太、岩塚 卓弥、水野 諭孝 【NTTデータグループ】井上 大輔、高見 諭史、高橋 寛恒 【NTTコムウェア】田村 祐揮、黒澤 和矢

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/18511 2023/10/27 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー