SlideShare uma empresa Scribd logo
1 de 30
Helidon 概要
クラウドネイティブ時代のマイクロサービス・フレームワーク
日本オラクル株式会社
Safe harbor statement
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、
情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以
下の事項は、マテリアルやコード、機能を提供することを確約するものではないため、購買
決定を行う際の判断材料になさらないで下さい。
オラクル製品に関して記載されている機能の開発、リリース、時期及び価格については、弊
社の裁量により決定され、変更される可能性があります。
Copyright © 2021, Oracle and/or its affiliates
2
1. Helidon とは
2. 2つのエディション - SE / MP
3. まとめ
Agenda
Copyright © 2021, Oracle and/or its affiliates
3
1. Helidon とは
2. 2つのエディション - SE / MP
3. まとめ
Agenda
Copyright © 2021, Oracle and/or its affiliates
4
エンタープライズ・アプリケーションの世界の変化
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
• 小さなサービス群の組み合わせ
• 個々のサービスは単独プロセスで稼働
• 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
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
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
Helidonのポジショニング
9
Full Stack
MicroProfile based
Microframeworks
Helidon MP
Helidon SE
Copyright © 2021, Oracle and/or its affiliates
高速起動・高速スケールが求められるユースケース(マイクロサービス、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
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
• レプリカセットの維持(再起動)
• ローリングアップデート
• スケーリング
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
1. Helidon とは
2. 2つのエディション - SE / MP
3. まとめ
Agenda
Copyright © 2021, Oracle and/or its affiliates
13
リアクティブ・スタイルで開発された軽量なマイクロフレームワーク
• 少ないスレッドで多くのコネクションをハンドル
• メモリー管理やコンテキスト・スイッチ等のオーバーヘッドを削減
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
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
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
• 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
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 =
アノテーションで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
1. Helidon とは
2. 2つのエディション - SE / MP
3. まとめ
Agenda
Copyright © 2021, Oracle and/or its affiliates
20
クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク
マイクロサービス環境に適したアプリケーションを効率的に開発
• SEとMPの二つのエディションを用意 – 要件に応じた使い分け
MicroProfileによる仕様標準化の恩恵、ロックインの回避
• Metrics, Health, OpenAPI,OpenTracingなどはノー・コーディングで利用可能
• 開発者はビジネスロジックの開発に専念できる
• ベンダーの健全な競争の下で、フレームワーク実装の品質向上が見込める
実際のプロジェクトで必要となる拡張機能の提供 – セキュリティ、データベース接続、etc.
多くの実績の中で育まれたJavaのエコシステム
• IDE、ライブラリ、モニタリング・プロファイリング・デバッギング、etc.
• GraalVMの活用
まとめ - Helidonを採用すべき理由
21 Copyright © 2021, Oracle and/or its affiliates
ありがとうございました
Copyright © 2021, Oracle and/or its affiliates
22
Strangler Pattern(ストラングラー・パターン)
マイクロサービス化に向けた設計パターン
Copyright © 2021, Oracle and/or its affiliates
23
アプリケーションの特定の機能を
徐々に改善していく
• 低コスト、高速、保守が容易
段階的に新しいアプリケーションや
サービスに置き換え
• ファサード(窓口)がユーザーからの要
求を既存アプリケーションまたは新し
いサービスにルーティング
• 置き換えが完了したら既存アプリケー
ションから古いサービスを削除
Application Server
Module 1 Module 2 Module N
Datastore
New Module
Datastore
既存アプリケーション
新規サービス
切り出したサービス
マイクロサービスとして実装
Facade
Helidon
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
様々な認証・認可スキームに対応 / 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の
ソースコードの例
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
※現在は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
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からの受信
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
Helidon 概要

Mais conteúdo relacionado

Mais procurados

M04_失敗しないための Azure Virtual Desktop 設計ガイド
M04_失敗しないための Azure Virtual Desktop 設計ガイドM04_失敗しないための Azure Virtual Desktop 設計ガイド
M04_失敗しないための Azure Virtual Desktop 設計ガイド
日本マイクロソフト株式会社
 

Mais procurados (20)

Oracle Cloud Infrastructure セキュリティの取り組み [2021年2月版]
Oracle Cloud Infrastructure セキュリティの取り組み [2021年2月版]Oracle Cloud Infrastructure セキュリティの取り組み [2021年2月版]
Oracle Cloud Infrastructure セキュリティの取り組み [2021年2月版]
 
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
OCI Logging 概要
OCI Logging 概要OCI Logging 概要
OCI Logging 概要
 
Oracle Data Guard による高可用性
Oracle Data Guard による高可用性Oracle Data Guard による高可用性
Oracle Data Guard による高可用性
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
GoldenGateテクニカルセミナー2「Oracle GoldenGate 新機能情報」(2016/5/11)
GoldenGateテクニカルセミナー2「Oracle GoldenGate 新機能情報」(2016/5/11)GoldenGateテクニカルセミナー2「Oracle GoldenGate 新機能情報」(2016/5/11)
GoldenGateテクニカルセミナー2「Oracle GoldenGate 新機能情報」(2016/5/11)
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
OCIコンテナサービス関連の技術詳細
OCIコンテナサービス関連の技術詳細OCIコンテナサービス関連の技術詳細
OCIコンテナサービス関連の技術詳細
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
 
Oracle GoldenGate導入Tips
Oracle GoldenGate導入TipsOracle GoldenGate導入Tips
Oracle GoldenGate導入Tips
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Exadata X8M-2 KVM仮想化ベストプラクティス
Exadata X8M-2 KVM仮想化ベストプラクティスExadata X8M-2 KVM仮想化ベストプラクティス
Exadata X8M-2 KVM仮想化ベストプラクティス
 
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
M04_失敗しないための Azure Virtual Desktop 設計ガイド
M04_失敗しないための Azure Virtual Desktop 設計ガイドM04_失敗しないための Azure Virtual Desktop 設計ガイド
M04_失敗しないための Azure Virtual Desktop 設計ガイド
 

Semelhante a Helidon 概要

MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
Ryusuke Kajiyama
 
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
オラクルエンジニア通信
 

Semelhante a Helidon 概要 (20)

Oracle GoldenGate 概要 2020年11月版
Oracle GoldenGate 概要 2020年11月版Oracle GoldenGate 概要 2020年11月版
Oracle GoldenGate 概要 2020年11月版
 
【旧版】Oracle Database Cloud Service:サービス概要のご紹介 [2020年3月版]
【旧版】Oracle Database Cloud Service:サービス概要のご紹介 [2020年3月版]【旧版】Oracle Database Cloud Service:サービス概要のご紹介 [2020年3月版]
【旧版】Oracle Database Cloud Service:サービス概要のご紹介 [2020年3月版]
 
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
 
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
 
OCHaCafe2#5 変幻自在♪ 広がるKubernetesのエコシステム
OCHaCafe2#5 変幻自在♪ 広がるKubernetesのエコシステムOCHaCafe2#5 変幻自在♪ 広がるKubernetesのエコシステム
OCHaCafe2#5 変幻自在♪ 広がるKubernetesのエコシステム
 
OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
 
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
 
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年2月版]
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年2月版]Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年2月版]
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年2月版]
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
 
