SlideShare a Scribd company logo
1 of 45
Senior Director
Oracle Corporation Japan
February 14th, 2020
Tadahisa Kotegawa
Developers Summit 2020 - 14-C-5 #devsumiC
クラウド・ネイティブ時代に最適なJavaベースの
マイクロサービス・フレームワーク
~ Helidonの実力を見極めろ!
2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の
目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコー
ド、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料
になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期について
は、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
3
古手川 忠久
日本オラクル株式会社 クラウドソリューション推進本部長
自己紹介
@tkotegaw
tkote
oracle-japan (Oracle Japan for Developers)
Oracle Cloud Hangout Cafe
(通称 おちゃかふぇ, #ochacafe)
クラウドネイティブな勉強会やってます
ochacafe.connpass.com
Copyright © 2020, Oracle and/or its affiliates |4
2020年2月3日 Oracle Cloud 大阪リージョン開設(サービス開始)を発表
IaaS/PaaS/SaaS全てのサービスを国内2つのリージョンで提供
テクノロジと
価格
データ・
プラット
フォーム
クラウド・セ
キュティ
テクノロジと
価格
データ・
プラット
フォーム
クラウド・
セキュティ
Oracle Cloud Infrastructure
Gen 2 Cloud
Oracle Cloud Infrastructure
Gen 2 Cloud
5
アプリケーションの開発・運用を支援するマネージド・サービス
Oracle Cloud Native Services
Monitoring EventsStreaming
Observability + Messaging
API Gateway
Container
Engine for
Kubernetes
Resource
Manager
Cloud
Infrastructure
Registry
Functions
Notifications
Application Development + Operations
Logging
(Coming Soon)
OCIが提供する性能、セキュリ
ティ、高可用性を兼ね備えたマ
ネージドKubernetesサービス
(CNCF認証)
コンテナイメージを格納する高
可用性なプライベート・コンテ
ナ・レジストリ
インフラリソース運用の自動
化を可能にするIaCプラット
フォーム(オープンソース
Terraformベース)
REST APIの作成、運用、保護、
監視が可能なフルマネージドな
APIゲートウェイサービス
実行時課金のフルマネージドな
サーバーレス実行環境 (オープン
ソースDocker/Fn Projectベース)
OCI上の様々なリソースのメト
リクスを監視、ダッシュボード
で閲覧、通知
ホスト、アプリケーションのロ
グ管理・検索・分析を行うプ
ラットフォーム (オープンソー
スFluentdベース)
大量の宛先に通知可能なメッ
セージ通知プラットフォーム
大量のデータストリームを処理
するフルマネージドな分散メッ
セージングサービス (Kafka互
換プラグインの提供)
OCI上のリソースの状態変化を
捉えOracle Functionsを始めと
するサービス間の連携を実現
6
5
4
3
2
1
Helidonのこれから
Helidonの拡張機能
Helidon MP - Eclipse MicroProfile準拠のサーバー・フレームワーク
Helidon SE - リアクティブ・スタイルの軽量マイクロフレームワーク
マイクロサービス・フレームワーク? Helidonとは?
Program agenda
6 まとめ
7
マイクロサービス・フレームワーク?
Helidon とは?
8
古典 “Microservices” から読み解いてみる
マイクロサービス・フレームワークの要件を考える
小さなサービス群の組み合わせ
個々のサービスは単独プロセスで稼働
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
The microservice architectural style
9
オープン・ソース (github.com/oracle/helidon)
• 2019/02/15 に1.0.0をリリース
マイクロサービスを開発するためのJavaライブラリの集合体
JVM上の単体アプリケーションとして動作
従来からの一般的なツール・基盤で開発&デプロイ可能
• Java SE, Maven/Gradle, Docker, Kubernetes, etc.
Helidon とは?
※ Helidonは ギリシア語でつばめ(swallow)を意味します
Docker Image
Kubernetes
Helidon jars
OS base image
Library jars
App classes
Pod Pod Pod
Replica Set
Java SE runtime
Helidon SE と MP
• マイクロ・フレームワーク
• 超軽量フットプリント
• 関数型
• Reactive Web Server
• GraalVM native image
• MicroProfile 3.2
• 軽量フットプリント
• 宣言型
• Java EEサブセット +
マイクロサービス関連機能
• GraalVM JIT compiler
Helidon MP
Helidon SE
CDI Extensions
フットプリント重視
機能性重視
互換性(MicroProfile準拠)重視
10
11
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
Helidon SE –
リアクティブ・スタイルの軽量マイクロフレームワーク
13
リアクティブ・スタイルで開発された軽量なマイクロフレームワーク
• 少ないスレッドで多くのコネクションをハンドル
• メモリー管理やコンテキスト・スイッチ等のオーバーヘッドを削減
Helidon SE
Security
● 認証
● 認可
● アウトバウンド対応
● 監査
● 拡張可能
Config
● 柔軟性の高い型付き設
定モデル
● 複数のソースを利用可
● 階層型モデル
● 動的な更新
● 拡張可能
Reactive Web Server
● Reactive APIを使った
シンプルな関数ルー
ティング・モデル
● Netty上に構築
● OpenTracing, Metrics
and Health Checks
● 静的コンテンツ
14
1ステートメントで起動できるREST APIサーバー
Helidon SE – 関数スタイルのシンプルなRESTサーバー開発
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)
15
GraalVM native image
高速起動・高速スケールが求められるユースケース(マイクロサービス、FaaS)に適する
• ランタイムの起動時間、及びプログラム実行初期のパフォーマンスの劇的な向上
• メモリフットプリントの削減
Helidon SE は GraalVM native image の作成をサポート
• Maven profileによるビルド - Helidon SE Quickstart を参照
- Local build (for the OS installed locally)
- Docker build (for Linux)
Helidon SE – GraalVM native image
export GRAALVM_HOME=<GraalVMのパス>
mvn package -Pnative-image
docker build -t helidon-quickstart-se-native -f Dockerfile.native .
+
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
SulongJS Ruby R
C C++
HotSpot
Compiler I/F
C2 (for Server)
Javaアプリ
Native
image
SubstrateVM
Javaアプリ
(マシン語)
シングルバイナリ
16
17
Helidon MP –
Eclipse MicroProfile準拠のサーバー・フレームワーク
18
PolyglotなMicroservices環境のなかで協調して動く(= Microservices各種仕様に
準拠する、 Microservicesのデザインパターンを実装する)Javaアプリケーショ
ンの開発に必要な機能を、フレームワークとして規定したもの。
開発者はビジネスロジックの実装に集中でき、効率的な開発ができる。
基盤となる実装は、MicroProfileプロバイダの品質維持・向上を期待できる。
Eclipse MicroProfile
OpenMetrics
OpenTracing
OpenAPI Circuit
Breaker
Bulk Head
Health
Check
19
Helidonは1.4で対応済
Eclipse MicroProfile 3.2 (Nov. 1st, 2019)
MicroProfile Config 1.3
MicroProfile Fault Tolerance 2.0
MicroProfile Health 2.1
MicroProfile JWT Authentication 1.1
MicroProfile Metrics 2.2
MicroProfile OpenAPI 1.1
MicroProfile OpenTracing 1.3
MicroProfile Rest Client 1.3
CDI 2.0
Common Annotations 1.3
JAX-RS 2.1
JSON-B 1.0
JSON-P 1.1
Java EE 8 由来MicroProfile 固有
Helidon MP Components
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
+
20
MicroProfile =
21
アノテーション を使ってPOJO(=普通のJavaクラス)をRESTサービスに
MicroProfileで実装するREST API
@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-BJSON-P
JAX-RS
JAX-RS
CDI
JAX-RS
JAX-RS
MicroProfile Config
22
MicroProfile Config 1.3
MicroProfile Fault Tolerance 2.0
MicroProfile Health 2.1
MicroProfile JWT Authentication 1.1
MicroProfile Metrics 2.2
MicroProfile OpenAPI 1.1
MicroProfile OpenTracing 1.3
MicroProfile Rest Client 1.3
MicroProfile 注目仕様のポイント解説
CDI 2.0
Common Annotations 1.3
JAX-RS 2.1
JSON-B 1.0
JSON-P 1.1
HelidonKubernetes
Grafana
Prometheus
Jaeger
Health
Metrics
OpenTracing
23
Kubernetesなどノードの状態を検査するプロセスに対してヘルスチェック情報を提供する
MicroProfile Health
@Liveness
@Readiness
public class MyCheck implements HealthCheck {
@Override
public HealthCheckResponse call() {
return HealthCheckResponse
.named(“myhealth")
.withData("process", process)
.state(true)
.build();
}
}
Annotation Path Function
@Liveness /health/live Liveness
@Readiness /health/ready Readiness
{
"outcome": "UP",
"status": "UP",
"checks": [
{
"name": "myhealth",
"state": "UP",
"status": "UP",
"data": {
"process": "1@4f45aa39618d"
}
}
]
}
HealthCheckインターフェースを実装したクラスに
@Liveness and/or @Readiness
アノテーションをつける
Output: 200 OK
24
Kubernetesのヘルスチェック機能と連携
• LivenessProbe
- ヘルスチェック失敗時、Podが再作成される
• ReadinessProbe
- ヘルスチェック失敗時、Serviceからのルーティングの
対象から外される(Podの再作成はされない)
MicroProfile Health (cont.)
apiVersion: v1
kind: Pod
metadata:
name: helidon-demo-mp
spec:
containers:
- name: api-helidon-container
image: helidon-demo-mp:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
livenessProbe:
httpGet:
port: 8080
path: /health/live
failureThreshold: 3
periodSeconds: 10
Service
Pod
(OK)
Pod
(NG) /health/liveが失敗すると
Podは再作成される
/health/readyが失敗すると
ルーティングから外される
25
Metrics = システムの健全性を測定するために使用される指標
Polyglot環境に適したモニタリングを可能にする
• JMX(Java Management Extensions)標準はJVMを前提にしているので不向き
ヘルスチェックとは異なる目的
• 長期的なトレンドの把握
• キャパシティ・プラニング、潜在的問題の早期把握
• スケジューリング・システムと連動したスケーリング
OpenMetrics
• CNCF(Cloud Native Computing Foundation)のサンドボックス・プロジェクト
• メトリック・データを公開するための仕様を策定
MicroProfile Metrics
# TYPE base_cpu_availableProcessors gauge
# HELP base_cpu_availableProcessors Displays the number of processors available
base_cpu_availableProcessors 2
26
Metricsの利用例 – Prometheus & Grafana を使った監視
PrometheusGrafana Helidon
/metrics
https://grafana.com/ https://prometheus.io/
メトリクスの監視・集計メトリクスの可視化
27
MicroProfile Metrics – アプリケーション独自メトリクスの取得
@ApplicationScoped @Path("/mymetrics")
public class MetricsResource{
@Inject @Metric(name="total")
Counter total;
private synchronized void countup(){
total.inc();
}
@Metered
@GET @Path("/blue")
public void blue(){ countup(); }
@Metered
@GET @Path("/green")
public void green(){ countup(); }
}
28
OpenTracing準拠の分散トレーシングのためのAPIを提供
JAX-RSアプリケーションは追加的なコードを必要としない
• 受信したリクエストのSpanを認識
• Spanを自動的にスタートし、リクエスト処理時に終了する
• (Clientとして)リクエスト送信時、自動的にSpanを挿入する/ Spanを開始し、完了後終了する
分散トレーシングとは?
• マイクロサービス環境で複数のサービスを経由して処理されるリクエストのサービス間の依存
関係やレイテンシーを可視化し、障害発生時の解析を容易にする
OpenTracing (opentracing.io) とは?
• CNCF(Cloud Native Computing Foundation)のインキュベーション・プロジェクト
• API仕様と複数言語のライブラリを提供
MicroProfile OpenTracing
29
(参考)The OpenTracing Data Model
https://opentracing.io/specification/
Demo : OpenTracing - JaegerによるSpanのトラッキング (1)
Oracle Container Engine for Kubernetes (OKE)
(pod) Helidon-demo-mp-0NordPort
(pod) Helidon-demo-mp-1
(pod) Helidon-demo-mp-2
(pod) Helidon-demo-mp-3
(pod) jaeger
Service
Service
Service
Service
ServiceNordPort
Browser
Port: 30080
(RESTAPI)
Port: 30086
(Jaeger UI)
トレース情報
30
mp-1
mp-2
mp-3
mp-1
mp-0
mp-0request
Jaeger UI
https://www.jaegertracing.io/
OSSの分散トレーシングシステム
Demo : OpenTracing - JaegerによるSpanのトラッキング (2)
31
JAX-RS Method
request
JPA Database
response
自動的に定義
されるSpan
明示的に定義
したSpan
JAX-RSリクエスト処理メソッドのSpan
JPAデータベース処理のSpan
32
Helidonの拡張機能
33
• JWT Provider
• HTTP Basic Authentication
• HTTP Digest Authentication
• Header Assertion
• HTTP Signatures
• ABAC Authorization
• Google Login Authentication Provider
• OIDC (Open ID Connect) Authentication Provider
• IDCS Role Mapping Provider
様々な認証・認可スキームに対応
Helidonが提供するSecurity Providers
Identity
Provider
Helidon
Open ID
Connect
認証シーケンス
Browser
OIDC (Open ID Connect) Authentication Provider
を使ったユーザー認証
user
scope
* IDCS = Oracle Identity Cloud Service
34
CDI extensions
• HikariCP data sources
• Oracle UCP data sources
• Jedis clients
• OCI Object Storage clients
• Java Transaction API (JTA) objects
Java Persistence API (JPA)のサポート
• JDBC Driver (DataSource) +
JTA Extension +
Hikari Connection Pool Extension +
EclipseLink JPA Extension
データの永続化/キャッシュが必要な場合に便利な機能
CDI extension = CDIのライフサイクルイベントを受け取って独自の実装を追加するための仕様
JPA = Javaオブジェクトをデータベースに永続化するための仕様
JTA (Java Transaction API) = トランザクションを管理するための仕様
Helidon MP
JDBC Driver
Java Transaction API
EclipseLink (JPA)
EntityApp
Hikari Connection Pool
application.yaml
persistence.xml
Helidon MPによるJPA/JTAサポート
35
gRPCのサーバー&クライアント実装を簡単に開発できる
SE、MP両エディションでサポート
• SE – リアクティブ・スタイル
• MP – POJO + アノテーション
• 従来からのProtobufサービス/スタブも利用可能
ペイロード・タイプは Protocol Buffers と Java Serialization をサポート
Security, Metrics, Health Check機能を提供
もちろんRESTサービスと共存(サーバー・ポートは別)
※現在はExperimentalのステータス
gRPC のサポート
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のコーディング例
protocでコンパイルした
メッセージオブジェクト
36
HTTP/2を利用したRPC(Remote Procedure Call)フレームワーク
• バイナリ・フレーム、双方向ストリーミング
データ・シリアライゼーションにProtocol Buffersを使用*
• (Jsonに比較して)転送データ量の削減
IDL(Interface Definition Language)によるスキーマ定義
• Polyglot環境におけるインターオペラビリティ向上
gRPC の仕組み
出典: What is gRPC?
https://www.grpc.io/docs/guides/
*gRPCでは他のシリアライゼーション方式も利用可能
→ HelidonはProtocol BuffersとJava Serializationをサポート
IDL
言語依存
コード
.proto
protoc
コンパイラ
C/C++, C#, Dart, Go, Java, Node.js,
Objective-C, PHP(Beta), Python, Ruby
37
Demo : Helidonで作るフロントエンド・アプリケーション
* Oracle JET = Oracle JavaScript Extension Toolkit
Open ID
Connect
REST / gRPC
Static Contents
ブラウザ
Oracle Identity Cloud Service (IDCS)
IDCSの提供するログイン画面
user
scope
Envoy
gRPC
Proxy
REST
(port: 8081)
Helidon
OIDC
Provider
JPA/JTA
Extension
Autonomous
Transaction
Processing
JDBC
gRPC Server
Demo Server App
gRPC
(port: 50051)
gRPC-Web
Oracle JET
Single Page App
38
Helidonのこれから
39
2020年2月5日に最初のマイルストーン・ビルド 2.0.0-M1 をリリース!
Roadmap - Helidon 2.0
Open Operating Systems
Cloud Native Environment
Java Microservices
Public Cloud Private Cloud
Hybrid Application and Environment
Management
Java 11 (Java 8サポートの終了)
Helidon MP GraalVM native image のサポート
HTTP Multipart / Reactive HTTP Client / Websocket
Helidon DB Client
MicroProfile Reactive Streams Operators
MicroProfile Reactive Messaging
• Kafkaコネクタの提供
コマンド・ライン・インターフェース
ライブ・リローディング
Verrazzanoのサポート
40
Rancherによるマルチ・クラスタ管理
アプリケーション・ライフサイクル管理
• Model - アプリケーションを記述
• Binding – Modelを環境にバインド
統合化された監視と管理
• モニタリング、ロギング
• ダッシュボード、アラート
分散トレーシング
• Kiali, Jaeger, Istio
CI/CD - GitLab, Jenkins等の利用
組み込みのセキュリティ機能
Roadmap - Verrazzano
Production ClusterDevelopment & Test Cluster
Open Operating Systems
Public Cloud Private Cloud Hybrid Cloud
41
まとめ
42
クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク
Helidonを使う理由
マイクロサービス環境に適したアプリケーションを効率的に作成できる
• SEとMPの二つのエディションを用意 – 要件に応じた使い分け
MicroProfileによる仕様標準化の恩恵、ロックインの回避
• Metrics, Health, OpenAPI, OpenTracingなどはノー・コーディングで利用可能
• 開発者はビジネスロジックの開発に専念できる
• ベンダーの健全な競争の下で、フレームワーク実装の品質向上が見込める
実際のプロジェクトで必要となる拡張機能の提供 – セキュリティ、データベース接続、etc.
多くの実績の中で育まれたJavaのエコシステムを活用できる
• IDE、ライブラリ、モニタリング・プロファイリング・デバッギング、etc.
• GraalVMの活用
43
Getting Started (公式ドキュメント とりあえず動かしてみる)
• https://helidon.io/docs/latest/#/guides/01_overview
Helidon MPのMicroProfile対応+拡張機能を一通り網羅したデモ
• https://github.com/oracle-japan/ochacafe-microprofile-demo
MicroProfile の詳細解説 (OCHaCafeのMicroProfileセッション資料)
• http://tiny.cc/ochacafe-mp-slide
Oracle Cloud Hangout Cafe (通称OCHaCafe – Cloud Native な勉強会、是非お越しを!)
• https://ochacafe.connpass.com
Helidonについてさらに詳しく知りたい・触りたい方は…
44
ご清聴ありがとうございました!
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!

More Related Content

What's hot

Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)NTT DATA Technology & Innovation
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~Shinji Takao
 
IoT と時系列データと Elasticsearch | Data Pipeline Casual Talk Vol.4
IoT と時系列データと Elasticsearch | Data Pipeline Casual Talk Vol.4IoT と時系列データと Elasticsearch | Data Pipeline Casual Talk Vol.4
IoT と時系列データと Elasticsearch | Data Pipeline Casual Talk Vol.4SORACOM,INC
 
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版Naoki (Neo) SATO
 
Oracle Coherence勉強会
Oracle Coherence勉強会Oracle Coherence勉強会
Oracle Coherence勉強会Toshiaki Maki
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートオラクルエンジニア通信
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計Kouji YAMADA
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
自律型データベース Oracle Autonomous Database 最新情報
自律型データベース Oracle Autonomous Database 最新情報自律型データベース Oracle Autonomous Database 最新情報
自律型データベース Oracle Autonomous Database 最新情報オラクルエンジニア通信
 
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年6月16日)
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年6月16日)はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年6月16日)
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年6月16日)オラクルエンジニア通信
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知るShuhei Fujita
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことBIGLOBE Inc.
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022Takayuki Shimizukawa
 

What's hot (20)

Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
 
IoT と時系列データと Elasticsearch | Data Pipeline Casual Talk Vol.4
IoT と時系列データと Elasticsearch | Data Pipeline Casual Talk Vol.4IoT と時系列データと Elasticsearch | Data Pipeline Casual Talk Vol.4
IoT と時系列データと Elasticsearch | Data Pipeline Casual Talk Vol.4
 
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版
 
Oracle Coherence勉強会
Oracle Coherence勉強会Oracle Coherence勉強会
Oracle Coherence勉強会
 
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
Oracle Audit Vault and Database Vault のご紹介
Oracle Audit Vault and Database Vault のご紹介Oracle Audit Vault and Database Vault のご紹介
Oracle Audit Vault and Database Vault のご紹介
 
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
自律型データベース Oracle Autonomous Database 最新情報
自律型データベース Oracle Autonomous Database 最新情報自律型データベース Oracle Autonomous Database 最新情報
自律型データベース Oracle Autonomous Database 最新情報
 
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年6月16日)
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年6月16日)はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年6月16日)
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年6月16日)
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
 

Similar to 【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!

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の世界オラクルエンジニア通信
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)オラクルエンジニア通信
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションDaisuke Masubuchi
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...Insight Technology, Inc.
 
MySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEMySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEyoyamasaki
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発Kazuki Nakajima
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 Takakiyo Tanaka
 
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]オラクルエンジニア通信
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework Microsoft
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発lalha
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践de:code 2017
 
Internet Explorer 10 概要と変更点
Internet Explorer 10 概要と変更点Internet Explorer 10 概要と変更点
Internet Explorer 10 概要と変更点Microsoft
 

Similar to 【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ! (20)

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の世界
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
 
MySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEMySQLドキュメントストアとCTE
MySQLドキュメントストアとCTE
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
 
Oracle no sql database cloud service overview202007
Oracle no sql database cloud service overview202007Oracle no sql database cloud service overview202007
Oracle no sql database cloud service overview202007
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
 
Mvc conf session_4_ono
Mvc conf session_4_onoMvc conf session_4_ono
Mvc conf session_4_ono
 
20110607
2011060720110607
20110607
 
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
 
Internet Explorer 10 概要と変更点
Internet Explorer 10 概要と変更点Internet Explorer 10 概要と変更点
Internet Explorer 10 概要と変更点
 
20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration
 

More from オラクルエンジニア通信

Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
Oracle Cloud Infrastructure:2023年5月度サービス・アップデートOracle Cloud Infrastructure:2023年5月度サービス・アップデート
Oracle Cloud Infrastructure:2023年5月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデートOracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
Oracle Cloud Infrastructure:2023年2月度サービス・アップデートOracle Cloud Infrastructure:2023年2月度サービス・アップデート
Oracle Cloud Infrastructure:2023年2月度サービス・アップデートオラクルエンジニア通信
 
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 Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデートOracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデートオラクルエンジニア通信
 
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月度サービス・アップデートオラクルエンジニア通信
 

More from オラクルエンジニア通信 (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年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデートOracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
 
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
Oracle Cloud Infrastructure:2023年2月度サービス・アップデートOracle Cloud Infrastructure:2023年2月度サービス・アップデート
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
 
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 Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデートOracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
 
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月度サービス・アップデート
 

Recently uploaded

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (9)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!

Editor's Notes

  1. オラクルクラウドを使ったソリューションの提案や展開を担当 デファクトスタンダードなクラウド技術に焦点をあてた勉強会「おちゃかふぇ」やってます Connpassのページ覗いて下さい、資料やtwitterのまとめのリンクがありますので、雰囲気わかってもらえると思います 次回は 2/28 OCHaCafe Premium :クラウド・アプリケーションのパフォーマンス
  2. $300の無料トライアルあります、Always Freeといって一生ただで使えるサービスもあります。 cloud.oracle.comからどうぞ
  3. 本日のアジェンダ セッションのアブストはMicroProfile押しで書いていたんですが、HelidonのMicroProfile対応の部分はHelidonの一部分でしかないので、本日はもうすこしHelidonの全体感をつかんでいただくように説明していきたいと思います。 まず最初に皆さんと認識のベースを合わせるために、マイクロサービス構築の構築に求められるフレームワーク側の要件ってどういうものなのかというお話をさせていただきます。 セッションのアブストはMicroProfile押しで書いていたんですが、そもそもHelidonって何よってところと、HelidonにはSEとMPの二つのエディションがあるので、その違いを最初にお話しをしてから、MPの方に話を進めていきたいと思います。 さらに、Helidonが備えているMicroProfile以外の機能についてお話をしたのち、最後のまとめをお話します。
  4. まず、Helidoの具体的な話に入る前に、 マイクロサービスに対する認識にはかなり個人差があると思いますので、まずは少なくともこのセッションの時間で皆さんと共有する「マイクロサービスってこんなもの」 という認識合わせをして、そこから「マイクロサービスを構築するために使われる開発フレームワークの要件」みたいなものを考えていきたいと思います。 そこで引っ張り出してきたのが、古典といってもいいでしょう、James Lewis/Martin Fowler による「microservices」というWebの記事です。そこには「The microservice architectural style」ということで、マイクロサービスに特徴的なアーキテクチャの要素が列挙されています。 。。。 という風に、マイクロサービスとして一般的に語られている特徴が端的にまとまっているのではないでしょうか? で、これをひも解くと、次のような要件がマイクロサービス・フレームに求められるはずです。 。。。 はい、ではここからHelidonがこうした要件を果たして満たしているのかどうかをみていきましょう。
  5. オープンソース、一周年 Javaライブラリの集合体 アプリケーションをHelidonのライブラリと一緒にビルドして、デプロイするスタイル 出来上がるものはJava SE VMで動作するアプリケーションと思っていい Maven/Gradleのような一般的なビルドツールを使える 普通のJava SEアプリと同様、そのままOS上に動かしてもいいし、Dockerイメージにもできるし、Kubernetesに載せることもできる
  6. Helidonには SEとMPという ふたつのエディションがあります。 ざっくりいうと、SEの方が超軽量、最近トレンドのリアクティブなフレームワークをベースにしています。 また、後述しますが、GraalVMを使ってネイティブ・イメージを作成できます。 MPは、SEをベースにして、Eclipse MicroProfileという規格に準拠したフレームワークの機能を提供します。 機能的にもSEよりリッチですし、これまでJava EEで開発をしてきた方には取り組みやすいフレームワークと言えます。
  7. ライセンス Apache 2.0 コミュニティ・サポート Slack、StackOverflow、GitHub Issues 商用サポート
  8. 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 ノン・ブロッキングなバックプレッシャー(流量)制御で非同期ストリーム処理をおこなうための標準仕様
  9. 実際のサーバーのコーディングは、このような感じです。 非常にシンプルに関数型のコーディングスタイルで書くことができます ご覧いただいているコードは、若干無理しているところもある感じですが、 (public static void main)の中の1ステートメントでWebサーバーの実装と 起動ができるくらいのシンプルさです。
  10. Helidon SEの一つの特長は、GraalVMのネイティブイメージを作成できる点です。 (次ページに移って、もどる) なぜ、GraalVMのnative imageがそんなに注目されるのか その背景にはマイクロサービス特有の要件があるから。 すなわち K8s上で速やかにかつ多くのインスタンスをスケールアウトしたり、FaaSでも 同じく 急速なトラフィック増加に対応したスケールアウトやコールドスタート時の時間短縮が求められるケースなどです。 なので、起動時間の短縮や、メモリー使用量の削減が重要な要件となります スライド右側にHelidon HotSpot mode(JITコンパイラモード)とnative imageの比較があります 起動時間が劇的に短縮されていたり、メモリーのフットプリントが大きく減っているのがご覧いただけると思います -- (まとめ)このようにHelidon SEはGraalVMと組み合わせることによって、特にマイクロサービスに特徴的なユースケースにおいて、大きなメリットを生み出します
  11. 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
  12. Helidon MP 今週、ちょうど ご存じの方はご存じとおもいますが、 MicroProfile準拠(compatible)とは何なんのかというかなり本質的な点に関して熱い議論がtwitter上でやられていまして、ここでは深入りしませんが、ここで申し上げておきたいのは、HelidonはMicroProfile完全準拠です。
  13. (MicroProfile …)をざっくり説明 もともとの始まりは、Java EEをマイクロサービス・アーキテクチャのために最適化させた軽量版仕様 Java EEにはFull Profile, Web Profileという言葉があるが、それと同じ文脈だったと思います。 ビジネスロジックを実装してRESTサービスとして公開するための主要機能に加えて 1)CNCFで標準化されているような標準のJava実装のためのAPI 2)マイクロサービスのデザインパターンやベストプラクティスを共通化して実装するためのAPI これらをフレームワークとしてまとめたもの 開発者はビジネスロジックに集中できる ベンダ独自仕様に縛られるようなロックインを回避できる -- Java EE/Jakarta EEと何が違うかというと、生態系が違うという感じ MPは、小さなサービスがたくさんあって、しかもいろいろな実行系・言語の混在状態であるような環境の中で動作することが前提になっている
  14. MicroProfileの1.0が2016年にリリースされたころはまさに右側にあるJavaEEの一部( CDI、JAX-RS、JSON-P)を切り出しただけの仕様だったが 年月を経るにつれ、左側にあるマイクロサービス標準に準拠した仕様が増えてきて、現在はバージョン3.2 Java EE由来の仕様は、主にビジネスロジックをRESTサービスとして提供するために必要なコアの機能を提供 一方、左側のMP固有の仕様は、 マイクロサービスに関連するオープン仕様(Open XX) や マイクロサービス構築の際に用いられるデザインパターンやベストプラクティスの類を規定としたもの が 中心となっている
  15. で、Helidon MPの中身がどうなっているか MicroProfileに準拠した仕様はもちろん MicroProfileには含まれていないが、アプリケーション開発にとって重要なJava EEの機能の一部(JPA/JTA データ永続化にかかわる仕様)を取り入れ さらに、gRPCのような今後メジャーとなっていくであろう標準への対応を先取りして提供している Helidonの各種機能は、個々モジュールとしてライブラリ化されているので、ビルド時に必要なライブラリだけ依存関係に入れてビルドすればよい。
  16. REST APIのロジックを実装する部分の話 Java EEから必要十分な仕様を持ってきていて、わかりやすく非常に強力な開発フレームワークになっている。 Java EEにJAX-RSというRESTアプリケーションを開発するための仕様があるが、これは普通のJavaのクラス(プロパティとメソッドをもったクラス)にアノテーションをつけるだけで、RESTサービス化することができる。 さらに、RESTはJsonフォーマットのデータをやりとりするが、そのあたりもJSON-Bという機能を使って、Javaオブジェクトにバインディングされるので、Jsonデータを直接扱う必要はない(あつかってもいいけど – JSON-P)
  17. 注目仕様として3つ上げました なぜ、この3つかかというと、全て外部のエージェント/サービスと連携してシステムのリジリエンシーやオブザーバビリティの向上に寄与する類のもので、まさにマイクロサービス的だといえるからです。
  18. 次はHealth Check機能です。 単純にそのサーバーが生きているかどうか、準備OKかどうかをyes/noの二択で答える機能です。 デフォルトの状態だとHelidonは Liveness – cpu使用率、ヒープ空き容量、デッドロックの有無 Readiness – 特になし、つねにUP HealthCheckインターフェースの実装クラスにLivenessもしくはReadinessのアノテーションをつけます、簡単。 Stateをtrueで返すかfalseで返すかで、状態をコントロールします
  19. この機能を実際にどう使うかということですが、様々な監視モジュールやエージェントがこのパスのRESTをたたいてヘルスチェックを行うことができる KuberenetesにはLivenessProbeとReadinessProbeというのがあって、この仕組みをばっちり使うことができる 200 OK 503 Service Unavailable
  20. システムの健全性を測定するための情報を取得するための仕様 ヘルスチェックとは異なる目的… 取得する情報は3つのスコープがあり -MPが必ず実装しないといけないbaseスコープ -MPベンダーが任意に実装するvendoerスコープ -アプリケーションが自ら定義するapplicationスコープ だいたいのものは、baseとvendorでかなりカバーできていると思う。さらに、Helidonであれば、CircuitBreakerの設定を行うと自動的にapplicationスコープのmetricsをエクスポーズしたりしあす。 Java EEではJMXという標準仕様があって、かっちりしたエコシステムが出来上がっていると思うが、 残念ながらJava EE/SEの世界に閉じたもので、マイクロサービスが前提としているPolyglotな世界で、NonJavaのアプリケーションとの共存は難しい、… ということで、マイクロサービス環境でJavaに閉じない共通的な監視情報提供を行うためのMetricsの仕様を定義している
  21. HelidonからエクスポーズされるMetricsは、Prometheus/Grafanaのようなツールを使って可視化することができます /work/Prometheus/promd.sh /work/Grafana/start.sh Prometheus: http://base.oci.kotegawa.com:9090 Grafana: http://base.oci.kotegawa.com:3000 mvn exec:java
  22. アプリケーション独自のメトリクスを取得する方法について いろいろやり方はあるが、一番簡単なのは、 Methodにアノテーションをつけると、自動的にそのメソッドのMetricsを取得することができる Metrics専用のオブジェクトをインジェクトして、プログラム的にオブジェクトを更新する このサンプルでは,,, @Metered をつけると、メソッドが呼ばれるたびにメーターがカウントされる totalというCounterオブジェクトがIngectされているが、blue()/Green()が呼ばれるたびにインクリメントされるようになっているので、この例ではtatalはblue()とGreen()のメソッドが呼ばれた合計値を表していることになる。 右のグラフは、そのメトリクスをGrafanaで可視化したもの
  23. 分散トレーシング: 分散されたシステムで処理されるリクエストを追跡(トレーシング)するためのもの マイクロサービスのような複数のサービスで構成されるシステム(分散システム)では、1つのリクエストが複数のサービスをまたいで処理されることにより、リクエスト全体の処理の流れを把握する(トレーサビリティ)ことが難しくなります。 トレーサビリティが低下することによって障害やリクエストのレイテンシーが悪化した際に、どのサービスに問題があるのかを見つけることも難しくなります。 このような問題をサービスの依存関係やサービス単位のレイテンシーを可視化することによって解決の手助けをするシステムを分散トレーシングシステムといいます。 OpenTracing: … MicroProfile OpenTracingはOpenTracing準拠の分散トレーシングのためのAPIを提供しますが、その大きな特徴はJAX-RSで実装したRESTサービスは何もしなくてももれなくトレーシング機能がついてくるということです。すなわち…
  24. 理解を助けるための補足ですが、OpenTracingではトレースの単位をスパンで定義します。コール・ツリーの形で観ていくとスパンからスパンへの呼び出しの関係が左側のように表現でき、時系列で表現すると右のように階層型に重なっていくように表現できる
  25. では、ここでOpenTracingが実際どのように動いて、可視化できるのか、デモをお見せしたいと思います Oracle Cloudで提供しているmanaged k8s環境であるOracle Container Engine for Kubernetes (OKE)の Kubernetesクラスタの上に、Helidonのポッドを4個デプロイして相互にRESTサービスを呼び合うようなリクエストを送ってみたいと思います。同時にJaegerのポッドをデプロイして、4つのHelidonのトレース情報がこのJaegerに集まるようにします。 これで、実際にJaegerでどう見えるかを確認してみましょう。 --- ここでのポイントは、 プログラムは一切にトレーシングについては、コーディングをしていない HelidonがHTTPのレベル、セキュリティのレベル、メソッドのレベルでトレーシング情報を自動で出している
  26. JAX-RSアプリケーションは追加的なコードを必要としないので、Helidonのデモでも、まったく何もしなくてもメソッドレベルのspanが表示されていたが、さらにコーディングで独自のスパンを定義することが可能 ここでは、JPAでデータベースをアクセスするSpanを定義している、JPAのコールの前後でスパンの開始・終了をコーディングしておけば、このスライドでみえるように、JPAの実行時間や付随する情報をトレースすることが可能
  27. ということで、MicroProfileに関するお話はここまでにして、 これからはHelidonが提供している拡張機能について説明していきます。 SEもMPもMicroProfileに必要な最低限の機能は提供していますが、現実世界で実用的なエンタープライズレベルのアプリケーションを作ろうと思った場合、セキュリティ機能やトランザクション機能のようなサポートが必要になります。 Helidonがこのあたりを、どうサポートしているのか、見ていきましょう。
  28. まず、セキュリティの部分ですが、Helidonは認証、認可に関するいろいろな機能をプロバイダという形で提供しています。 - HTTP系の各種認証機能 - MPにも規定がある、JWTを使った認可機能 - 外部のIdPと連携する方式としては、Google Login用の認証プロバイダやOpen ID Connect標準を使った認証プロバイダ - さらには、Oracle Identity Cloud ServiceのグループとRoleをマッピングする機能を提供しています ABAC – attribute based access control
  29. マイクロサービスとトランザクションに関しては多くの議論がある分野だと思いますが、 マイクロサービス間はともかく、単一のマイクロサービス内で行われる単一データソースに対するローカルトランザクションのニーズは相変わらず高いと思いますし、特にデータベースに対するデータ操作やコミットの制御、さらにコネクションのプーリングによるパフォーマンスの向上などは、必須の機能と思いますし、MicroProfileの規定にない部分でもある。 Helidon MPは、JPA/JTAというJava EE/Jakarta EE標準のAPIをサポートします コネクションプールとして、Hikari CPとOracle UCPが使えます その他、 キャッシュサーバーの機能を提供するRedis用のクライアントや、Oracle CloudのObject Storage用のクライアントを提供しています --- 実用に耐えるアプリケーションを書くとき、データをどこかに永続化したり、キャッシュしたりすることが必ず必要になる。 マイクロサービスは結果整合性や補償トランザクションという考え方が一般的ですが、これは一般的には複数のマイクロサービス間でおこなわれるトランザクションについての議論だと考えています。
  30. 拡張機能の最後は、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についても使えるようになっています。
  31. なぜgRPCへの期待が高まっているか まず第一にベースとなるプロトコルがHttp2であること http/1.1と違って、バイナリフレームを利用し、双方向ストリーミングも対応できます。 gRPCにもストリーミング形式のメッセージの送受信が規定されいる 第二に、データ形式にProtocol Buffersを使っていること 送信データをProtocol Buffersでシリアライズしてバイナリに変換させるため、送信データ量が少なくなり高速になります。 このProtocol Buffersで送受信されるメッセージのスキーマは IDLというスキーマ定義言語で記述されます このIDLスキーマをprotocコンパイラを使って、使用する言語用にコンパイルすると、その言語での実装に必要なメッセージデータの定義や送受信に必要なスタブなどが生成され、これを使ってプログラミングしてきます シリアライズで高速化 送信データをProtocol Buffersでシリアライズしてバイナリに変換させるため、送信データ量が少なくなり高速になります。 HTTP/2で高速化 gRPCを使えば、プログラマは意識することなくHTTP/2を利用できます。 これまでの主流であったHTTP1.1(REST-API)とHTTP/2の比較は下記資料で詳細かつ分かりやすくまとめられています。
  32. では、拡張機能を使ったデモをご覧いただきましょう。 Helidonはバックエンドのマイクロサービスを実装するためのフレームワークという前提でお話をしてきましたが、普通にSpringBootやTomcat/MVCで作ったアプリレベルのものも普通につくれちゃいますよという意味もこめたデモをお見せします。 UIはReactでもVueでなんでもいいですが、今回はOrale JET Javascript Extension Kit を使ってSingle Page Applicationを作ってみました。JETは弊社のクラウドサービスの大多数のUIで使われてます。HelidonはフロントにスタティックコンテンツとAPIを提供するだけ。 で、お見せするのは、 最初に、Oracle Identity Cloud ServiceをIdPにしたOpen Connect IDベースのSSO、OAuth認証といったほうがわかりやすいかもしれません 次に、フロントのREST CallからJPA/STA extentionを経由してAutonomous Transaction Processing データベース。自律型データベースと呼ばれています。CPUのコア数とストレージのサイズだけ指定したら、数分後にインスタンスが立ち上がって、あとはチューニングも要らないオートスケールもしてくれるOracle DBのサービスです。 で、3つめはgRPCなんですが、gRPCのGetting Startedに出てくるHello Worldサービスを、今回はブラウザから直接gRPCでcallしまおうということで、gRPC-WebというgRPCのJavascript実装を使って、ブラウザとHelidonの間をgRPCで接続しています。gRPC-Webも他の言語と同様、protoファイルをprotocでコンパイルすると、Javascriptのソースが生成されます。 HelidonのフロントにEnvoy proxyを置いて、通常のRESTサービス用のポートとgRPC用のポートに振り分けを行っています。このデモはもちろん全てOracle Cloudで動いています。 Javaでアプリケーションを書く場合、JSFに代表されるサーバーサイドでMVCをまわすイメージが強いと思いますが、そもそもHelidonはサーブレットすら提供していない。 HelidonはSPAのためのJavascript/スタイルシートを含むスタティック・コンテンツとAPIを提供することが仕事 で、このデモ、何ができるかというと、超シンプルで 左側、国際電話の国コードのデモ – JPA/JTAでデータベースアクセスをコーディング、JPAの下にはコネクションプールも実装されている 右側、gRPC Quick Startで出てくる簡単な文字列の送受信、(無理やりgRPCのメッセージ送受信を見せたいために)gRPC-WebというJavascript実装を使って、ブラウザと 手順) プライベートブラウジング ログインシーケンスの解説 ネットワークモニタを開く REST gRPC ついでに/openapi /metrics /health も見せよう
  33. Helidon MPでもGraalVMのnative imageの作成ができるようになります CDIの参照実装であるWeldをカスタマイズしたものを使っていて、native imageを作成できますけどCDI compatibleです。native imageをビルドする際に標準的なCDIのアプローチを使ってCDIの依存性を解決しています。 Helidon DB Client – ノンブロッキング、リアクティブなDBアクセス、Java SEでリアクティブ処理を行うためのFlow API(Publisher/Subscriber)を使った実装、JDBCとMongoDBをサポート Reactive Streams Operators /Reactive Messaging などのリアクティブ処理を実現するMicroProfileのオプショナル仕様のサポートと、さらにKafka Connectorの提供 CLIを使ってプロジェクトライブラリの依存関係の管理やデプロイターゲット毎(Docker imageやnative image)のビルド作業を効率化してくれる Verrazzano という聞きなれない言葉がでてきました – Oracleがこれからリリースする新しいソリューションの名前です。 --- CDI Extentionの実装方法について一つ注意点があります。CDIの起動シーケンスがnative imageのビルド時と実行時に分かれるため、ビルド時に接続する先のシステムの接続を確認したりするようなことはできません。 One of these restrictions is how a CDI extension behaves - the CDI startup sequence is separated - everything until deployBeans happens at build time, everything else (validateBeans, endInitialization) at runtime of the image.
  34. Verrazzanoは、Helidonと並行して進められているOSSプロジェクトです。 マイクロサービスのライフサイクルを考えた場合、様々な切り口(CI/CD、耐障害性、可観測性やロギング)での考慮点があり、またその各々に適したソリューションが存在する。現在、非常にたくさんのオープンソースベースのソリューションがあって、それを組み合わせて一つのシステム体系にしていくのはエンドユーザーの責任となっているが、これを実現・維持していくのは実際かなりしんどい。 Verrazzanoは、上記のような最新のテクノロジートレンドを取り入れ、オンプレミスやマルチクラウド環境を横通しして包括的なアプリケーションの開発からデプロイ・監視までのライフサイクル管理を実現するソリューションを提供する。 RancherによるKubernetesのマルチクラスタ管理 yamlを使ったアプリケーションと周辺サービスの宣言的定義 Prometes,Grafanaでの監視、Elastic stackを使ったログ管理 KeycloakでID&アクセス管理
  35. 冒頭、マイクロサービス・フレームワークの要件についてお話をしましたが、このセッションを通じて、Helidonがクラウドネイティブ時代にふさわしいマイクロサービス・フレームワークであると皆さんに感じていただけたら幸いです。