Karavan Designerの紹介!【いろいろPoCをしたいアーキテクト向け】

みなさんこんにちは、レッドハットでソリューションアーキテクトをしている暮林といいます。

今回の記事ではいろいろなサービスを接続してPoCをしてみたいアーキテクト向けに、Karavan Designerの紹介をしたいと思います。

Karavan Designerとは?

ずばり apache Camel KのDSLをグラフィカルに書くためのツールです。VSCODEのプラグインとして利用したときはこんな見た目。

https://camel.apache.org/blog/2021/10/camel-karavan-preview-release/karavan-vscode.png

そもそも apache Camel Kとはなんぞや?

この記事が参考になります。 apache Camel Kの源流はapache camelプロジェクトです。 apache camelはDSLというプログラムと設定ファイルの中間ぐらいの言語を書くことで、あるサービスとあるサービスを糊のようにくっつけることができる便利な存在です。

rheb.hatenablog.com

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」を検索してインストールしてみてください。

f:id:Tatsuyak9i:20211214112327p:plain

次は空でいいのでVSCODEからフォルダひらきましょう。フォルダを開いていないとKaravan Designerをひらくメニューが出ません。

f:id:Tatsuyak9i:20211214112515p:plain

開いたフォルダを右クリックなどからサブメニューをひらくと、Karavan: Create YAMLがあるのでクリックしてください。

f:id:Tatsuyak9i:20211214112724p:plain

画面上部にファイル名を入れるダイアログがでるので「hello」とでも入れてエンターを押してください。

f:id:Tatsuyak9i:20211214112811p:plain

デザイナーが開けば準備完了です。

f:id:Tatsuyak9i:20211214112941p:plain

3秒おきに「Hello World from Camel K!!!」とログに出すルートを書いてみる

真ん中にデカデカとそびえたつ黄色いボタンをプッシュして新しいフローをつくります。

このようにいろいろなパブリッククラウドのリソースをルートの開始にとれることがひと目で見えてワクワクしますが、流れ出る涎をこらえて右上の検索ボックスに「timer」といれてください。(この時点でブログ離脱してあれこれしはじめてもOKです)

f:id:Tatsuyak9i:20211214113225p:plain

なんの面白みもないTimerソースがでてきましたので、クリックしましょう。

f:id:Tatsuyak9i:20211214113450p:plain

こんな状態になったことでしょう。Timerを開始としたつまらない何かができそうですね! 何やら右側にパラメーターが見えています。

f:id:Tatsuyak9i:20211214113632p:plain

はてなマークをクリックするとこのように、つまらないTimerソースのパラメータの解説をしてくれます。いちいちこんなつまらないソースについてぐぐりたくないので、とても助かりますね。

f:id:Tatsuyak9i:20211214113947p:plain

このようにいれてみました。Content Typeはデフォルトが text/plainなので放置します。

f:id:Tatsuyak9i:20211214114154p:plain

この時点ででここまで書けたことになります。次はログ出力ですね。

from("timer:tick?period=3s")
  .setBody().constant("Hello World from Camel K!!!")

ルート上の+ボタンを押すと、再度テンションがあがる一覧がでてきますが、涙を飲んで右上に「log」と書いて「Producer」タブを押してください。

f:id:Tatsuyak9i:20211214114447p:plain

このようにログ出力のStepが追加されました。何やら右側に赤いアスタリスクが見えますね。

f:id:Tatsuyak9i:20211214114620p:plain

もとのDSLをリスペクトしてmessageと入れましょう。ただのロガーの名前なので何でも良いです。(12/14現在若干センシティブな話題)

f:id:Tatsuyak9i:20211214114919p:plain

これで完了です。できあがったルートの中身をみるためにフォルダから「hello.yaml」をクリックしてみましょう。

f:id:Tatsuyak9i:20211214115042p:plain

このような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についてはこのあたりをどうぞ。

rheb.hatenablog.com

次回予告 Atrlas Mapを組み合わせて実践的なPoCをする!

こんなつまらないルートではCamel KそのもののPoCしかできないじゃないか!とお怒りの言葉をいただきそうなので、次回予告をしておきたいと思います。

もっと実践的なこんなルートについて掘り下げていきます。apache KafkaのTopicを読んで、何らかの編集をして別Topicに戻すというルートです。イベントドリブンアプリケーションの肝オブ肝です。

f:id:Tatsuyak9i:20211214115533p:plain

現実的なルートでは、受け取ったメッセージをそのまま後ろにパスするのではなく、なんらかの編集が必要になるでしょう。ちょっと違うJSONの形に編集し直すようなケースです。

これはプログラムで書くにはまったくもって退屈な作業です。一般的にはETLツールが得意としている領域ですが、実はAtlas MapというOSSでGUIからマッピングが書けてしまいます。

https://www.atlasmap.io/images/datamapper.png

AtlasMapは、もともとは実行可能jarをサクッとダウンロードしてローカル起動して、マップを書き終わったらファイルをエクスポートして終わるといったものでしたが、いまどきらしくVSCODEから起動することができるようになりました。(これもプレビューです)

f:id:Tatsuyak9i:20211214120033p:plain

次回はKaravan DesignerとAtlasMapを組み合わせて、ノーコードでapache KafkaのPoCができるような使い方の紹介をしたいとおもいます。 お楽しみに!

rheb.hatenablog.com

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。