Slide 1

Slide 1 text

マイクロサービスアーキテクチャーと 最新OSS/Javaエコシステムで変わる ソフトウェア開発 2022年1月28日 数村憲治 © 2022 Fujitsu Limited ~クラウドネイティブからコンテナネイティブへ~

Slide 2

Slide 2 text

アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 2

Slide 3

Slide 3 text

自己紹介 © 2022 Fujitsu Limited @kkzr Jakarta EE 仕様策定委員 MicroProfile ステコミ委員 JCP Executive Committee メンバー Eclipse Foundation ボードディレクター JJUG CCC、EclipseCon、JakartaOneなどで登壇 3

Slide 4

Slide 4 text

アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 4

Slide 5

Slide 5 text

クラウドの歴史 © 2022 Fujitsu Limited 1994 1996 1999 2001 2006 2007 2008 2010 Amazon 設立 アジャイル ソフトウェア開発宣言 “Cloud Computing” Compaq提唱 Salesforce 2011 2013 2014 2015 2017 2018 Docker “Microservice” Fowler提唱 Twelve-factor CNCF設立 Istio EKS GA AWS EC2 Netflix Uber “Cloud Native” Netflix提唱 AKS GA コンテナ ブレーク Kubernetes 5

Slide 6

Slide 6 text

CNCFのクラウドネイティブ © 2022 Fujitsu Limited クラウドネイティブ技術は、パブリッククラウド、プラ イベートクラウド、ハイブリッドクラウドなどの近代的 でダイナミックな環境において、スケーラブルなアプリ ケーションを構築および実行するための能力を組織にも たらします。 このアプローチの代表例に、コンテナ、 サービスメッシュ、マイクロサービス、イミュータブル インフラストラクチャ、および宣言型APIがあります。 https://github.com/cncf/toc/blob/master/DEFINITION.md 6

Slide 7

Slide 7 text

アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 7

Slide 8

Slide 8 text

Twelve-factor クラウドネイティブ 2.0 © 2022 Fujitsu Limited 1994 1996 1999 2001 2006 2007 2008 2010 Amazon 設立 アジャイル ソフトウェア開発宣言 “Cloud Computing” Compaq提唱 Salesforce 2011 2013 2014 2015 2017 2018 Docker “Microservice” Fowler提唱 CNCF設立 Istio EKS GA AWS EC2 Netflix Uber “Cloud Native” Netflix提唱 AKS GA コンテナ ブレーク Kubernetes 前クラウドネイティブ時代 クラウドネイティブ 1.0 クラウド ネイティブ 2.0 8

Slide 9

Slide 9 text

The Twelve-Factor App © 2022 Fujitsu Limited I. コードベース II. 依存関係 III.設定 IV. バックエンドサービス V. ビルド、リリース、実行 VI. プロセス https://12factor.net/ja/ VII.ポートバインディング VIII.平衡性 IX. 廃棄容易性 X. 開発/本番一致 XI. ログ XII.管理プロセス 9

Slide 10

Slide 10 text

クラウドネイティブと従来型開発との違い © 2022 Fujitsu Limited 目的 ユーザエクスペリエンス提供 長期安定 プロセス アジャイル/DevBizOps ウォータフォール アーキテクチャ マイクロサービス モノリス コミュニケーション API・メッセージ SOA インフラ コンテナ・クラウド サーバ・オンプレミス スケール 水平スケール 垂直スケール ピーク性能 オンデマンド 事前見積もり クラウドネイティブ 従来型開発 10

Slide 11

Slide 11 text

コンテナ技術を中心にTwelve-Factorの実現 © 2022 Fujitsu Limited I. コードベース II. 依存関係 III.設定 IV. バックエンドサービス V. ビルド、リリース、実行 VI. プロセス VII.ポートバインディング VIII.平衡性 IX. 廃棄容易性 X. 開発/本番一致 XI. ログ XII.管理プロセス 11

Slide 12

Slide 12 text

アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 12

Slide 13

Slide 13 text

企業内のJava資産 © 2022 Fujitsu Limited 3年前 https://www.azul.com/files/Azul-191212-2-SURVEY-Final.pdf 現在 3年後 Other Other Java Java Java Javascript C/C++ Python C# PHP Ruby Other Perl 13

Slide 14

Slide 14 text

企業資産・人材を活用したクラウド化 © 2022 Fujitsu Limited 資産・人材を活かすクラウド化 • Java技術者を活用 • アプリケーションのRefactor/ Rearchitect/Replaceが必要 既存システムとは、API連携 (Encapsulate) すべてをクラウド化する 必要はない 14

Slide 15

Slide 15 text

Javaの進化 © 2022 Fujitsu Limited 保守 革新 トラブルシューティング 互換性 セキュリティ 新しい言語仕様 マイクロサービス 古い機能の削除 15

Slide 16

Slide 16 text