Oracle Cloud の セキュリティ・コンプライアンス 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月16日)
Oracle Cloud の セキュリティ・コンプライアンス 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月16日) Oracle Cloud の セキュリティ・コンプライアンス 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月16日)
Oracle Cloud の セキュリティ・コンプライアンス 最新情報(Oracle Cloudウェビナーシリーズ: 2020年7月16日)
 
20191015 oracle beyondstudy
20191015 oracle beyondstudy20191015 oracle beyondstudy
20191015 oracle beyondstudy
 
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
 
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
成功ノウハウと効果からみる、データベース集約統合作業の計画と実際(Oracle Cloudウェビナーシリーズ: 2020年10月22日)
 
MySQL製品概要
MySQL製品概要MySQL製品概要
MySQL製品概要
 
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
 
Big Data Service Overview 2020年7月版
Big Data Service Overview 2020年7月版Big Data Service Overview 2020年7月版
Big Data Service Overview 2020年7月版
 
[Modern Cloud Day Tokyo 2019] オラクルコンサルが語る!事例でみていくOracle Cloud Infrastructure設...
[Modern Cloud Day Tokyo 2019] オラクルコンサルが語る!事例でみていくOracle Cloud Infrastructure設...[Modern Cloud Day Tokyo 2019] オラクルコンサルが語る!事例でみていくOracle Cloud Infrastructure設...
[Modern Cloud Day Tokyo 2019] オラクルコンサルが語る!事例でみていくOracle Cloud Infrastructure設...
 
[旧版]Big Data Service Overview 2020年4月版
[旧版]Big Data Service Overview 2020年4月版[旧版]Big Data Service Overview 2020年4月版
[旧版]Big Data Service Overview 2020年4月版
 

Mais de オラクルエンジニア通信

Mais de オラクルエンジニア通信 (20)

Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
Oracle Cloud Infrastructure:2023年5月度サービス・アップデートOracle Cloud Infrastructure:2023年5月度サービス・アップデート
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
 
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
 
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデートOracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
 
Oracle Cloud Infrastructure:2023年1月度サービス・アップデート
Oracle Cloud Infrastructure:2023年1月度サービス・アップデートOracle Cloud Infrastructure:2023年1月度サービス・アップデート
Oracle Cloud Infrastructure:2023年1月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年12月度サービス・アップデート
Oracle Cloud Infrastructure:2022年12月度サービス・アップデートOracle Cloud Infrastructure:2022年12月度サービス・アップデート
Oracle Cloud Infrastructure:2022年12月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年11月度サービス・アップデート
Oracle Cloud Infrastructure:2022年11月度サービス・アップデートOracle Cloud Infrastructure:2022年11月度サービス・アップデート
Oracle Cloud Infrastructure:2022年11月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
Oracle Cloud Infrastructure:2022年10月度サービス・アップデートOracle Cloud Infrastructure:2022年10月度サービス・アップデート
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデートOracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年8月度サービス・アップデート
Oracle Cloud Infrastructure:2022年8月度サービス・アップデートOracle Cloud Infrastructure:2022年8月度サービス・アップデート
Oracle Cloud Infrastructure:2022年8月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年7月度サービス・アップデート
Oracle Cloud Infrastructure:2022年7月度サービス・アップデートOracle Cloud Infrastructure:2022年7月度サービス・アップデート
Oracle Cloud Infrastructure:2022年7月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
Oracle Cloud Infrastructure:2022年6月度サービス・アップデートOracle Cloud Infrastructure:2022年6月度サービス・アップデート
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
Oracle Cloud Infrastructure:2022年5月度サービス・アップデートOracle Cloud Infrastructure:2022年5月度サービス・アップデート
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
Oracle Cloud Infrastructure:2022年4月度サービス・アップデートOracle Cloud Infrastructure:2022年4月度サービス・アップデート
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
 
Oracle Cloud Infrastructure データベース・クラウド:各バージョンのサポート期間 (2022年4月版)
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間 (2022年4月版)Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間 (2022年4月版)
Oracle Cloud Infrastructure データベース・クラウド:各バージョンのサポート期間 (2022年4月版)
 
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
 
Oracle Cloud Infrastructure:2022年3月度サービス・アップデート
Oracle Cloud Infrastructure:2022年3月度サービス・アップデートOracle Cloud Infrastructure:2022年3月度サービス・アップデート
Oracle Cloud Infrastructure:2022年3月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年2月度サービス・アップデート
Oracle Cloud Infrastructure:2022年2月度サービス・アップデートOracle Cloud Infrastructure:2022年2月度サービス・アップデート
Oracle Cloud Infrastructure:2022年2月度サービス・アップデート
 
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
 
Oracle Cloud Infrastructure:2021年12月度サービス・アップデート
Oracle Cloud Infrastructure:2021年12月度サービス・アップデートOracle Cloud Infrastructure:2021年12月度サービス・アップデート
Oracle Cloud Infrastructure:2021年12月度サービス・アップデート
 
【旧版】Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年12月版]
【旧版】Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年12月版]【旧版】Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年12月版]
【旧版】Oracle Gen 2 Exadata Cloud@Customer:サービス概要のご紹介 [2021年12月版]
 

Último

Último (10)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Helidon 概要

  • 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

