SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2023 セッションレポート(AD)

バッチ処理に代わる「ニアリアルタイム処理」とは? 作成方法から実践方法まで解説!

【9-B-5】バッチモダナイゼーション ニアリアルタイムってどんなもん?

  • X ポスト
  • このエントリーをはてなブックマークに追加

ニアリアルタイム処理を作成する方法

 バッチ処理をニアリアルタイム処理に置き換えるにはどうすればよいのか。ニアリアルタイム処理の作成は「データパイプラインを作ることから始まる」と暮林氏は言う。データパイプラインはバッチで作成するジョブフローと見た目は似ているが「違いがある」と暮林氏。ジョブフローが着目しているのはいかにジョブを正確に処理するかであり、「ジョブフローを管理はあくまで処理順序を制御しているだけで、特にデータの中身を見ていない。とにかく戻り値がゼロで返ってくればよく、細かいことをする場合は、アプリケーション側でジョブフローに合わせた処理を書かなければならない」と暮林氏は説明する。一方のデータパイプラインは、データが一つずつバラバラに送られていくので、データの中身を見ることができる。その中身によって分流や合流、待ち合わせという処理制御ができるのだ。「このように、データパイプラインが着目しているのはデータなんです」(暮林氏)

 ニアリアルタイム処理を簡単に作成する際にソリューションとしてレッドハットが推奨しているのが、Knativeである。Knativeはサーバレスのクラウドネイティブ・アプリケーションをビルドするためのコンポーネントを、Kubernetesに追加するエンタープライズレベルのオープンソースソリューション。2018年にGoogleによって設立されたプロジェクトで、その後、IBMやRedHat、VMware、SAPなどと緊密に連携して発展し、2022年3月2日にCNCF(Cloud Native Computing Foundation)のプロジェクトとして承認された。

 Knativeでできることは「ニアリアルタイム処理だけではない」と暮林氏は続ける。第一に、Kubernetesの拡張なので、CRD(Custom Resource Definition)でシンプルなYAMLにできること。次にサーバレスの仕組みとしてオートスケーリングを利用し、ゼロまでスケールダウン、ゼロまでスケールアウトができること。また、にニーズに合わせたロールアウト戦略もとれること。さらに、SaaSなど多数のソースからのイベントを抽象化してまとめて扱うイベント統合の仕組みもある。加えて、その抽象化したイベントをハンドリングするイベントハンドルの仕組みや、Kubernetes Nativeな拡張性(プラガブル)を有している。

 そしてもう一つ、ニアリアルタイム処理を作るためのソリューションとして暮林氏が紹介したのがKnativeで動くサーバレスコンテナプラットフォーム「Camel K」である。「起動時間の速いアプリケーションに向いている」(暮林氏)

 Camel Kのプラットフォームでは次のようなことができる。まずは相互接続。「Apache Camelのコンポーネントにより、クラウドネイティブなやり方ですべてを接続できます」(暮林氏)

 次にサーバレスなインテグレーション。第三にQuarkusをベースとしたランタイムでの高い効率性。またオーケストレーションも可能。「クラウドネイティブなインテグレーションパターンがすべてできる」(暮林氏)

 そのほか、Knativeだけではなく、Kafka、OpenShiftなどのさまざまな環境に自動的に対応できること、開発者フレンドリーであることなどの特徴を持つ。

 Camel Kを使うと開発がどのようにシンプルになるのか。それを表したのが次の図である。

図2. Camel Kによりシンプルになる開発の流れ
図2. Camel Kによりシンプルになる開発の流れ

最初のステップでは開発者が統合定義を作成。そして第二ステップで開発者がクライアントコマンドを実行して統合を実行する。さらに第三ステップでCamel Kオペレータが新しい統合リソースを認識し、自動的にビルドしてデプロイする、という流れだ。ニアリアルタイム処理がどのぐらいのオーダーなのか、その感覚をつかむため、暮林氏は処理に要する時間を計測する仕組みも入れてデモを実施。リハーサル時のコールド時が14秒(1.4×10の1乗)、ウォーム時は43ミリ秒(4.3×10の-2乗)に対して、デモでの実測値はコールド時がリハーサル時とほぼ同じ14秒。ウォーム時はすべて起動しているときは10の-3乗というオーダーで処理が実施された。ちなみにコールド時が遅いのは、スピンアップに1個あたり5秒弱かかるからである。またCamel Kで分岐や合流のパイプラインも容易に書くことができる。

 さらにYAMLを書くツールとして、暮林氏は「Karavan Designer」も紹介。Camel KによるIntegration DSLをグラフィカルにコーディングできるツールで、「Visual Studio Codeのプラグインとして利用するのが最も簡単だが、スタンドアローンで動くモノもある」と暮林氏は言う。

次のページ
現場で使える! 実践的なニアリアルタイム処理とは

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2023 セッションレポート連載記事一覧

もっと読む

この記事の著者

中村 仁美(ナカムラ ヒトミ)

 大阪府出身。教育大学卒。大学時代は臨床心理学を専攻。大手化学メーカー、日経BP社、ITに特化したコンテンツサービス&プロモーション会社を経て、2002年、フリーランス編集&ライターとして独立。現在はIT、キャリアというテーマを中心に活動中。IT記者会所属。趣味は読書、ドライブ、城探訪(日本の城)。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:レッドハット株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17482 2023/04/20 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング