Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢

1,739 views

Published on

2019年6月24日に開催されたJSUG 勉強会の資料です。Spring I/O 2019の参加レポートですので、Spring Framework に関心のある方は是非参考にしてください。

Published in: Technology
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes.........ACCESS WEBSITE Over for All Ebooks ..... (Unlimited) ......................................................................................................................... Download FULL PDF EBOOK here { https://urlzs.com/UABbn } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THAT BOOKS/FILE INTO AVAILABLE FORMAT - (Unlimited) ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes Christian, Classics, Comics, Contemporary, Cookbooks, Art, Biography, Business, Chick Lit, Children's, Manga, Memoir, Music, Science, Science Fiction, Self Help, History, Horror, Humor And Comedy, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THAT BOOKS/FILE INTO AVAILABLE FORMAT - (Unlimited) ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes Christian, Classics, Comics, Contemporary, Cookbooks, Art, Biography, Business, Chick Lit, Children's, Manga, Memoir, Music, Science, Science Fiction, Self Help, History, Horror, Humor And Comedy, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢

  1. 1. © 2019 NTT DATA Corporation 2019/6/24 日本Springユーザ会主催 Spring I/O 2019報告会 株式会社NTTデータ システム技術本部 高須隼太 GraalVMの概要と、Native-Image化による Spring Boot爆速化の夢
  2. 2. © 2019 NTT DATA Corporation 2 名前:高須 隼太(たかす はやた) 所属:株式会社NTTデータ システム技術本部 インテグレーション技術センタ 仕事:Struts → Springのマイグレーションを専門として 様々な更改プロジェクトを支援しています その他:JSUG 初参加 CodeZineにSpring I/O 2019参加レポートを寄稿予定! 誰?
  3. 3. © 2019 NTT DATA Corporation 3 Spring I/O 2019の講演内容を元に、 GraalVMって何?すごいの? Springで使えそう? をかいつまんで説明します 何しに来たの?
  4. 4. © 2019 NTT DATA Corporation 4 1. GraalVMってなに? 2. GraalVMを支える技術 – Graalコンパイラ – Truffle – Native Image 3. GraalVMをSpring Bootで使うには – 起動JDKとしての利用 – Native Image化の現状と課題 – 今後の対応予定 もくじ ※1,2の引用元:『GraalVM for Java developers』 Oleg Šelajev – Oracle
  5. 5. © 2019 NTT DATA Corporation 5 • Oracleが開発した多言語対応の仮想マシン • JVM言語のネイティブコンパイルに対応 • 2019年5月に本番運用可能バージョン「GraalVM 19.0」リリース GraalVMってなに?
  6. 6. © 2019 NTT DATA Corporation 6 GraalVMの主要技術 GraalVM Graal コンパイラ Truffle Native Image
  7. 7. © 2019 NTT DATA Corporation 7 GraalVMの主要技術 GraalVM Graal コンパイラ Truffle Native Image
  8. 8. © 2019 NTT DATA Corporation 8 GraalVM従来のJVM • JIT(Just-In-Time)コンパイラ • Javaで実装されているため、維持保守や改良が容易 • 最適化技術に改良が加えられ、パフォーマンスが向上 Graalコンパイラ HotSpot VM Compiler Interface C1コンパイラ C2コンパイラ HotSpot VM Compiler Interface C1コンパイラ Graal コンパイラ JVMCI C++ Java
  9. 9. © 2019 NTT DATA Corporation 9 JVMベンチマーク(Renaissance Benchmark Suite) https://renaissance.dev/ • 従来のOpenJDKに比べて、様々なベンチマークで速度が向上!
  10. 10. © 2019 NTT DATA Corporation 10 Stream APIベンチマーク private double[] values = new double[2000000]; public double mapReduce() { return Arrays.stream(values) .map(x -> x + 1) .map(x -> x * 2) .map(x -> x + 5) .reduce(0, Double::sum); } https://medium.com/graalvm/stream-api-performance-with-graalvm-be6cfe7fbb52
  11. 11. © 2019 NTT DATA Corporation 11 GraalVMの主要技術 GraalVM Graal コンパイラ Truffle Native Image
  12. 12. © 2019 NTT DATA Corporation 12 • 言語インタプリタの実装フレームワーク • 1つのVM上で様々な言語の相互運用が可能(Polyglot VM) • Graalコンパイラを利用して高速実行が可能 Truffle Truffle LLVM Graalコンパイラ
  13. 13. © 2019 NTT DATA Corporation 13 • Javaから他の言語を簡潔に呼び出し可能 Polyglot import org.graalvm.polyglot.*; public class HelloPolyglotWorld { public static void main(String[] args) throws Exception { System.out.println("Hello World from Java!"); Context context = Context.newBuilder().allowAllAccess(true).build(); context.eval("js", "print('Hello World from JavaScript!');"); context.eval("python", "print('Hello World from Python!')"); context.eval("ruby", "puts 'Hello World from Ruby!'"); context.eval("R", "print('Hello World from R!')"); } }
  14. 14. © 2019 NTT DATA Corporation 14 JavaScriptベンチマーク(Octane benchmark) https://medium.com/graalvm/oracle-graalvm-announces-support-for-nashorn-migration-c04810d75c1f • Nashorn, Rhinoに比べて、圧倒的に速いJavaScript実行
  15. 15. © 2019 NTT DATA Corporation 15 GraalVMの主要技術 GraalVM Graal コンパイラ Truffle Native Image
  16. 16. © 2019 NTT DATA Corporation 16 • JVM言語をAOT(Ahead-Of-Time)コンパイルしたもの • VMが組込まれており、スタンドアロンで実行可能 • アプリ起動時にクラスロードや初期化処理が不要 → 超高速起動が見込める! Native Image https://medium.com/graalvm/understanding-class-initialization-in-graalvm-native-image-generation-d765b7e4d6ed Native Image
  17. 17. © 2019 NTT DATA Corporation 17 役に立ちそうなことは わかった
  18. 18. © 2019 NTT DATA Corporation 18 じゃあ、Springでも 使えるのか?
  19. 19. © 2019 NTT DATA Corporation 19 • Spring Bootの起動JDKの代わりに使うなら超簡単 • インストールフォルダのbin/javaにパスを通すだけ 自分で試してみる
  20. 20. © 2019 NTT DATA Corporation 20 • Spring Bootの起動JDKの代わりに使うなら超簡単 • インストールフォルダのbin/javaにパスを通すだけ • 起動が少し速くなっている 自分で試してみる $ java –jar demo-0.0.1-SNAPSHOT.jar … INFO 1558 --- [main] com.example.demo.DemoApplication : Started DemoApplication in 2.905 seconds (JVM running for 3.487) $ java –jar demo-0.0.1-SNAPSHOT.jar … INFO 1561 --- [main] com.example.demo.DemoApplication : Started DemoApplication in 2.65 seconds (JVM running for 3.283) GraalVM CE 19.0.2 → 2.65秒(9%向上) OpenJDK 12.0.1 → 2.905秒 ※Hello Worldレスポンス返すだけのアプリで計測。繰り返して平均取っても大体同じくらい
  21. 21. © 2019 NTT DATA Corporation 21 • 残念ながら現時点では制約が多い・・・(そのままではコンパイルできない) じゃあ目玉のNative Image化は? https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md https://github.com/spring-projects/spring-framework/issues/21529 静的なAOTコンパイルを適用するためには、 手動による追加設定・コマンド引数の指定が必要 Springはリフレクションやダイナミックプロキシによる 動的なクラス生成を多用 ↓ https://github.com/spring-projects/spring-framework/issues/22968 Andy Clement (on GitHub) 「FW本体およびツールレベル両方で、 GraalVM用の機能を実装する必要がある」 https://github.com/spring-projects/spring-framework/wiki/GraalVM-native-image-support ※制約の詳細や現在の設定ノウハウ等はGitHub参照
  22. 22. © 2019 NTT DATA Corporation 22 • 2020年Q2のSpring 5.3でNative-Image化に対応予定! 今後の対応予定はあるの? Juergen Hoeller Spring開発リーダー • Spring Boot Native-Image化機能の「乱雑なプロトタイプ」が開発・公開中 https://github.com/aclement/spring-boot-graal-feature 2020年Q2リリース予定のSpring 5.3では設定が 自動的に行われるよう、GraalVM開発チームと協力 して技術的課題の解決に努めていく。
  23. 23. © 2019 NTT DATA Corporation 23 • ダウンロード・ビルドする • sample/demo のSpring Bootアプリ (Hello world) をネイティブイメージ化してみる プロトタイプを自分で試してみる① $ git clone https://github.com/aclement/spring-boot-graal-feature.git $ mvn package … [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ spring-boot-graal-feature --- [INFO] Building jar: /xxx/spring-boot-graal-feature/target/spring-boot-graal- feature-0.5.0.BUILD-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS $ sample/demo/compile.sh
  24. 24. © 2019 NTT DATA Corporation 24 • ダウンロード・ビルドする • sample/demo のSpring Bootアプリ (Hello world) をネイティブイメージ化してみる プロトタイプを自分で試してみる① ※2019/06時点の実装 $ git clone https://github.com/aclement/spring-boot-graal-feature.git $ mvn package … [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ spring-boot-graal-feature --- [INFO] Building jar: /xxx/spring-boot-graal-feature/target/spring-boot-graal- feature-0.5.0.BUILD-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS $ sample/demo/compile.sh • 対象jarを分解して • native化機能のクラスファイルにマージし、 • 引数にクラスパスを指定してnative-imageコマンドを叩く 実装になっている
  25. 25. © 2019 NTT DATA Corporation 25 • native compileに時間がかかったが、なんとか実行ファイルが完成 プロトタイプを自分で試してみる② [demo:1255] [total]: 700,054.90 ms
  26. 26. © 2019 NTT DATA Corporation 26 • native compileに時間がかかったが、なんとか実行ファイルが完成 プロトタイプを自分で試してみる② [demo:1255] [total]: 700,054.90 ms → _人人人人人_ > 11分 <  ̄Y^Y^Y^Y^Y^ ̄
  27. 27. © 2019 NTT DATA Corporation 27 • native compileに時間がかかったが、なんとか実行ファイルが完成 • 早速jar実行と比較してみる プロトタイプを自分で試してみる② [demo:1255] [total]: 700,054.90 ms → _人人人人人_ > 11分 <  ̄Y^Y^Y^Y^Y^ ̄ GraalVM CE 19.0.2 (native-image for Mac OS HS) → 0.081秒 $ ./demo … INFO: Started DemoApplication in 0.081 seconds (JVM running for 0.084) $ java –jar demo-0.0.1-SNAPSHOT.jar … INFO 1558 --- [main] com.example.demo.DemoApplication : Started DemoApplication in 2.905 seconds (JVM running for 3.487) OpenJDK 12.0.1 → 2.905秒 ※繰り返して平均取っても大体同じくらい
  28. 28. © 2019 NTT DATA Corporation 28 • native compileに時間がかかったが、なんとか実行ファイルが完成 • 早速jar実行と比較してみる プロトタイプを自分で試してみる② [demo:1255] [total]: 700,054.90 ms → _人人人人人_ > 11分 <  ̄Y^Y^Y^Y^Y^ ̄ GraalVM CE 19.0.2 (native-image for Mac OS HS) → 0.081秒 $ ./demo … INFO: Started DemoApplication in 0.081 seconds (JVM running for 0.084) $ java –jar demo-0.0.1-SNAPSHOT.jar … INFO 1558 --- [main] com.example.demo.DemoApplication : Started DemoApplication in 2.905 seconds (JVM running for 3.487) OpenJDK 12.0.1 → 2.905秒 _人人人人人_ > 35倍 <  ̄Y^Y^Y^Y^Y^ ̄ ※繰り返して平均取っても大体同じくらい
  29. 29. © 2019 NTT DATA Corporation 29 • 起動速度は流石で、性能が重要なシステムにハマる余地はあるかも • ただ、まだ発展途上感は否めない • 複雑なSpringアプリケーションをNative化できるかは未知数 → Native化可能なクラスは増えているが、まだ全てではない • ビルド時間が非常に長い → OSやスペックによる気もするが・・・ • 来年のリリースに向けて今後に期待! プロトタイプに関する所感
  30. 30. © 2019 NTT DATA Corporation 30 • GraalVM = 速く、様々な言語に対応している仮想マシン • JDKの代わりに起動に使うだけでも有用かも • Native-Image化で起動速度が爆速になるが、Spring Bootで使う にはまだ課題有 • Spring 5.3で対応予定のため、2020まで待つべし! • 開発中の機能が公開されているので試してみてもいいかも まとめ
  31. 31. © 2019 NTT DATA Corporation

×