Notas do Editor

  1. まず、Helidoの具体的な話に入る前に、 マイクロサービスに対する認識にはかなり個人差があると思いますので、まずは少なくともこのセッションの時間で共通する「マイクロサービスってこんなもの」 という認識合わせをして、そこから「マイクロサービスを構築するために使われる開発フレームワークの要件」みたいなものを考えていきたいと思います。 そこで引っ張り出してきたのが、古典といってもいいでしょう、James Lewis/Martin Fowler による「microservices」という記事です。そこには「The microservice architectural style」ということで、マイクロサービスに特徴的なアーキテクチャの要素が列挙されています。 。。。 という風に、マイクロサービスとして一般的に語られている特徴が端的にまとまっているのではないでしょうか? で、これをひも解くと、次のような要件がマイクロサービス・フレームに求められるはずです。 。。。 はい、そして今日はHelidonについてのお話ですので、Helidonがこうした要件を果たして満たしているのかどうかをみていきましょう。
  2. Helidonには SEとMPという ふたつのエディションがあります。 ざっくりいうと、SEの方が超軽量、最近トレンドのリアクティブなフレームワークをベースにしています。 また、後述しますが、GraalVMを使ってネイティブ・イメージを作成できます。 MPは、SEをベースにして、Eclipse MicroProfileという規格に準拠したフレームワークの機能を提供します。 機能的にもSEよりリッチですし、これまでJava EEで開発をしてきた方には取り組みやすいフレームワークと言えます。
  3. Helidon SEの一つの特長は、GrralVMのネイティブイメージを作成できる点です。 (次ページに移って、もどる) なぜ、GraalVMのnative imageがそんなに注目されるのか その背景にはマイクロサービス特有の要件があるから。 すなわち K8s上で速やかにかつ多くのインスタンスをスケールアウトしたり、FaaSで高速にコールドスタートするような必要がでてくるケースなどです。 なので、起動時間の短縮や、メモリー使用量の削減が重要な要件となります スライド右側に通常のHotSpot VMとnative imageの比較があります 起動時間が劇的に短縮されていたり、メモリーのフットプリントが大きく減っているのがご覧いただけると思います (まとめ)このようにHelidon SEはGraalVMと組み合わせることによって、特にマイクロサービスに特徴的なユースケースにおいて、大きなメリットを生み出します
  4. ライセンス Apache 2.0 コミュニティ・サポート Slack、StackOverflow、GitHub Issues 商用サポート
  5. 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 ノン・ブロッキングなバックプレッシャー(流量)制御で非同期ストリーム処理をおこなうための標準仕様
  6. 実際のサーバーのコーディングは、このような感じです。 非常にシンプルに関数型のコーディングスタイルで書くことができます ご覧いただいているコードは、若干無理しているところもある感じですが、 (public static void main)の中の1ステートメントでWebサーバーの実装と 起動ができるくらいのシンプルさです。
  7. (MicroProfile …)をざっくり説明 ビジネスロジックを実装してRESTサービスとして公開するための主要機能に加えて CNCFで標準化されているような標準のJava実装のためのAPI マイクロサービスのデザインパターンやベストプラクティスを共通化して実装するためのAPI これらをフレームワークとしてまとめたもの 開発者はビジネスロジックに集中できる ベンダ独自仕様に縛られるようなロックインを回避できる Java EE/Jakarta EEと何が違うかというと、生態系が違うという感じ MPは、小さなサービスがたくさんあって、しかもいろいろな実行系・言語の混在状態であるような環境の中で動作することが前提になっている
  8. REST APIのロジックを実装する部分の話 Java EEから必要十分な仕様を持ってきていて、わかりやすく非常に強力な開発フレームワークになっている。 Java EEにJAX-RSというRESTアプリケーションを開発するための仕様があるが、これは普通のJavaのクラス(プロパティとメソッドをもったクラス)にアノテーションをつけるだけで、RESTサービス化することができる。 さらに、RESTはJsonフォーマットのデータをやりとりするが、そのあたりもJSON-Bという機能を使って、Javaオブジェクトにバインディングされるので、Jsonデータを直接扱う必要はない(あつかってもいいけど – JSON-P)
  9. 冒頭、マイクロサービス・フレームワークの要件についてお話をしましたが、このセッションを通じて、Helidonがクラウドネイティブ時代にふさわしいマイクロサービス・フレームワークであると皆さんに感じていただけたら幸いです。
  10. 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
  11. まず、セキュリティの部分ですが、Helidonは認証、認可に関するいろいろな機能をプロバイダという形で提供しています。 - HTTP系の各種認証機能 - MPにも規定がある、JWTを使った認可機能 - 外部のIdPと連携する方式としては、Google Login用の認証プロバイダやOpen ID Connect標準を使った認証プロバイダ - さらには、Oracle Identity Cloud ServiceのグループとRoleをマッピングする機能を提供しています ABAC – attribute based access control
  12. マイクロサービスとトランザクションに関しては既に多くの議論がある分野だと思いますが、 マイクロサービス間はともかく、単一のマイクロサービス内で行われる単一データソースに対するローカルトランザクションのニーズは相変わらず高いと思いますし、特にデータベースに対するデータ操作やコミットの制御、さらにコネクションのプーリングによるパフォーマンスの向上などは、必須の機能と思いますし、MicroProfileの規定にない部分でもある。 Helidon MPは、JPA/JTAというJava EE/Jakarta EE標準のAPIをサポートします コネクションプールとして、Hikari CPとOracle UCPが使えます その他、 キャッシュサーバーの機能を提供するRedis用のクライアントや、Oracle CloudのObject Storage用のクライアントを提供しています --- 実用に耐えるアプリケーションを書くとき、データをどこかに永続化したり、キャッシュしたりすることが必ず必要になる。 マイクロサービスは結果整合性や補償トランザクションという考え方が一般的ですが、これは一般的には複数のマイクロサービス間でおこなわれるトランザクションについての議論だと考えています。
  13. 拡張機能の最後は、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についても使えるようになっています。
  14. このスライドの後でデモ: