Slide 1

Slide 1 text

Camel Kとは? 1 次世代のインテグレーションのためのフレームワーク 杉本 拓 (Taku Sugimoto) Application Services Red Hat 株式会社

Slide 2

Slide 2 text

Source: https://camel.apache.org/ Apache Camelとは? 2 ▸ インテグレーションのための強力なオープンソースのフレームワーク ▸ 340を超えるコンポーネントで様々システムとの連携が可能: Salesforce, AWS S3 ストレージサービスなど ▸ 様々なデータフォーマットとプロトコルに対応: AMQP, HTTP, SCPなど ▸ Enterprise Integration Patterns (EIP)を活用したインテグレーションのソ リューションの設計と開発が可能 ▸ よく使われるパターンの例: Content-based router, Splitter, Aggregatorなど ENTERPRISE INTEGRATION

Slide 3

Slide 3 text

Source: https://files-dist.s3.amazonaws.com/AnnualReports/FY2019+Annual+Report.pdf Apache Camelのコミュニティ 3 ▸ オープンソースのインテグレーションソフトウェアとしては最大かつ最も活発なコ ミュニティ ▸ 600人以上のコントリビューター ▸ 3800以上のプルリクエスト (ほぼ外部のコントリビューター) ▸ 13年以上継続的に開発が続く、Apacheのプロジェクトでも最も活発なものの一つ ENTERPRISE INTEGRATION

Slide 4

Slide 4 text

4 ? 殆どのシステムとの連携が 可能 インテグレーションパター ンのベストプラクティスを サポート クラウドでもそうでない環 境でも動作可能 簡単な言語で開発が可能: XML, YAML, Javaなど from(“kafka:topic”) .to(“grpc:endpoint”) Apache Camel Camel 概要 ENTERPRISE INTEGRATION

Slide 5

Slide 5 text

Kubernetes スタンドアローン Quarkus Camel K Kamelets Kamelet Bindings Camel Core + Extensions for Quarkus Apache Camelの構造と対象ユーザ ENTERPRISE INTEGRATION Quarkus Camel Core + Extensions for Quarkus SB/Karaf/EAP* Camel Core + Components 一般的なインテ グレーションの 開発者向け データ&インテグレー ションのエンジニア向け すぐに利用可能な 構成要素 開発者による 制御が可能 + 抽象化のレベル - 5 SB/Karaf/EAP* Camel Core + Components Notes: Spring Boot, Apache Karaf and Red Hat JBoss Enterprise Application Platform (EAP) are only supported when using Camel 2 through Fuse 6.x and Fuse 7.x. Camel extensions for Quarkus are currently Technical Preview Spring Boot will be supported with Camel 3 around H2CY22

Slide 6

Slide 6 text

Camel K ENTERPRISE INTEGRATION 6

Slide 7

Slide 7 text

Camel K in a nutshell CamelによるインテグレーションをKubernetes上で簡単に実現 K > kamel run roll-die.js ▸ ソースコードは1ファイル ▸ CLIコマンド1つで実行 from("platform-http:/roll-die") .setBody() .simple("roll: ${random(1,6)}") ENTERPRISE INTEGRATION webサービス roll-die.js

Slide 8

Slide 8 text

▸ OpenShiftとKubernetes上でインテグレーションをサーバーレスで動作 させることが可能なプラットフォーム ▸ KubernetesのCRDとオペレータの仕組みをベース ▸ コミュニティーベースのプロジェクト ▸ Apache Camelのサブプロジェクトとして、2018/8/31にスタート Camel Kとは? ENTERPRISE INTEGRATION K

Slide 9

Slide 9 text

? ? ? ? Troubleshooting Spring Boot Apps Spring Boot Apps コンテナ化 Docker Linux Container Application Server JavaEE OSGi ビルド WAR/JAR Service Deployment DeploymentConfig ConfigMap Spring Boot Apps Java Main Quarkus 9 インテグレーションをコンテナ化する際に発生する課題 ENTERPRISE INTEGRATION

Slide 10

Slide 10 text

▸ Kubernetes/OpenShift上で直接インテグレーションを実行 ▸ ランタイムとしてQuarkusを使用可能 ▸ Knativeが利用可能な環境ではサーバーレスで実行可能 ▸ Kubernetesのオペレーターをベース ▸ Camelの依存関係は自動的に処理 ▸ デプロイ前のDockerやS2Iの設定が不要 Camel K ENTERPRISE INTEGRATION 10 Kubernetesネイティブのインテグレーション

Slide 11

Slide 11 text

Camel K ENTERPRISE INTEGRATION 11 Camel Kのプラットフォームでできること クラウドネイティブなインテグレーションパ ターン (EIP) オーケストレーション 様々な環境 (Knative, Kafka, OpenShift, Kubernetes, Service Binding, etc) に自動 的に対応 様々な環境に対応 相互接続 Apache Camelのコンポーネントにより、ク ラウドネイティブなやり方ですべてを接続 サーバーレスなインテグレーション イベントドリブンなサーバーレスのアプリ ケーション (source/sink) を自動スケール (0にスケールも可能) Quarkusをベースとしたランタイムで高い効率 性 高効率 ライブコーディング、簡単な設定 開発者フレンドリー

Slide 12

Slide 12 text

Camel Kによりシンプルになる開発の流れ 作成 ファイル 起動 CLIツール 実行 on OpenShift $ kamel run integration.yaml 1 2 3 ENTERPRISE INTEGRATION 12 from(“knative:channel/xxxx”) .transform()... .to(“kafka:topic”) from(“kafka:topic”) .to(“http:my-host/api/path”)

Slide 13

Slide 13 text

開発にフォーカスすることを可能にする Camel K 13 "開発者とCamel Kプラットフォームのシームレスなエクスペリエンス" 開発者 開発者: 1. シンプルでステートレ スなコードスニペット の作成 開発者: 2. コードのファイルをプッシュ プラットフォーム: 3. コンパイル, ビルド, パッ ケージ プラットフォーム: 4. デプロイ, リソースの 作成と設定 プラットフォーム: 5. スケールのポリシーの適用 やイベントメッシュへの接続 ENTERPRISE INTEGRATION

Slide 14

Slide 14 text

Camel Kのアーキテクチャ クラウドネイティブな開発体験に最適化 ● クラウドでのライブコーディング ● コンポーネントの依存関係を自動的 に管理 ● 短時間でのデプロイとインクリメン タルなアップデート ● クラウドリソースを自動的に生成 ● 柔軟なカスタマイズ性 ENTERPRISE INTEGRATION Integration Custom Resource Camel K operator OpenShift Serverless Serverless O↔N 開発者 14

Slide 15

Slide 15 text

CAMEL K OPERATOR Camel K Operatorでのリソースの記述 ● ランタイムの選択 ○ Quarkus ● プロジェクトのスキャフォールド ● 必要なコードの追加 ○ コンテナの振る舞い ○ サーバーレスの振る舞い ○ 監視の設定 ● 依存関係の追加 ● コンテナイメージの作成とインクリ メンタルなアップデート ● OpenShift/Knative リソースの作成 ○ Secrets ○ Service ○ Config Map ○ Deployment ○ Ingress ENTERPRISE INTEGRATION Camel K Operatorによる開発と運用の簡素化 15 (*) https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.9/html-single/operators/index OpenShift Operator (*) の仕組みを 使うことにより、Camel K アプリ ケーションの運用の自動化が可能

Slide 16

Slide 16 text

Analyze Integration Custom Resource Observe Act Serverless O↔N Camel K Operator ENTERPRISE INTEGRATION https://camel.apache.org/camel-k/latest/architecture/operator.html Camel K OperatorによりCamel DSLで記述されたインテグレーションロジック は、アプリケーションとしてインストールされ、状態がモニタリングされつつ、 サーバーレスアプリケーションとして処理の実行が可能

Slide 17

Slide 17 text

Integration Custom Resource Observe Live Update on update クラウドでのライブコーディング (dev モード) ENTERPRISE INTEGRATION devモードを使用することで、Camel DSLを記述したインテグレーションのカス タムリソースファイルを更新すると、Camel K Operatorが変更を検知し、動的 にCamel Kのコンテナにその変更を反映

Slide 18

Slide 18 text

Camel Kと次世代のインテグレーションを実現する構成要素 18 Quarkus + K = + Camel K Camel Operator ENTERPRISE INTEGRATION インテグレーショ ンのための強力な フレームワークで あるApache Camel サーバーレスに最 適な高速軽量なア プリケーションラ ンタイムである Quarkus アプリケーション の運用を自動化す る Camel K Operator 次世代のインテグ レーションを実現

Slide 19

Slide 19 text

Camel Kで利用可能なクライアント 19 “kamel” CLI Camel DSL (YAML) ENTERPRISE INTEGRATION Console “oc” CLI “kubectl” CLI Integration Custom Resource Camel DSL Camel DSL Camel Kのインテグレーションファイルは様々なクライアントから実行可能

Slide 20

Slide 20 text

linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat 20 Thank you