6 8 12 15 21 22 28 90 クラウドネイティブで使われるJava © 2022 Fujitsu Limited クラウドネイティブアプリケーションで使っている、または 使おうとしている言語は? 0 20 40 60 80 100 [%] Java JavaScript TypeScript Python 出典:Eclipse Developer Survey 2021 Go Kotlin C/C++ .Net 16

Slide 17

Slide 17 text

Javaを使ったマイクロサービスが期待される © 2022 Fujitsu Limited 0 20 40 60 80 100 [%] モノリス サーバーレス/FaaS その他 マイクロサービス ハイブリッド 3 6 18 29 43 出典:Eclipse Developer Survey 2021 クラウド上のJavaシステムは、どのアーキテクチャを 採用しますか? 17

Slide 18

Slide 18 text

アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 18

Slide 19

Slide 19 text

コンテナと軽量ランタイム © 2022 Fujitsu Limited 開発環境 テスト/本番環境 従来型アプリケーションサーバー コンテナ利用 ソース ソース ソース Java EE/CORBA/Java アプリケーションサーバ製品 配備 モノリシックアプリ 開発環境 テスト/本番環境 ソース ソース ソース コピー ・・・・・・ 軽量ランタイム 単機能アプリ Java コンテナイメージ モノリシックアプリ 軽量ランタイム 単機能アプリ Java 軽量ランタイム 単機能アプリ Java 19

Slide 20

Slide 20 text

コンテナ環境でのメモリフットプリント © 2022 Fujitsu Limited アプリケーション アプリケーション アプリケーション Javaランタイム アプリケーション アプリケーション アプリケーション Javaランタイム Javaランタイム Javaランタイム アプリケーション Javaランタイム 従来型アプリケーションサーバー 軽量ランタイム アプリケーション Javaランタイム アプリケーション Javaラインタイム 20

Slide 21

Slide 21 text

コンテナ環境での起動性能 © 2022 Fujitsu Limited コンテナ アプリケーション 数ミリ秒 数秒 コンテナ アプリケーション 数分 数秒 コンテナ アプリケーション 数秒 数秒 軽量ランタイム利用 静的コンパイラ利用 21

Slide 22

Slide 22 text

GraalVM © 2022 Fujitsu Limited https://www.graalvm.org Polyglot JVM ネイティブコード化可能 Java SE互換ではない 22

Slide 23

Slide 23 text

アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 23

Slide 24

Slide 24 text

新技術導入曲線 © 2022 Fujitsu Limited http://enterpriseitadoption.com/ "Oh Crap" 企業向けマイクロサービスのキーは 企業がかかえるJava資産・人材を 有効活用できるか 現在のマイクロサービス 24

Slide 25

Slide 25 text

Cloud Native for Java (CN4J) © 2022 Fujitsu Limited Eclipse Foundationで開発されているクラウドネイティブJava技術 Jakarta EE 企業向けJavaのオープンでベンダー中立な仕様 Java EE技術の後継 既存資産の互換性重視 フィーチャーベースリリース MicroProfile 企業向けマイクロサービスに最適なJavaの仕様 Java EE/Jakarta EE技術者のスキルを活かした マイクロサービスアプリケーションの開発が可能 マイクロサービス機能重視 タイムボックスリリース 25

Slide 26

Slide 26 text

MicroProfileとJakarta EEの仕様 © 2022 Fujitsu Limited Persistence Servlet Server Pages Concurrency Interceptors Expression Language Mail WebSocket Standard Tag Library Transactions XML Web Services XML Binding Enterprise Beans Bean Validation Connectors Messaging Activation Security Batch Config Metrics CDI Health Open API JWT Auth Open Tracing Reactive Streams Operators Fault Tolerance Context Propagation Reactive Messaging REST Client GraphQL MVC Faces Authentication Authorization CDI CDI RESTful Web Services CDI JSON Processing CDI JSON Binding CDI Annotations DI THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-01 26

Slide 27

Slide 27 text

CN4Jをリードするメンバー企業・団体 © 2022 Fujitsu Limited THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-01 27

Slide 28

Slide 28 text

MicroProfile/Jakarta EE 実装 © 2022 Fujitsu Limited THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-01 Launcher 28

Slide 29

Slide 29 text

アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 29

Slide 30

Slide 30 text

2022 2021 2020 2019 MicroProfile リリース © 2022 Fujitsu Limited 2018 2017 2016 1.0 1.1 1.2 1.3 3.3 4.0 4.1 5.0 2.1 1.4・2.0 2.2 3.2 3.0 3.1 30

Slide 31

Slide 31 text

MicroProfile 5.0 (2021年12月リリース) © 2022 Fujitsu Limited MicroProfile 5.0 Jakarta JAX-RS 3.0 Jakarta JSON-P 2.0 Jakarta CDI 3.0 Config 3.0 Fault Tolerance 4.0 JWT Authentication 2.0 Health 4.0 Metrics 4.0 Open Tracing 3.0 Open API 3.0 Rest Client 3.0 Jakarta JSON-B 2.0 Standalone Context Propagation 1.3 Reactive Streams Operators 2.0 Outside umbrella Reactive Messaging 2.0 GraphQL 1.1 LRA 1.0 Jakarta Annotations 2.0 31

Slide 32

Slide 32 text

MicroProfile で 12-factors © 2022 Fujitsu Limited MicroProfile 5.0 Jakarta JAX-RS 3.0 Jakarta JSON-P 2.0 Jakarta CDI 3.0 Config 3.0 Fault Tolerance 4.0 JWT Authentication 2.0 Health 4.0 Metrics 4.0 Open Tracing 3.0 Open API 3.0 Rest Client 3.0 Jakarta JSON-B 2.0 Standalone Context Propagation 1.3 Reactive Streams Operators 2.0 Outside umbrella Reactive Messaging 2.0 GraphQL 1.1 LRA 1.0 Jakarta Annotations 2.0 12-III 12-VI 12-IX 12-IV 12-VII 12-IX 32

Slide 33

Slide 33 text

MicroProfile で Twelve-Factor の実現 © 2022 Fujitsu Limited I. コードベース II. 依存関係 III.設定 IV. バックエンドサービス V. ビルド、リリース、実行 VI. プロセス https://12factor.net/ja/ VII.ポートバインディング VIII.平衡性 IX. 廃棄容易性 X. 開発/本番一致 XI. ログ XII.管理プロセス 33

Slide 34

Slide 34 text

(デモ) 鬼退治システム © 2022 Fujitsu Limited HTTP GET レスポンス レスポンス HTTP GET レスポンス キビだんご+犬家来 犬が家来になりました dog dango monkey peach キビだんご獲得 http://dango:8080 HTTP GET http://dog:8080 http://monkey:8080 MicroProfileの実装として、Launcherを使用。https://github.com/fujitsu/launcher 34

Slide 35

Slide 35 text

• アプリケーションのカスタマイズ・パラメタ設定を柔軟に行う • ポータビリティのあるアプリケーション作成が可能に MicroProfile Config 3.0 MicroProfile仕様概要(1) © 2022 Fujitsu Limited 12-III 設定 12-VII ポート • タイプ・セーフのリモートコールインターフェースを提供 • 安全で簡単にRESTfullサービスの呼び出しが可能に MicroProfile Rest Client 3.0 12-IV バックエンド 35

Slide 36

Slide 36 text

• マイクロサービスにおける分散トレーシング • Jaeger/Zipkinなどのツールを使用し、オブザーバビリティが可能に • プラットフォームやアプリケーション固有のメトリックスを外部 に通知する • Grafanaなどのツールを使用し、オブザーバビリティが可能に MicroProfile Metrics 4.0 MicroProfile仕様概要(2) © 2022 Fujitsu Limited MicroProfile OpenTracing 3.0 36

Slide 37

Slide 37 text

MicroProfile仕様概要(3) © 2022 Fujitsu Limited • 耐障害性・回復力のあるアプリケーション作成のためのAPI • タイムアウト・リトライ・サーキットブレーカー・フォールバックなど MicroProfile Fault Tolerance 4.0 12-IX 廃棄 • アプリケーションの生死状態を外部に通知する • アプリケーション固有の生死判定(liveness/readiness)が可能に MicroProfile Health 4.0 12-IX 廃棄 37

Slide 38

Slide 38 text

• マイクロサービスエンドポイントで、JWTを使ったRBAC • マイクロサービスにおける標準的な認可仕組み MicroProfile仕様概要(4) © 2022 Fujitsu Limited MicroProfile JWT RBAC 2.0 • JAX-RSアプリケーションからOpenAPI v3ドキュメントの生成 • マイクロサービスにおけるAPI管理が可能に MicroProfile OpenAPI 3.0 38

Slide 39

Slide 39 text

従来システム アプリケーションSE、 インフラSE、 運用管理者の責任領域が あいまい コンテナネイティブを加速するMicroProfile © 2022 Fujitsu Limited コンテナネイティブにより、開発者はアプリケーションロジックに専念 コンテナネイティブ アプリケーション ランタイム OS/VM 監視 監視 監視 アプリケーション ランタイム Kubernetes/Istio サービス 提供者 サービス 利用者 MicroProfile 監視サービス トレース・ログサービス ログ ログ ログ アプリケーションと インフラサービスを分離 39

Slide 40

Slide 40 text

アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ コンテナ上でアプリケーションディプロイメント ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 40

Slide 41

Slide 41 text

Wrap Up © 2022 Fujitsu Limited クラウドネイティブからコンテナネイティブ • コンテナ技術を中心としたエコシステムにより Twelve-Factorsが実現可能に • コンテナ上での、Java技術が進化 • マイクロサービスアーキテクチャへの対応は、MicroProfileで 企業内におけるJava資産・人材の有効活用 • 現在のエンタープライズシステムを支えているのは、Java技術者 • CN4J技術は、Java技術者のクラウドネイティブ開発をサポート • MicroProfileで開発者はビジネスロジックに専念 41

Slide 42

Slide 42 text

Thank you