Successfully reported this slideshow.

Jakarta EE + MicroProfile との付き合い方

0

Share

Loading in …3
×
1 of 25
1 of 25

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Jakarta EE + MicroProfile との付き合い方

  1. 1. Jakarta EE + MicroProfile との付き合い方 Jan 22, 2020 Hirofumi Iwasaki
  2. 2. 2 Speaker Biography 岩崎浩文 Hirofumi Iwasaki @HirofumiIwasaki • Distinguished, Manager of Technology Strategy Group, Rakuten Card Co., Ltd. • JakartaOne Livestream Japanプログラム委員 キャリア • 20年のJ2EE-Java EEでの金融系・製造系・通信系・人材系の巨大エンタープラ イズシステムの企画・設計・実装・支援実績 著書・講演等 • 講演: Oracle Code One 2019, 2018, JavaOne 2017, 2015, 2014, OOW 2017, 2014, Java Day Tokyo 2015, 2014, Rakuten Tech Conference 2019-2013, etc.
  3. 3. 3 Agenda 1. エンタープライズシステムと Jakarta EE, MicroProfileの歴史 2. Jakarta EE と MicroProfileとの違い 3. Jakarta EEと MicroProfileとの付き合い方
  4. 4. 4 エンタープライズシステムの歴史 メインフレーム IBM System/360 1964 1970’s メインフレーム IBM System/370 + 国産互換機 1980’s 1990’s UNIX System V + 商用UNIXs Stratus ノンストップ “ミニコン” Tandem 2000’s 2010’s Windows NT+IIS Linux J2EE 1.2 アプリ サーバー Netscape WebLogic .NET Framework .NET Core Java EE 5 Jakarta EE 8 2020’s ? CORBA XA
  5. 5. 5 J2EE  Java EE  Jakarta EEの歴史とEclipse MicroProfileの分岐 2000 J2EE 1.2 J2EE 1.3 J2EE 1.4 Java EE 5 Java EE 6 Java EE 7 Java EE 8 Jakarta EE 8 2001 2003 2006 2009 Eclipse MicroProfile 2016 MicroProfile 1.0 2013 2017 2018 2Q MicroProfile 2.0 MicroProfile 3.0 2019 2Q 2019 分岐
  6. 6. 6 Jakarta EE Versions Jakar ta EE JTA EJB JMS Servle t JSP Java Mail JCA JSF JPA Bean Val CDI JAX- RS Web Socket Batch 8 1.2 3.2 2.0 4.0 2.3 1.6 1.7 2.3 2.2 2.0 2.0 2.1 1.1 1.0 7 1.2 3.2 2.0 3.1 2.3 1.5 1.7 2.2 2.1 1.1 1.1 2.0 1.0 1.0 6 1.1 3.1 1.1 3.0 2.2 1.4 1.6 2.0 2.0 1.0 1.0 5 1.1 3.0 1.1 2.5 2.1 1.4 1.5 1.2 1.0 1.4 1.0 2.1 1.1 2.4 2.0 1.3 1.5 1.3 1.0 2.0 1.0 2.3 1.2 1.2 1.0 1.2 1.0 1.1 1.0 2.2 1.1 1.1
  7. 7. 7 Jakarta EE準拠プロダクトJakartaEE8Behind WebLogic Server WebSphere AS JBoss EAP(次版) WebSphere Liberty Interstage (EE 7) WebOTX (EE 7) GlassFish Cosminexus (EE 6) ※TCK通過有無にかかわらず、README等で対応と記載のものを列挙(2020-01-22現在)
  8. 8. 8 Eclipse MicroProfile Versions Micro Profile JAX- RS CDI JSON- P Config Metrics Health Check Fault Toleran ce JWT Auth Open Trancin g Open API Rest Client Comm Annota tion JSON- B 3.2 2.1 2.0 1.1 1.3 2.1 2.2 2.0 1.1 1.3 1.1 1.3 1.3 1.0 3.1 2.1 2.0 1.1 1.3 2.1 2.1 2.0 1.1 1.3 1.1 1.3 1.3 1.0 3.0 2.1 2.0 1.1 1.3 2.0 2.0 2.0 1.1 1.3 1.1 1.3 1.3 1.0 2.2 2.1 2.0 1.1 1.3 1.1 1.0 2.0 1.1 1.3 1.1 1.2 1.3 1.0 2.1 2.1 2.0 1.1 1.3 1.1 1.0 1.1 1.1 1.2 1.0 1.1 1.3 1.0 2.0 2.1 2.0 1.1 1.3 1.1 1.0 1.1 1.1 1.2 1.0 1.1 1.3 1.0 1.3 2.0 1.1 1.0 1.2 1.1 1.0 1.0 1.0 1.0 1.0 1.0 1.2 2.0 1.1 1.0 1.1 1.0 1.0 1.0 1.0 1.1 2.0 1.1 1.0 1.0 1.0 2.0 1.1 1.0 Original APIsFrom Jakarta EE From Jakarta EE
  9. 9. 9 Eclipse MicroProfile準拠プロダクトMicroProfile3.2 (2.2) Behind (1.1?) (作業中) WebSphere Liberty (2.1) (Quarkusへ統合予定) Launcher (3.0)
  10. 10. 10 Agenda 1. エンタープライズシステムと Jakarta EE, MicroProfileの歴史 2. Jakarta EE と MicroProfileとの違い 3. Jakarta EEと MicroProfileとの付き合い方
  11. 11. 11 Jakarta EEとEclipse MicroProfileとの関係 一部の仕様を拝借 Original APIs Java EE 8に入る予定だった (しかし入らなかった)新規API群
  12. 12. 12 Jakarta EEとEclipse MicroProfileとの守備範囲の違い Web表示系 なし 通信系 RMI-IIOP SOAP REST-JSON REST-JSON OpenAPI ビジネスロジック系 トランザクション制御 EJB (two-phase CMT, キャッシュ処理) CDI (single-phase CMT) CDI (CMT未サポート, キャッシュ処理なし) データベース 接続 JPA ※プロダクト独自で別のスペックを独自サポートしているもの多数 なし 非同期処理 JMS なし WebSocket HTTP ・・・ ・・・ ・・・
  13. 13. 13 Eclipse MicroProfileの注意点 Web表示系 なし 通信系 RMI-IIOP SOAP REST-JSON REST-JSON OpenAPI ビジネスロジック系 トランザクション制御 EJB (two-phase CMT, キャッシュ処理) CDI (single-phase CMT) CDI (CMT未サポート, キャッシュ処理なし) データベース 接続 JPA ※プロダクト独自で別のスペックを独自サポートしているもの多数 なし 非同期処理 JMS なし WebSocket HTTP ・・・ ・・・ 注意点1: Eclipse MicroProfileだけではアプリケーションは作れない(可能性大) 注意点2: MicroProfile利用時には別のライブラリー・フレームワークと組み合わ せて使う必要がある。→互換性に注意!! →ベンダーロックインの恐れあり ・・・
  14. 14. 14 MicroProfile準拠サーバーの独自実装状態 Web表示系 なし 通信系 REST-JSON OpenAPI ビジネスロジック系 トランザクション制御 CDI (CMT未サポート, キャッシュ処理なし) データベース 接続 なし 非同期処理 なし ・・・ Netty Helidon Quarkus JPA (Oracle UCP, HikariCP) CDI + JTA (CMTサポート, キャッシュ処理なし) REST-JSON OpenAPI なし JPA (Hibernate ORM) なし (Quarkus Extension) REST-JSON OpenAPI CDI + JTA (CMTサポート, キャッシュ処理なし) Apache Kafka MicroProfileベースを選択 + Full Profile(=Jakarta EE準拠)のパッケージ追加で MicroProfile +簡易Jakarta EEの機能が使える(コンテナー系処理に当然機能制限あり) ※プロダクトによって基本サポート範囲がバラバラ ・・・ ・・・ ・・・ (+Quarkus Extension) (+Quarkus Extension)(+Quarkus Extension)(+Quarkus Extension)
  15. 15. 15 Eclipse MicroProfileの互換性問題→ベンダーロックインの恐れあり MicroProfile準拠のプロダクトA MicroProfile準拠のプロダクトB プロダクトA用に作った アプリケーション Netty HibernateKafka 移行 JMSとJPAが ないので 動かない! →自前で何とかする 必要あり →コンテナー側で 動く必要がある 系は無理かも (CMT等) 依存 ※こんな仕様なんだ、と把握しておくことが重要 例: なし (別の何か) ベンダー ロックイン 状態 依存
  16. 16. 16 Agenda 1. エンタープライズシステムと Jakarta EE, MicroProfileの歴史 2. Jakarta EE と MicroProfileとの違い 3. Jakarta EEと MicroProfileとの付き合い方
  17. 17. 17 Jakarta EE とMicroProfileとの適性 Java EE 8 Jakarta EE 8 2016 MicroProfile 1.0 2017 2018 MicroProfile 2.0 MicroProfile 3.0 2019 2019 Java EE 8からの単純な コピー+エラータ 多量のオリジナルAPI 追加 • Rest Client 1.3 • Health Check 2.0 • Metrics 2.0 • Config 1.3 • Open Tracing 1.3 • Fault Tolerance 2.0 • JWT Propagation 1.1 • Open API 1.1 オリジナルAPIs 赤:3.0で更新されたもの
  18. 18. 18 余談: MicroProfile から Jakarta EE に取り込みを期待したい仕様 Fault Tolerance 2.0 メソッドを呼ぶ際のタイムアウト値等を設定可能、失敗したら別のメソッドを呼ぶ @Timeout, @Retry, @Fallback →バッチ実行で使えそう Config 1.3 アプリ設定ファイル、VM変数、環境変数を読むための統一した方法 @Inject, @ConfigProperty →今まで無かったのがおかしい。すぐ追加すべき Open API 1.1, REST Client 1.3 Open API v3仕様に則ったRESTful通信方法の提供 @Operation, @APIResponse, @Server, @RestClient etc. →必要なので、すぐ追加すべき
  19. 19. 19 Jakarta EE + MicroProfileの今後 Jakarta EE 8 MicroProfile 3.0 2019 2019 EE 8,9準拠アプリケーションサーバー MicroProfile 3+, 4+ 系準拠FW - Jakarta EE 8+ - JDK 11 - MicroProfile 3+, 4+ - GraalVM 19.3+ (JDK 11対応版) 2020 - ...とこれらふたつの組み合わせ(次のページ)
  20. 20. 20 MicroProfileとJakarta EE仕様の使い所の例① 組み合わせパターン 基幹系システム Jakarta EE準 拠基幹系App Database MQ File Servers App Server コンテナー管理トラ ンザクション制御 (CMT) MicroProfile準拠 Web系App Web系システム Framework ・・・ 他のシステム JavaScript系 Framework Swift, Kotlin • View Controller • HTML系処理はフロントエ ンド側に委譲(やらない) • トランザクション系処理 は基幹系システムに委譲 • 短期利用メイン(仕様の安 定度不明, 動きが速い) • コンテナー型+キャッシュ +CMTで超高速安全動作 • 安定した仕様と商用サポー ト。長期利用もOK <<View Controller>> <<View>> • 画面実装は 諦めた
  21. 21. 21 MicroProfileとJakarta EE仕様の使い所の例② リアルタイム系とバッチ系パターン 基幹系システム Jakarta EE準 拠基幹系App Database MQ File Servers App Server コンテナー管理トラ ンザクション制御 (CMT) リアルタイム系処理 MicroProfile準拠 バッチ系App MicroProfile準拠 バッチ系App MicroProfile準拠 バッチ系App MicroProfile準拠 バッチ系App MicroProfile準拠 バッチ系App MicroProfile準拠 バッチ系App +JDBC+JMS等 Job Scheduler バッチ系処理 • サーキットブレ イカー=プロセ ス終了 • 個別運用管理が 容易 • Ad hocな処理の 追加削除運用が 楽 • コンテナー型+ キャッシュ +CMTで超高速 安全動作 • 安定した仕様と 商用サポート。 長期利用もOK
  22. 22. 22 まとめ 1. Jakarta EE と MicroProfile は別々に動いている別のプロジェクト  異なるパッケージ名、後方互換性の考え方、認証プロセス、権利関係等  合流は現状難しい感触 (Oracle Code One 2019, Eclipse Con Europe 2019) 2. 「アプリケーションコンテナー」型 (Jakarta EE) 対「フレームワーク」型 (MicroProfile)  どちらも美点と欠点あり。どちらかに寄せることは難しい  基幹系・高負荷リアルタイム処理にはコンテナー系、Web系View Controller・バッチ系にはフレームワーク型など、使い道に応じて採用を個別検 討するのが得策 3. Eclipse MiroProfileは未完のフレームワーク仕様である  足りない分は自分で考えて追加する必要あり。今後どうなっていくのか不明。  ベンダーロックインの可能性あり。注意!!
  23. 23. 23 JakartaOne Livestream Japan オンラインイベント(参加無料)
  24. 24. 24 オンラインイベント(参加無料)
  25. 25. 25 Q&A

×