Spring Native Beta Releaseについて
※ 以前投稿した記事に誤りがあったので投稿し直しています
Spring Native Betaリリース
Spring Nativeとしてリリースされました。まだBeta版(Version 0.9.0)で、spring-projects-experimentalという実験的プロジェクト配下に置かれています。(2020年のSpring IOではSpring GraalVM Nativeと呼ばれていました)
Spring Boot, Spring Cloudなどの各種OSSのNative Imageの作成を行ってくれます。過去にこちらで触れたCloud Native Buildpackを利用したDocker Imageを作成することで、簡単にNative ImageをDockerコンテナで動かすことができるようになりました。
Spring Native を利用したプロジェクトの作成
Spring InitilizrですでにSpring Nativeが入っており、選択することができます。
また、Spring Nativeの動作範囲外のOSSが入っている場合、HELP.mdにサポート範囲外のため予期せぬ動きをする可能性がある、といった注意文が入ります。
Spring Nativeのサポート範囲
Spring NativeはまだBeta版であるゆえにサポートされている範囲が明記されています。
GraalVM 21.0.0、Javaは8か11、Kotlinは1.3以上となっており、Spring Bootは2.4.3がサポート対象となっています。今後、Spring Bootのバージョンと共に上がっていくと謳っています。 Spring Native 0.9.0はSpring Boot 2.4.3に、Spring Native 0.9.1はSpring Boot 2.4.4に、といった具合です。
また、samples配下のプロジェクトをみてもらえればなんとなくわかりますが、以下のSpring Boot, Spring Cloud プロジェクトがサポートされています。(Spring Cloudは2020.0.1をサポート)
- spring-boot-starter-actuator
- WebMvc and WebFlux がサポート対象
- spring-boot-starter-data-elasticsearch
- spring-boot-starter-data-jdbc
- spring-boot-starter-data-jpa
- spring-boot-starter-data-mongodb
- spring-boot-starter-data-neo4j
- spring-boot-starter-data-r2dbc
- spring-boot-starter-data-redis
- spring-boot-starter-jdbc
- spring-boot-starter-logging
- spring-boot-starter-mail
- spring-boot-starter-thymeleaf
- spring-boot-starter-rsocket
- spring-boot-starter-validation
- spring-boot-starter-security
- WebMvc and WebFlux でのログイン、HTTP Basic認証、 OAuth 2.0をサポート。RSocketはサポート対象外。
- spring-boot-starter-oauth2-resource-server: WebMvc and WebFlux are supported.
- spring-boot-starter-oauth2-client
- WebMvc and WebFlux がサポート対象
- spring-boot-starter-webflux
- Nettyのみサポート
- spring-boot-starter-web
- spring-boot-starter-websocket
- com.wavefront:wavefront-spring-boot-starter
- spring-cloud-starter-bootstrap
- spring-cloud-starter-config
- spring-cloud-config-client
- spring-cloud-config-server
- spring-cloud-starter-netflix-eureka-client (Java 11 のみ)
- spring-cloud-function-web
- spring-cloud-function-adapter-aws
- spring-cloud-starter-function-webflux
また、以下についてもサポートされているようです。
- Spring Kafka
- GRPC
- H2 database
- Mysql JDBC driver
- PostgreSQL JDBC driver
動作確認
今回は Spring Native リポジトリのsamplesの中からwebflux-nettyを利用して動かしてみます。
とはいってもREADME.mdに記載されている通り、Docker Daemonを立ち上げて コマンドを打つだけ。
$ mvn spring-boot:build-image
親のpom.xmlにbuildimageの設定がされているため、以前みたようにPaketo BuildpackをベースにしたDocker Imageが作成されています。
$ docker-compose up
0.036秒で起動。やはり早い。早いは正義。アプリケーションもきちんと動いていそうです。
まとめ
ということでSpring Native Beta版の簡単な紹介をしてみました。まだBeta版でありすぐプロダクションで使えるような状態ではないかもしれないですが、これからの流れとしてきっとNative Imageは主流になっていくと思うので(というかなってほしい)、積極的に使っていき発展を見守りたいですね。