Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マイクロサービス - JEITAワークショップ

マイクロサービス - JEITAワークショップ

Kenji Kazumura

January 27, 2022
Tweet

More Decks by Kenji Kazumura

Other Decks in Technology

Transcript

  1. アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up

    ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 2
  2. 自己紹介 © 2022 Fujitsu Limited @kkzr Jakarta EE 仕様策定委員 MicroProfile

    ステコミ委員 JCP Executive Committee メンバー Eclipse Foundation ボードディレクター JJUG CCC、EclipseCon、JakartaOneなどで登壇 3
  3. アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up

    ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 4
  4. クラウドの歴史 © 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
  5. CNCFのクラウドネイティブ © 2022 Fujitsu Limited クラウドネイティブ技術は、パブリッククラウド、プラ イベートクラウド、ハイブリッドクラウドなどの近代的 でダイナミックな環境において、スケーラブルなアプリ ケーションを構築および実行するための能力を組織にも たらします。

    このアプローチの代表例に、コンテナ、 サービスメッシュ、マイクロサービス、イミュータブル インフラストラクチャ、および宣言型APIがあります。 https://github.com/cncf/toc/blob/master/DEFINITION.md 6
  6. アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up

    ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 7
  7. 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
  8. The Twelve-Factor App © 2022 Fujitsu Limited I. コードベース II.

    依存関係 III.設定 IV. バックエンドサービス V. ビルド、リリース、実行 VI. プロセス https://12factor.net/ja/ VII.ポートバインディング VIII.平衡性 IX. 廃棄容易性 X. 開発/本番一致 XI. ログ XII.管理プロセス 9
  9. クラウドネイティブと従来型開発との違い © 2022 Fujitsu Limited 目的 ユーザエクスペリエンス提供 長期安定 プロセス アジャイル/DevBizOps

    ウォータフォール アーキテクチャ マイクロサービス モノリス コミュニケーション API・メッセージ SOA インフラ コンテナ・クラウド サーバ・オンプレミス スケール 水平スケール 垂直スケール ピーク性能 オンデマンド 事前見積もり クラウドネイティブ 従来型開発 10
  10. コンテナ技術を中心にTwelve-Factorの実現 © 2022 Fujitsu Limited I. コードベース II. 依存関係 III.設定

    IV. バックエンドサービス V. ビルド、リリース、実行 VI. プロセス VII.ポートバインディング VIII.平衡性 IX. 廃棄容易性 X. 開発/本番一致 XI. ログ XII.管理プロセス 11
  11. アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up

    ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 12
  12. 企業資産・人材を活用したクラウド化 © 2022 Fujitsu Limited 資産・人材を活かすクラウド化 • Java技術者を活用 • アプリケーションのRefactor/

    Rearchitect/Replaceが必要 既存システムとは、API連携 (Encapsulate) すべてをクラウド化する 必要はない 14
  13. 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
  14. Javaを使ったマイクロサービスが期待される © 2022 Fujitsu Limited 0 20 40 60 80

    100 [%] モノリス サーバーレス/FaaS その他 マイクロサービス ハイブリッド 3 6 18 29 43 出典:Eclipse Developer Survey 2021 クラウド上のJavaシステムは、どのアーキテクチャを 採用しますか? 17
  15. アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up

    ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 18
  16. コンテナと軽量ランタイム © 2022 Fujitsu Limited 開発環境 テスト/本番環境 従来型アプリケーションサーバー コンテナ利用 ソース

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

    アプリケーション アプリケーション Javaランタイム Javaランタイム Javaランタイム アプリケーション Javaランタイム 従来型アプリケーションサーバー 軽量ランタイム アプリケーション Javaランタイム アプリケーション Javaラインタイム 20
  18. コンテナ環境での起動性能 © 2022 Fujitsu Limited コンテナ アプリケーション 数ミリ秒 数秒 コンテナ

    アプリケーション 数分 数秒 コンテナ アプリケーション 数秒 数秒 軽量ランタイム利用 静的コンパイラ利用 21
  19. アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up

    ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 23
  20. Cloud Native for Java (CN4J) © 2022 Fujitsu Limited Eclipse

    Foundationで開発されているクラウドネイティブJava技術 Jakarta EE 企業向けJavaのオープンでベンダー中立な仕様 Java EE技術の後継 既存資産の互換性重視 フィーチャーベースリリース MicroProfile 企業向けマイクロサービスに最適なJavaの仕様 Java EE/Jakarta EE技術者のスキルを活かした マイクロサービスアプリケーションの開発が可能 マイクロサービス機能重視 タイムボックスリリース 25
  21. 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
  22. CN4Jをリードするメンバー企業・団体 © 2022 Fujitsu Limited THIS WORK IS LICENSED UNDER

    A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-01 27
  23. 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
  24. アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up

    ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 29
  25. 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
  26. 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
  27. 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
  28. MicroProfile で Twelve-Factor の実現 © 2022 Fujitsu Limited I. コードベース

    II. 依存関係 III.設定 IV. バックエンドサービス V. ビルド、リリース、実行 VI. プロセス https://12factor.net/ja/ VII.ポートバインディング VIII.平衡性 IX. 廃棄容易性 X. 開発/本番一致 XI. ログ XII.管理プロセス 33
  29. (デモ) 鬼退治システム © 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
  30. • アプリケーションのカスタマイズ・パラメタ設定を柔軟に行う • ポータビリティのあるアプリケーション作成が可能に MicroProfile Config 3.0 MicroProfile仕様概要(1) © 2022

    Fujitsu Limited 12-III 設定 12-VII ポート • タイプ・セーフのリモートコールインターフェースを提供 • 安全で簡単にRESTfullサービスの呼び出しが可能に MicroProfile Rest Client 3.0 12-IV バックエンド 35
  31. MicroProfile仕様概要(3) © 2022 Fujitsu Limited • 耐障害性・回復力のあるアプリケーション作成のためのAPI • タイムアウト・リトライ・サーキットブレーカー・フォールバックなど MicroProfile

    Fault Tolerance 4.0 12-IX 廃棄 • アプリケーションの生死状態を外部に通知する • アプリケーション固有の生死判定(liveness/readiness)が可能に MicroProfile Health 4.0 12-IX 廃棄 37
  32. • マイクロサービスエンドポイントで、JWTを使ったRBAC • マイクロサービスにおける標準的な認可仕組み MicroProfile仕様概要(4) © 2022 Fujitsu Limited MicroProfile

    JWT RBAC 2.0 • JAX-RSアプリケーションからOpenAPI v3ドキュメントの生成 • マイクロサービスにおけるAPI管理が可能に MicroProfile OpenAPI 3.0 38
  33. 従来システム アプリケーションSE、 インフラSE、 運用管理者の責任領域が あいまい コンテナネイティブを加速するMicroProfile © 2022 Fujitsu Limited

    コンテナネイティブにより、開発者はアプリケーションロジックに専念 コンテナネイティブ アプリケーション ランタイム OS/VM 監視 監視 監視 アプリケーション ランタイム Kubernetes/Istio サービス 提供者 サービス 利用者 MicroProfile 監視サービス トレース・ログサービス ログ ログ ログ アプリケーションと インフラサービスを分離 39
  34. アジェンダ © 2022 Fujitsu Limited クラウドネイティブジャーニー Javaとマイクロサービス MicroProfile Wrap Up

    ⚫ クラウドの歴史 ⚫ クラウドネイティブ 2.0 ⚫ 企業におけるJava利用 ⚫ コンテナと軽量ランタイム ⚫ コンテナ上でアプリケーションディプロイメント ⚫ Cloud Native for Java (CN4J) ⚫ 概要とデモ 40
  35. Wrap Up © 2022 Fujitsu Limited クラウドネイティブからコンテナネイティブ • コンテナ技術を中心としたエコシステムにより Twelve-Factorsが実現可能に

    • コンテナ上での、Java技術が進化 • マイクロサービスアーキテクチャへの対応は、MicroProfileで 企業内におけるJava資産・人材の有効活用 • 現在のエンタープライズシステムを支えているのは、Java技術者 • CN4J技術は、Java技術者のクラウドネイティブ開発をサポート • MicroProfileで開発者はビジネスロジックに専念 41