Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
EN
Upload
Download free for 30 days
Sign in
Uploaded by
オラクルエンジニア通信
PPTX, PDF
1,496 views
Helidon 概要
Javaの軽量フレームワークであるHelidonについての概要資料です。
Technology
◦
Read more
0
Save
Share
Embed
Save to Drive
Download now
Downloaded 17 times
1
/ 30
2
/ 30
3
/ 30
4
/ 30
5
/ 30
6
/ 30
7
/ 30
8
/ 30
9
/ 30
10
/ 30
11
/ 30
12
/ 30
13
/ 30
14
/ 30
15
/ 30
16
/ 30
17
/ 30
18
/ 30
19
/ 30
20
/ 30
More Related Content
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
by
Jun-ichi Sakamoto
64 slides
23.8K views
PDF
Java EE から Quarkus による開発への移行について
by
Shigeru Tatsuta
43 slides
1.1K views
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
by
Chihiro Ito
36 slides
68K views
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
62 slides
2K views
PDF
BuildKitの概要と最近の機能
by
Kohei Tokunaga
34 slides
6.7K views
PDF
JDKの選択肢とサーバーサイドでの選び方
by
Takahiro YAMADA
60 slides
10.8K views
PDF
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
by
日本マイクロソフト株式会社
26 slides
1.5K views
PDF
30分でわかるマイクロサービスアーキテクチャ 第2版
by
Naoki (Neo) SATO
59 slides
2K views
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
by
Jun-ichi Sakamoto
64 slides
23.8K views
Java EE から Quarkus による開発への移行について
by
Shigeru Tatsuta
43 slides
1.1K views
Javaはどのように動くのか~スライドでわかるJVMの仕組み
by
Chihiro Ito
36 slides
68K views
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
62 slides
2K views
BuildKitの概要と最近の機能
by
Kohei Tokunaga
34 slides
6.7K views
JDKの選択肢とサーバーサイドでの選び方
by
Takahiro YAMADA
60 slides
10.8K views
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
by
日本マイクロソフト株式会社
26 slides
1.5K views
30分でわかるマイクロサービスアーキテクチャ 第2版
by
Naoki (Neo) SATO
59 slides
2K views
What's hot
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
84 slides
3.6K views
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
68 slides
5.8K views
PDF
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
by
Preferred Networks
47 slides
2.7K views
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
by
AdvancedTechNight
37 slides
16.8K views
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
60 slides
44.8K views
PDF
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
by
Yusuke Suzuki
49 slides
38.8K views
PDF
JVMのGCアルゴリズムとチューニング
by
佑哉 廣岡
96 slides
23.4K views
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
by
NTT DATA Technology & Innovation
35 slides
14.3K views
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
by
Naoya Kishimoto
123 slides
3.2K views
PPTX
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
27 slides
45.8K views
PPTX
MQ入門
by
HIRA
28 slides
7.8K views
PDF
TLS, HTTP/2演習
by
shigeki_ohtsu
129 slides
14.5K views
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
64 slides
1.6K views
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
by
日本マイクロソフト株式会社
148 slides
15K views
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.7K views
PDF
Oracle GoldenGate入門
by
オラクルエンジニア通信
37 slides
11.5K views
PDF
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
by
Hiromasa Oka
44 slides
2.2K views
PDF
Kongの概要と導入事例
by
briscola-tokyo
38 slides
3.3K views
PDF
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
by
NTT DATA Technology & Innovation
69 slides
2.2K views
PPTX
OCI GoldenGate Overview 2021年4月版
by
オラクルエンジニア通信
20 slides
2.2K views
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
84 slides
3.6K views
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
68 slides
5.8K views
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
by
Preferred Networks
47 slides
2.7K views
単なるキャッシュじゃないよ!?infinispanの紹介
by
AdvancedTechNight
37 slides
16.8K views
マイクロサービス 4つの分割アプローチ
by
増田 亨
60 slides
44.8K views
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
by
Yusuke Suzuki
49 slides
38.8K views
JVMのGCアルゴリズムとチューニング
by
佑哉 廣岡
96 slides
23.4K views
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
by
NTT DATA Technology & Innovation
35 slides
14.3K views
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
by
Naoya Kishimoto
123 slides
3.2K views
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
27 slides
45.8K views
MQ入門
by
HIRA
28 slides
7.8K views
TLS, HTTP/2演習
by
shigeki_ohtsu
129 slides
14.5K views
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
64 slides
1.6K views
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
by
日本マイクロソフト株式会社
148 slides
15K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.7K views
Oracle GoldenGate入門
by
オラクルエンジニア通信
37 slides
11.5K views
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
by
Hiromasa Oka
44 slides
2.2K views
Kongの概要と導入事例
by
briscola-tokyo
38 slides
3.3K views
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
by
NTT DATA Technology & Innovation
69 slides
2.2K views
OCI GoldenGate Overview 2021年4月版
by
オラクルエンジニア通信
20 slides
2.2K views
More from オラクルエンジニア通信
PDF
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
by
オラクルエンジニア通信
56 slides
388 views
PDF
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
by
オラクルエンジニア通信
96 slides
354 views
PDF
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
by
オラクルエンジニア通信
83 slides
212 views
PDF
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
by
オラクルエンジニア通信
72 slides
385 views
PDF
Oracle Cloud Infrastructure:2023年1月度サービス・アップデート
by
オラクルエンジニア通信
57 slides
131 views
PDF
Oracle Cloud Infrastructure:2022年12月度サービス・アップデート
by
オラクルエンジニア通信
57 slides
175 views
PDF
Oracle Cloud Infrastructure:2022年11月度サービス・アップデート
by
オラクルエンジニア通信
46 slides
144 views
PDF
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
by
オラクルエンジニア通信
74 slides
205 views
PDF
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
by
オラクルエンジニア通信
61 slides
285 views
PDF
Oracle Cloud Infrastructure:2022年8月度サービス・アップデート
by
オラクルエンジニア通信
107 slides
395 views
PDF
Oracle Cloud Infrastructure:2022年7月度サービス・アップデート
by
オラクルエンジニア通信
60 slides
172 views
PDF
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
by
オラクルエンジニア通信
95 slides
56 views
PDF
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
by
オラクルエンジニア通信
81 slides
122 views
PDF
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
by
オラクルエンジニア通信
103 slides
2K views
PDF
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間 (2022年4月版)
by
オラクルエンジニア通信
6 slides
141 views
PPTX
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
by
オラクルエンジニア通信
33 slides
813 views
PDF
Oracle Cloud Infrastructure:2022年3月度サービス・アップデート
by
オラクルエンジニア通信
48 slides
109 views
PPTX
Oracle Cloud Infrastructure:2022年2月度サービス・アップデート
by
オラクルエンジニア通信
62 slides
728 views
PDF
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
by
オラクルエンジニア通信
48 slides
4.2K views
PDF
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
by
オラクルエンジニア通信
97 slides
3.6K views
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
by
オラクルエンジニア通信
56 slides
388 views
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
by
オラクルエンジニア通信
96 slides
354 views
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
by
オラクルエンジニア通信
83 slides
212 views
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
by
オラクルエンジニア通信
72 slides
385 views
Oracle Cloud Infrastructure:2023年1月度サービス・アップデート
by
オラクルエンジニア通信
57 slides
131 views
Oracle Cloud Infrastructure:2022年12月度サービス・アップデート
by
オラクルエンジニア通信
57 slides
175 views
Oracle Cloud Infrastructure:2022年11月度サービス・アップデート
by
オラクルエンジニア通信
46 slides
144 views
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
by
オラクルエンジニア通信
74 slides
205 views
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
by
オラクルエンジニア通信
61 slides
285 views
Oracle Cloud Infrastructure:2022年8月度サービス・アップデート
by
オラクルエンジニア通信
107 slides
395 views
Oracle Cloud Infrastructure:2022年7月度サービス・アップデート
by
オラクルエンジニア通信
60 slides
172 views
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
by
オラクルエンジニア通信
95 slides
56 views
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
by
オラクルエンジニア通信
81 slides
122 views
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
by
オラクルエンジニア通信
103 slides
2K views
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間 (2022年4月版)
by
オラクルエンジニア通信
6 slides
141 views
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
by
オラクルエンジニア通信
33 slides
813 views
Oracle Cloud Infrastructure:2022年3月度サービス・アップデート
by
オラクルエンジニア通信
48 slides
109 views
Oracle Cloud Infrastructure:2022年2月度サービス・アップデート
by
オラクルエンジニア通信
62 slides
728 views
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
by
オラクルエンジニア通信
48 slides
4.2K views
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
by
オラクルエンジニア通信
97 slides
3.6K views
Helidon 概要
1.
Helidon 概要 クラウドネイティブ時代のマイクロサービス・フレームワーク 日本オラクル株式会社
2.
Safe harbor statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、 情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以 下の事項は、マテリアルやコード、機能を提供することを確約するものではないため、購買 決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリース、時期及び価格については、弊 社の裁量により決定され、変更される可能性があります。 Copyright
© 2021, Oracle and/or its affiliates 2
3.
1. Helidon とは 2.
2つのエディション - SE / MP 3. まとめ Agenda Copyright © 2021, Oracle and/or its affiliates 3
4.
1. Helidon とは 2.
2つのエディション - SE / MP 3. まとめ Agenda Copyright © 2021, Oracle and/or its affiliates 4
5.
エンタープライズ・アプリケーションの世界の変化 Copyright © 2021,
Oracle and/or its affiliates 5 Build Deploy Test Releas e DevOps Cycle 場所を問わず動作する クラウドネイティブな コンテナの展開 オープンソースの DevOps ツール群の連携 マイクロサービスと サーバーレス・ アプリケーション 複数言語を扱う Polyglot な アプリケーション Micro service 1 Busines s Domain Micro service 2
6.
マイクロサービス・フレームワークの要件 6 • 小さなサービス群の組み合わせ • 個々のサービスは単独プロセスで稼働 •
RESTfulのような軽量な通信プロトコル • (個々の)業務機能に沿った形で構築 • 他サービスとの依存性なくデプロイが可能 • デプロイは自動化が可能 • 最低限の中央集権的管理機構 • 複数の言語で記述されることがある • 複数のデータストレージ技術が使われる ことがある • 小さなサービスをデプロイするための 軽量フットプリント • 単独プロセスとしてサービスを稼働させるための基盤 技術(Docker, Kubernetes等)との親和性 • RESTやgRPC等のサービス間通信を効率的に実 装できるフレームワークの提供 • CI/CDプロセス・ツールでの扱いやすさ • 分散サービス管理をサポートする仕組み(health, metrics, tracing, etc.) • Polyglot環境での言語間のInteroperability • データ永続化レイヤー対応における柔軟性 * “Microservices” by James Lewis/Martin Fowler https://martinfowler.com/articles/microservices.html マイクロサービスの特性* 求められる要件 Copyright © 2021, Oracle and/or its affiliates
7.
Javaのマイクロサービス・フレームワーク OracleがホストするOSSプロジェクト • GitHubでソースコードを公開:https://github.com/oracle/helidon • Helidonの商用サポートはWebLogic
Server/Coherenceのサポート契約に含まれる マイクロサービスアプリケーションが必要とする機能(Webサーバ/コンフィギュレーション/セキュリティ)を提供するJavaライブラリの集合体 • 単体のJVMとして動作し、アプリケーションサーバ不要 • 必要なコンポーネントを追加して拡張することも可能 2つのプログラミングモデルを提供 • Helidon MP:宣言的記法(Java EE開発者フレンドリー) • Helidon SE:関数的型記法 マイクロサービスの監視に適合 Project Helidon Copyright © 2021, Oracle and/or its affiliates 7
8.
Helidon SE と
MP 8 • マイクロ・フレームワーク • 超軽量フットプリント • 関数型 • Reactive Web Server • MicroProfile 3.2 • 軽量フットプリント • 宣言型 • Java EEサブセット + マイクロサービス関連機能 Helidon MP Helidon SE CDI Extensions フットプリント重視 機能性重視 互換性(MicroProfile準拠)重視 Copyright © 2021, Oracle and/or its affiliates
9.
Helidonのポジショニング 9 Full Stack MicroProfile based Microframeworks Helidon
MP Helidon SE Copyright © 2021, Oracle and/or its affiliates
10.
高速起動・高速スケールが求められるユースケース(マイクロサービス、FaaS)に適する • ランタイムの起動時間、及びプログラム実行初期のパフォーマンスの劇的な向上 • メモリフットプリントの削減 Helidon
は GraalVMネイティブ・イメージの作成をサポート • Maven profileによるビルド - Helidon Quickstart* を参照 • Local build (for the OS installed locally) • Docker build (for Linux) GraalVM ネイティブ・イメージ 10 + Copyright © 2021, Oracle and/or its affiliates * Helidon Quickstart https://helidon.io/docs/latest/#/se/guides/02_quickstart
11.
WebLogic Helidon ~ Autonomous
Databaseを利用したアプリケーション構成例 Copyright © 2021, Oracle and/or its affiliates 11 App App App App #1 デプロイメント App App App App #2 デプロイメント Load Balancer API Gateway App App App App #3 デプロイメント App App App App #4 デプロイメント Autonomous Database / DBaaS(VM/BM) / Exadata CS Autonomous Database / … Autonomous Database / … スケール スケール スケール 周辺 システム フロント層 バック層 データ永続化層 OKE OKE OCI Database サービス Cloud Services • レプリカセットの維持(再起動) • ローリングアップデート • スケーリング
12.
HelidonはOpen Sourceのプロジェクト • Apache
2.0 License Open Sourceとしてのサポートを提供中 • Web Site with guides and tutorials: https://helidon.io • StackOverflow: https://stackoverflow.com/tags/helidon • Public Slack channel: https://helidon.slack.com • GitHub issues tracker: https://github.com/oracle/helidon/issues Oracleによる商用サポートについて • WebLogic Serverライセンス保有のお客様にHelidonのサポートを提供中 • Helidon単独のサポートを提供予定 Helidonのサポートについて 12 Copyright © 2021, Oracle and/or its affiliates
13.
1. Helidon とは 2.
2つのエディション - SE / MP 3. まとめ Agenda Copyright © 2021, Oracle and/or its affiliates 13
14.
リアクティブ・スタイルで開発された軽量なマイクロフレームワーク • 少ないスレッドで多くのコネクションをハンドル • メモリー管理やコンテキスト・スイッチ等のオーバーヘッドを削減 Helidon
SE 14 Security ● 認証 ● 認可 ● アウトバウンド対応 ● 監査 ● 拡張可能 Config ● 柔軟性の高い型付き設 定モデル ● 複数のソースを利用可 ● 階層型モデル ● 動的な更新 ● 拡張可能 Reactive Web Server ● Reactive APIを使った シンプルな関数ルー ティング・モデル ● Netty上に構築 ● OpenTracing, Metrics and Health Checks ● 静的コンテンツ Helidon SE Copyright © 2021, Oracle and/or its affiliates
15.
1ステートメントで起動できるREST APIサーバー Helidon SE
– 関数スタイルのシンプルなRESTサーバー開発 15 public static void main(String[] args) throws Exception { WebServer webServer = WebServer .create(Routing.builder().any((req, res) -> res.send("It works!")).build()) .start() .toCompletableFuture() .get(10, TimeUnit.SECONDS); } どのPath/Methodでも ”It works!”を返す サーバーの起動待ち (エラー時Exception) Helidon SE Copyright © 2021, Oracle and/or its affiliates
16.
Eclipse MicroProfile準拠のフレームワークが最適 Java EE標準企業が選択すべき次世代フレームワークは? Copyright
© 2021, Oracle and/or its affiliates 16 • Java EEが現行標準フレームワーク • Java EEの開発・運用スキルを保有 • マイクロサービス志向 - 高頻度リリース、変更の局所化 - コンテナ化/軽量フットプリント - CI/CDとの連携・DevOpsとの親和性 • APIファースト - サービス定義の明確化と共有化 - モジュール(API)の再利用性向上 • SPA(Single Page Application) - UIの柔軟性向上、高機能化 - フロントエンドとバックエンドの分離 技術 トレンド バック グラウンド Eclipse MicroProfile規格が要件にフィット • マイクロサービスのためのフレームワーク - 軽量フレームワーク、Java SEベース - REST APIを効率的に開発可能 - CI/CDとの親和性が高い - Metrics, Health, OpenAPI, OpenTracingなど運用 監視に必要な機能を標準実装 - Cloud Native Computing Foundation(CNCF)の各 種規格への準拠 = Interoperability高 • ベースとなる規格はJava EEのサブセット - Javaスキル保有者の学習コスト低 • 共通規格 = ベンダ・ロックインを回避 Helidon MP
17.
• PolyglotなMicroservices環境の中で協調して動く(= Microservices各種仕様に準拠する、
Microservicesのデザイン パターンを実装する)Javaアプリケーションの開発に必要な機能を、フレームワークとして規定したもの。 • 開発者はビジネスロジックの実装に集中でき、効率的な開発ができる。 • 基盤となる実装は、MicroProfileプロバイダの品質維持・向上を期待できる。 Eclipse MicroProfile 17 OpenMetrics OpenTracing OpenAPI Circuit Breaker Bulk Head Health Check Helidon MP Copyright © 2021, Oracle and/or its affiliates
18.
Helidon MP を構成するコンポーネント Copyright
© 2021, Oracle and/or its affiliates 18 MP Config Metrics Health Check Fault Tolerance JWT Auth JAX-RS CDI JSON-P / B Open API Open Tracing REST Client SE SE SE JPA gRPC JTA SE + オリジナル JavaEE由来 MicroProfile Sandbox Reactive Streams Operators Reactive Streams Messaging Kafka/JMS Connector GraphQL Helidon MP SE SE MicroProfile =
19.
アノテーションでPOJO(=普通のJavaクラス)がRESTサービスに! Helidon MP –
MicroProfileを使ったRESTサーバー開発 19 @ApplicationScoped @Path("/echo") public class EchoResource{ @Inject @ConfigProperty(name = “echo.reply", defaultValue = "Hi!") private String reply; @POST @Produces(MediaType.APPLICATION_JSON) public Response handleRequest(Message message, @Context UriInfo uriInfo) { JsonObject json = Json.createObjectBuilder() .add("url", uriInfo.getRequestUri().toASCIIString()) .add("text", message.text) .add(“reply", reply) .build(); return Response.ok(json.toString()).build(); } } CDI JSON-B JSON-P JAX-RS JAX-RS CDI JAX-RS JAX-RS MicroProfile Config Java EEから必要十分な仕様を 引き継いだ、分かりやすくて 非常に強力なマイクロサービス 開発フレームワーク Copyright © 2021, Oracle and/or its affiliates
20.
1. Helidon とは 2.
2つのエディション - SE / MP 3. まとめ Agenda Copyright © 2021, Oracle and/or its affiliates 20
21.
クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク マイクロサービス環境に適したアプリケーションを効率的に開発 • SEとMPの二つのエディションを用意 –
要件に応じた使い分け MicroProfileによる仕様標準化の恩恵、ロックインの回避 • Metrics, Health, OpenAPI,OpenTracingなどはノー・コーディングで利用可能 • 開発者はビジネスロジックの開発に専念できる • ベンダーの健全な競争の下で、フレームワーク実装の品質向上が見込める 実際のプロジェクトで必要となる拡張機能の提供 – セキュリティ、データベース接続、etc. 多くの実績の中で育まれたJavaのエコシステム • IDE、ライブラリ、モニタリング・プロファイリング・デバッギング、etc. • GraalVMの活用 まとめ - Helidonを採用すべき理由 21 Copyright © 2021, Oracle and/or its affiliates
22.
ありがとうございました Copyright © 2021,
Oracle and/or its affiliates 22
23.
Strangler Pattern(ストラングラー・パターン) マイクロサービス化に向けた設計パターン Copyright ©
2021, Oracle and/or its affiliates 23 アプリケーションの特定の機能を 徐々に改善していく • 低コスト、高速、保守が容易 段階的に新しいアプリケーションや サービスに置き換え • ファサード(窓口)がユーザーからの要 求を既存アプリケーションまたは新し いサービスにルーティング • 置き換えが完了したら既存アプリケー ションから古いサービスを削除 Application Server Module 1 Module 2 Module N Datastore New Module Datastore 既存アプリケーション 新規サービス 切り出したサービス マイクロサービスとして実装 Facade Helidon
24.
Oracle主導で開発されるOSS GraalVM:多言語の単一かつ高速なランタイムエンジン GraalVMによる3つのイノベーション • Javaアプリを安定・高速実行 • Javaで書かれた新たなJITコンパイラ •
JavaアプリのNative Image化 • 事前にマシン語にコンパイル(Ahead-of-Time Compilation) • 起動時間の極小化とメモリフットプリントの削減 • 複数プログラミング言語を実行可能なランタイム • Java, JavaScript, Ruby, Rust, C, C++… • 単一プログラム内で、複数言語を絡めた記述が可能 Community Edition(GPLv2)とEnterprise Edition • EEは最適化されたパフォーマンスとサポートを提供 • EEはOracleCloud Infrastructureで無償利用可能 HotSpot JVMCI (JITコンパイラをJavaで実装するためのインターフェース) Graal GraalVM Javaアプリ Truffle Sulong JS Ruby R C C++ HotSpot Compiler I/F C2 (for Server) Javaアプリ Native image SubstrateVM Javaアプリ (マシン語) シングルバイナリ 24 Copyright © 2021, Oracle and/or its affiliates
25.
様々な認証・認可スキームに対応 / IDCSを使った認証・認可を効率的に開発可能 JWT
Provider HTTP Basic Authentication HTTP DigestAuthentication Header Assertion HTTP Signatures ABAC Authorization Google Login Authentication Provider OIDC (OpenID Connect) Authentication Provider IDCS Role Mapping Provider • IDCSのユーザー/グループを使ったアクセス制御 Helidonが提供するSecurity Providers Copyright © 2021, Oracle and/or its affiliates 25 Identity Provider Helidon OpenID Connect 認証シーケンス Browser OIDC (Open IDConnect) Authentication Provider を使ったユーザー認証 user/group scope * IDCS = Oracle Identity Cloud Service @GET @Path("/admin-role") @Authenticated @RolesAllowed("admin") public void somemethod() { return; } IDCSで定義した adminロールに マッピングする MicroProfileの ソースコードの例
26.
CDI extensions • HikariCP
data sources • Oracle UCP data sources • Jedis clients • OCI Object Storage clients • JavaTransactionAPI (JTA) objects Java Persistence API (JPA)のサポート • JDBC Driver (DataSource) + JTA Extension + Hikari Connection Pool Extension + EclipseLink JPA Extension データの永続化/キャッシュが必要な場合に便利な機能 26 CDI extension =CDIのライフサイクルイベントを受け取って独自の実装を追加するための仕様 JPA = Javaオブジェクトをデータベースに永続化するための仕様 JTA (JavaTransactionAPI) = トランザクションを管理するための仕様 Helidon MP JDBC Driver JavaTransaction API EclipseLink (JPA) Entity App Hikari Connection Pool application.yaml persistence.xml Helidon MPによるJPA/JTAサポート Copyright © 2021, Oracle and/or its affiliates
27.
※現在はExperimentalのステータス gRPCのサーバー&クライアント実装を簡単に開発できる SE、MP両エディションでサポート • SE –
リアクティブ・スタイル • MP – POJO + アノテーション • 従来からのProtobufサービス/スタブも利用可能 ペイロード・タイプは Protocol Buffers と Java Serialization をサポート Security, Metrics, Health Check機能を提供 もちろんRESTサービスと共存(サーバー・ポートは別) gRPC のサポート 27 gRPCとは? • CNCF(Cloud Native Computing Foundation)のインキュベーション・プロジェクト • マイクロサービス間で効率的な通信を実現するためのしくみ @RpcService(name = "helloworld.Greeter") @ApplicationScoped public class GreeterService{ @Unary(name = "SayHello") public HelloReply sayHello(HelloRequest req) { return HelloReply .newBuilder() .setMessage("Hello " + req.getName()) .build(); } } Helidon MPのコーディング例 Copyright © 2021, Oracle and/or its affiliates
28.
MicroProfile Reactive Messaging
準拠のKafkaConnector MicroProfile Reactive MessagingをベースにKafkaとの送受信機能を提供 • アノテーションを使って簡単に送受信を実装 Kafkaの接続情報は設定ファイル内で指定 • アプリケーションはKafka接続への依存性を排除できる OCI Streaming ともKafka互換APIを使って通信可能 Helidon Kafka Connector Copyright © 2021, Oracle and/or its affiliates 28 Helidon Kafka Connector Producer Helidon Kafka Connector Consumer Kafka-pub Kafka-sub MicroProfile Reactive Messaging MicroProfile Reactive Messaging Kafkaへの送信 Kafkaからの受信
29.
Hybrid Application and
Environment Management Hybrid Applications in Hybrid Environments Oracle Enterprise JavaVision – AppDev Platform Copyright © 2021, Oracle and/or its affiliates Open Operating Systems Cloud Native Environment Java Microservices Polyglot microservices Traditional Applications Public Cloud Private Cloud Hybrid Cloud Operators 29
Editor's Notes
#7
まず、Helidoの具体的な話に入る前に、 マイクロサービスに対する認識にはかなり個人差があると思いますので、まずは少なくともこのセッションの時間で共通する「マイクロサービスってこんなもの」 という認識合わせをして、そこから「マイクロサービスを構築するために使われる開発フレームワークの要件」みたいなものを考えていきたいと思います。 そこで引っ張り出してきたのが、古典といってもいいでしょう、James Lewis/Martin Fowler による「microservices」という記事です。そこには「The microservice architectural style」ということで、マイクロサービスに特徴的なアーキテクチャの要素が列挙されています。 。。。 という風に、マイクロサービスとして一般的に語られている特徴が端的にまとまっているのではないでしょうか? で、これをひも解くと、次のような要件がマイクロサービス・フレームに求められるはずです。 。。。 はい、そして今日はHelidonについてのお話ですので、Helidonがこうした要件を果たして満たしているのかどうかをみていきましょう。
#9
Helidonには SEとMPという ふたつのエディションがあります。 ざっくりいうと、SEの方が超軽量、最近トレンドのリアクティブなフレームワークをベースにしています。 また、後述しますが、GraalVMを使ってネイティブ・イメージを作成できます。 MPは、SEをベースにして、Eclipse MicroProfileという規格に準拠したフレームワークの機能を提供します。 機能的にもSEよりリッチですし、これまでJava EEで開発をしてきた方には取り組みやすいフレームワークと言えます。
#11
Helidon SEの一つの特長は、GrralVMのネイティブイメージを作成できる点です。 (次ページに移って、もどる) なぜ、GraalVMのnative imageがそんなに注目されるのか その背景にはマイクロサービス特有の要件があるから。 すなわち K8s上で速やかにかつ多くのインスタンスをスケールアウトしたり、FaaSで高速にコールドスタートするような必要がでてくるケースなどです。 なので、起動時間の短縮や、メモリー使用量の削減が重要な要件となります スライド右側に通常のHotSpot VMとnative imageの比較があります 起動時間が劇的に短縮されていたり、メモリーのフットプリントが大きく減っているのがご覧いただけると思います (まとめ)このようにHelidon SEはGraalVMと組み合わせることによって、特にマイクロサービスに特徴的なユースケースにおいて、大きなメリットを生み出します
#13
ライセンス Apache 2.0 コミュニティ・サポート Slack、StackOverflow、GitHub Issues 商用サポート
#15
Helidonは最初に Reactive Web Server、Config、Security の 3つの機能の提供から始まりました。 ベースとなるサーバー機能は、Java Non-blocking IOをベースにしたNettyというフレームワークの上に、Reactive Streams APIを使ったシンプルな関数型のルーティングモデルを構築しています。 ・少ないスレッドで多くのコネクションをハンドルすることができたり ・メモリー管理やコンテキスト・スイッチ等のオーバーヘッドを少なくしたり でき、 マイクロサービス・フレームワークに期待される要件を叶えています。 をベースにしています。 ちなみに他の多くのマイクロサービス系フレームワークも同様にNettyを採用していると思います。 このノンブロッキングIOをベースにしたリアクティブなアーキテクチャによって、 少ないスレッドで多くのコネクションをハンドルすることができたり メモリー管理やコンテキスト・スイッチ等のオーバーヘッドを少なくしたり でき、 マイクロサービス・フレームワークに期待される要件を叶えています。 --- Java NIO API ノン・ブロッキングI/O 少ないスレッドで多くのコネクションをハンドル メモリー管理やコンテキスト・スイッチ等のオーバーヘッドを著しく削減 I/Oが無い場合、スレッドは他のタスクを実行可能 Netty ローレベルなAPIであるJava NIOを汎用的に利用可能にしたフレームワーク 非同期&イベント・ドリブン Flow = Reactive Streams ノン・ブロッキングなバックプレッシャー(流量)制御で非同期ストリーム処理をおこなうための標準仕様
#16
実際のサーバーのコーディングは、このような感じです。 非常にシンプルに関数型のコーディングスタイルで書くことができます ご覧いただいているコードは、若干無理しているところもある感じですが、 (public static void main)の中の1ステートメントでWebサーバーの実装と 起動ができるくらいのシンプルさです。
#18
(MicroProfile …)をざっくり説明 ビジネスロジックを実装してRESTサービスとして公開するための主要機能に加えて CNCFで標準化されているような標準のJava実装のためのAPI マイクロサービスのデザインパターンやベストプラクティスを共通化して実装するためのAPI これらをフレームワークとしてまとめたもの 開発者はビジネスロジックに集中できる ベンダ独自仕様に縛られるようなロックインを回避できる Java EE/Jakarta EEと何が違うかというと、生態系が違うという感じ MPは、小さなサービスがたくさんあって、しかもいろいろな実行系・言語の混在状態であるような環境の中で動作することが前提になっている
#20
REST APIのロジックを実装する部分の話 Java EEから必要十分な仕様を持ってきていて、わかりやすく非常に強力な開発フレームワークになっている。 Java EEにJAX-RSというRESTアプリケーションを開発するための仕様があるが、これは普通のJavaのクラス(プロパティとメソッドをもったクラス)にアノテーションをつけるだけで、RESTサービス化することができる。 さらに、RESTはJsonフォーマットのデータをやりとりするが、そのあたりもJSON-Bという機能を使って、Javaオブジェクトにバインディングされるので、Jsonデータを直接扱う必要はない(あつかってもいいけど – JSON-P)
#22
冒頭、マイクロサービス・フレームワークの要件についてお話をしましたが、このセッションを通じて、Helidonがクラウドネイティブ時代にふさわしいマイクロサービス・フレームワークであると皆さんに感じていただけたら幸いです。
#25
GraalVMには多くの側面があるが、すぐに受けることのできる恩恵としては 1. 新しいJavaベースのJITコンパイラを提供している 2. AOTコンパイレーションという技術を使って、事前にマシン語にコンパイルしたネイティブイメージを作成できる GraalVMはオープンソースのCEと優れたパフォーマンスを提供する有償サポート版のEEがある EEはオラクルクラウドをご利用いただくお客様には無償で利用いただけます -- GraalVMはnative imageを作るほかにもいろいろな機能を提供しています 通常のJava SEからGraalVMに置き換えていただくと、GraalVMの提供する新しいJITコンパイラが威力を発揮して、おおよそ10~15%程度のパフォーマンス向上が見込まれるという結果がでています https://llvm.org/devmtg/2016-01/slides/Sulong.pdf
#26
まず、セキュリティの部分ですが、Helidonは認証、認可に関するいろいろな機能をプロバイダという形で提供しています。 - HTTP系の各種認証機能 - MPにも規定がある、JWTを使った認可機能 - 外部のIdPと連携する方式としては、Google Login用の認証プロバイダやOpen ID Connect標準を使った認証プロバイダ - さらには、Oracle Identity Cloud ServiceのグループとRoleをマッピングする機能を提供しています ABAC – attribute based access control
#27
マイクロサービスとトランザクションに関しては既に多くの議論がある分野だと思いますが、 マイクロサービス間はともかく、単一のマイクロサービス内で行われる単一データソースに対するローカルトランザクションのニーズは相変わらず高いと思いますし、特にデータベースに対するデータ操作やコミットの制御、さらにコネクションのプーリングによるパフォーマンスの向上などは、必須の機能と思いますし、MicroProfileの規定にない部分でもある。 Helidon MPは、JPA/JTAというJava EE/Jakarta EE標準のAPIをサポートします コネクションプールとして、Hikari CPとOracle UCPが使えます その他、 キャッシュサーバーの機能を提供するRedis用のクライアントや、Oracle CloudのObject Storage用のクライアントを提供しています --- 実用に耐えるアプリケーションを書くとき、データをどこかに永続化したり、キャッシュしたりすることが必ず必要になる。 マイクロサービスは結果整合性や補償トランザクションという考え方が一般的ですが、これは一般的には複数のマイクロサービス間でおこなわれるトランザクションについての議論だと考えています。
#28
拡張機能の最後は、gRPCに関してです gRPCはご存じの方もいらっしゃると思いますが、 CNCF(Cloud Native Computing Foundation)のインキュベーション・プロジェクトのひとつで、 マイクロサービス間で効率的な通信を実現するためのしくみです。 (いったん次のページに行って、戻ってくる) gRPCは現在はExperimentalという位置づけですが、SEでもMPでもサポートしています。 特徴としては、SEとMPでRESTサーバーのコーディングスタイルが違ったように、gRPCも各々の特徴を活かしたコーディングスタイルになっています。SEはリアクティブ・スタイル、MPはJAX-RSのgRPC版といってもいいようなアノテーションを使ったシンプルなコーディング・スタイルになっています。 Helidonオリジナルのプログラミングモデルの他にも、従来からあるProtocでコンパイルして生成したJavaのスタブや抽象クラスを使って作成されたサービス実装などは、変更することなくHelidonのgRPCサーバーに統合することができます もう一つ、特徴的なのは、扱うことのできるペイロードのタイプです。一般的にはprotocol buffersという伝送効率が高く特定の言語に依存しないデータフォーマットを使うのですが、Helidonはそれに加えてJavaシリアライゼーションフォーマットも使えます。もっともJavaシリアライゼーションの形式はJava同志の通信でしか利用できませんので、どちらかというとプロトタイピング用途(つまり、さくっと何か試したいときにIDLコンパイラとか使わずにさくっと実装したいような場合)と思っていただいた方がよいと思います。 さらに、Helidonを使ったときの特典といえるものとして、Security, Metrics, Health といった付加機能をRESTと同様gRPCについても使えるようになっています。
#29
このスライドの後でデモ: