みなさんこんにちは、レッドハットでソリューションアーキテクトをしている暮林といいます。
今回の記事ではいろいろなサービスを接続してPoCをしてみたいアーキテクト向けに、Karavan Designerの紹介をしたいと思います。
- Karavan Designerとは?
- そもそも apache Camel Kとはなんぞや?
- DSLが書けない!
- そこでKaravan Designer!
- 早速つかってみる
- 3秒おきに「Hello World from Camel K!!!」とログに出すルートを書いてみる
- 次回予告 Atrlas Mapを組み合わせて実践的なPoCをする!
Karavan Designerとは?
ずばり apache Camel KのDSLをグラフィカルに書くためのツールです。VSCODEのプラグインとして利用したときはこんな見た目。
そもそも apache Camel Kとはなんぞや?
この記事が参考になります。 apache Camel Kの源流はapache camelプロジェクトです。 apache camelはDSLというプログラムと設定ファイルの中間ぐらいの言語を書くことで、あるサービスとあるサービスを糊のようにくっつけることができる便利な存在です。
DSLが書けない!
引用した記事で以下のようなDSLがあります。
from("timer:tick?period=3s") .setBody().constant("Hello World from Camel K!!!") .to("log:message")
Camel DSLは基本的に真っ直ぐな処理ルートを(いわゆる正常系)をつなげて書くので、大体の人が何となくよめるのが特徴です。このDSLは3秒おきにルートを起動して、"Hello World from Camel K!!!"をログにだすというものですね。
しかし!読めることと書けることには結構な距離があります。特に普段アプリケーションを書くことを主業としていない、アーキテクトやSREはなおさらです。(この記事を書いている私も書けません)
そこでKaravan Designer!
これまでにもCamel DSLを書くためのデザイナー的な存在はいくつかありましたがこれといった決定打がなく(失礼)、エンジニアは使い慣れたIDEで補完が使えるJava DSLをそのまま書く、というのはあるあるでした。
そんななかで2021年10月にプレビューリリースされたKaravan Designerは群をぬいて使いやすい印象です。なにせVSCODEのプラグインとして導入できるため、ファーストステップのハードルがとんでもなく低いです。
早速つかってみる
VSCODEのプラグインから「Karavan」を検索してインストールしてみてください。
次は空でいいのでVSCODEからフォルダひらきましょう。フォルダを開いていないとKaravan Designerをひらくメニューが出ません。
開いたフォルダを右クリックなどからサブメニューをひらくと、Karavan: Create YAMLがあるのでクリックしてください。
画面上部にファイル名を入れるダイアログがでるので「hello」とでも入れてエンターを押してください。
デザイナーが開けば準備完了です。
3秒おきに「Hello World from Camel K!!!」とログに出すルートを書いてみる
真ん中にデカデカとそびえたつ黄色いボタンをプッシュして新しいフローをつくります。
このようにいろいろなパブリッククラウドのリソースをルートの開始にとれることがひと目で見えてワクワクしますが、流れ出る涎をこらえて右上の検索ボックスに「timer」といれてください。(この時点でブログ離脱してあれこれしはじめてもOKです)
なんの面白みもないTimerソースがでてきましたので、クリックしましょう。
こんな状態になったことでしょう。Timerを開始としたつまらない何かができそうですね! 何やら右側にパラメーターが見えています。
はてなマークをクリックするとこのように、つまらないTimerソースのパラメータの解説をしてくれます。いちいちこんなつまらないソースについてぐぐりたくないので、とても助かりますね。
このようにいれてみました。Content Typeはデフォルトが text/plainなので放置します。
この時点ででここまで書けたことになります。次はログ出力ですね。
from("timer:tick?period=3s") .setBody().constant("Hello World from Camel K!!!")
ルート上の+ボタンを押すと、再度テンションがあがる一覧がでてきますが、涙を飲んで右上に「log」と書いて「Producer」タブを押してください。
このようにログ出力のStepが追加されました。何やら右側に赤いアスタリスクが見えますね。
もとのDSLをリスペクトしてmessageと入れましょう。ただのロガーの名前なので何でも良いです。(12/14現在若干センシティブな話題)
これで完了です。できあがったルートの中身をみるためにフォルダから「hello.yaml」をクリックしてみましょう。
このようなCamel KのYAML形式のDSLができています!
- from: uri: 'kamelet:timer-source' steps: - to: uri: 'log:message' parameters: period: 3000 message: Hello World from Camel K!!!
実行自体についてはDesigner紹介の本論からはずれてしまうので扱いませんが、JBangという仕組みをつかって簡単にローカル実行することもできます。 JBangについてはこのあたりをどうぞ。
次回予告 Atrlas Mapを組み合わせて実践的なPoCをする!
こんなつまらないルートではCamel KそのもののPoCしかできないじゃないか!とお怒りの言葉をいただきそうなので、次回予告をしておきたいと思います。
もっと実践的なこんなルートについて掘り下げていきます。apache KafkaのTopicを読んで、何らかの編集をして別Topicに戻すというルートです。イベントドリブンアプリケーションの肝オブ肝です。
現実的なルートでは、受け取ったメッセージをそのまま後ろにパスするのではなく、なんらかの編集が必要になるでしょう。ちょっと違うJSONの形に編集し直すようなケースです。
これはプログラムで書くにはまったくもって退屈な作業です。一般的にはETLツールが得意としている領域ですが、実はAtlas MapというOSSでGUIからマッピングが書けてしまいます。
AtlasMapは、もともとは実行可能jarをサクッとダウンロードしてローカル起動して、マップを書き終わったらファイルをエクスポートして終わるといったものでしたが、いまどきらしくVSCODEから起動することができるようになりました。(これもプレビューです)
次回はKaravan DesignerとAtlasMapを組み合わせて、ノーコードでapache KafkaのPoCができるような使い方の紹介をしたいとおもいます。 お楽しみに!