Alteryxのアーキテクチャ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

Alteryxにはいくつかの製品があります。 その中で、ワークフローの実行が可能な製品として

  • Alteryx Designer
  • Alteryx Gallery
  • Alteryx Server

があります。 今回は、これらがどのような仕組みで動いているのかについて解説します。

なお、Alteryx Connectについては性質が異なるため、今回の内容では割愛します。

ワークフローと実行エンジン

Alteryxでの処理が実行される上で、コアとなるものがワークフローを実行するためのエンジンである、「AlteryxEngine」と実行対象である「ワークフロー」となります。

arch1

ワークフローの実体はXMLファイルです。

そのため、ワークフローとして正しいXMLファイルを記述することができれば、Designerで作成したものでなくても仕組み的には実行可能です。 Automation add-onを利用すると、AlteryxEngineを直接呼び出すためのコマンドが利用可能になりますので、Designerの画面経由することなくワークフローの実行が可能になります。

arch2

プログラムの観点で言うと、

  • AlteryxEngineCmdはmain関数をもつエンリポイント
  • AlteryxEngineが実際の処理を行うライブラリ
  • ワークフローが引数として与えられる処理対象

となります。

Alteryx Designerでの動作

続いて、Alteryx Designerがここでどのように関わっており、どのような動作をするのか見ていきます。

Alteryx Designerの役割は以下の2つになります

  • GUIで作成したワークフローからXMLを出力する
  • 「Run Workflow」ボタンでワークフローを実行する

arch3

ワークフローはXMLを記述すれは作成できるとは言っても、Emacsなどのテキストエディタですべて記述するのは現実的ではありません。 そこで、GUIから直感的にツールを配置し、コネクションで接続すればその内容に相当するXMLを出力してくれるのがDesignerの役割になります。

Designer上でも生成されたXMLを確認することができます。

スクリーンショット 2017-10-19 14.56.28

XML内には各ツールのポジションなどの含まれており、DesignerはGUI上に配置されたツールからXMLを生成する役割と、読み込まれたXMLからGUI画面上でワークフローの見た目生成する機能を持っていることがわかります。

また、Run Workflowボタンが押された際には先ほどのAlteryxEngineCmdと同様にAlteryxEngineを呼び出してワークフローの実行を行います。 この際、Designer上で表示されているワークフローが実行の対象として自動的に指定されます。

順番は前後していまいましたが、DesignerとAutomation add-onの関係性としては以下のようになります。

  • DesignerはAlteryxEngineを呼び出してワークフローを実行する機能を有している
  • Automation add-onを使うことで、呼び出し部分のみを独立して利用することが可能になる

この他にもAutomation add-onでは、Serverの機能の1つであるスケジューラの利用も可能です。

Alteryx Serverでの動作

続いて、Alteryx Serverではどのような動きをするのか見ていきます。 Serverを構成するコンポーネントは以下のようになっています。

  • Gallery
  • Controller
  • Scheduler
  • Worker
  • Database

arch4

Serverで提供する機能は図中の破線より上部のユーザからアクセスするためのレイヤと、 破線からしたのバックエンドロジックを実行するレイヤ(こちらをService Layerと呼びます)に分かれます。

Galleryはさらに、WebUIを提供するレイヤとREST APIを提供するレイヤに分かれるようです。

arch5

WebUI上から行われた操作は実際のGallery上での各種サービスを提供するGallery SeverにREST API経由で実行されます。 また、REST APIを直接利用する機能もGalleryは提供しています。

Gallery上で実行したり、GalleryやDesignerからSchedulerに登録されたワークフローの実行を行う際は、 Controllerにジョブが投入されます。

Controllerに投入されたジョブはDatabase上にキューとして登録され、 実行可能なWorkerがキューからジョブを取得して実行します。

Workerでは、Automation add-onでも利用されているAlteryxEngineCmdを呼び出して、ワークフローの実行を行います。

また、Databaseの実体はSQLiteかMongoDBとなっています。

Alteryx Serverのスケール

Alteryx Serverの環境設定時に「Complete Alteryx Server」を選択することですべてのコンポーネントが単一の環境にインストールされます。 これらは、各コンポーネントを個別の環境に入れることで、Cotrollerを除いてスケールアウトさせることが可能です。

arch6

[gallery.alteryx.com]

(https://gallery.alteryx.com/)でもこのような形式が取られているようです。

なお、Alteryx Serverのインストール及び環境のセットアップについては以下をご覧ください。

おわりに

今回は、Alteryx DesignerとServerがどのように動いているのかを解説しました。

分析者視点では、AlteryxEngineの存在やServerのService Layerで動きに関しては知らなくても利用可能ですが、 大規模な組織でAlteryx Serverの利用を行っていくとこういった環境を作るために知識も必要になってくるかと思います。

参考資料

Alteryxのアーキテクチャの話は以下の動画で解説されています。