複雑な処理ストリームにおけるデータデバッグの課題
世界は、複雑な処理シナリオを定義するためにWorkflowsの概念を使用しています。このようなWorkflowsの特徴の一つは、多くのステップ(プロセス)がさまざまな条件に基づいて相互に接続されているため、非常に複雑になり得ることです。
データはこれらのWorkflowsを通過し、アクションをトリガーし、その内容や状態に基づいてさらに進められます。Workflowとそれを通過するデータが複雑であるほど、Workflowやデータ内の問題を見つけるのが難しくなり、望ましくない結果を招く可能性があります。
このようなシステムのほとんどは、情報を処理する方法においてブラックボックスです。入力を見て、反対側から出てくるものを見て、その間に何が起こったのかを理解しようとすることができます。また、デバッグ出力ステートメントをコードに追加してデータのスナップショットをキャプチャし、問題の根底にたどり着くこともできますし、すべてのデータをログにダンプして、それをブラウズし、点をつなげようとすることもできます。
これらはすべて非常に面倒で、イライラし、非常に時間がかかります。より良い方法があるはずです。
layline.io WorkflowsでのデータのSniffing
Workflowにデバッグ情報を吐き出させる代わりに、Workflowをコンピュータネットワークのように扱う賢いアプローチがあります。コンピュータネットワークでのデータの監視は、データがネットワークを通過する際にプローブ(「Sniffing」)されるため、侵襲的ではありません。つまり、データは自由に移動しますが、流れを妨げることなく、さらなる分析のために興味のあるポイントで拾われます。
layline.ioも同様に動作します。完全にタスクを実行している間にデータをプローブする個々のWorkflowsをサポートしています。以下では、これがどのように機能するかを説明し、その利点を見ていきます。
スニッファーセッションの開始
プローブは、WebベースのConfiguration Centerを通じて開始され、その結果が表示されます。プローブは、実行中の任意のWorkflowで開始できます。そのためには、"/Operations —> Audit Trail/"に移動してください。「Sniffer Sessions」と書かれたタブが表示されます。これを使用します:

Sniffer Sessionsは、その名の通り、データを収集し、事前に定義された量および/または時間の後に閉じるセッションを開きます。セッションの結果は保存され、結果を分析する時間をかけることができます。
新しいスニッファーセッションを開始するには、右側の小さな目のボタンをクリックする必要があります。これにより、新しいスニッファーセッションを定義するのに役立つダイアログが表示されます:

Workflowの選択
左側では、実行中のすべてのWorkflowsからWorkflowを選択できます。選択肢は次のとおりです:
- 一般的に: 実行場所に関係なくWorkflowをプローブ
- ノードレベル: 特定のノードで実行されているWorkflowをプローブ
- インスタンスレベル: 特定のノードで実行されているWorkflowの特定のインスタンスをプローブ
これにより、データをSniffingしたい正確な場所を細かく制御できます。特定のWorkflowを複数のノードとインスタンスで実行しているが、そのうちの1つのインスタンスだけに問題があるように見える場合を想像してください。ここでは、特定のインスタンスからのみデータをSniffingしたいと指定できます。
パラメータ
右側にはセッションパラメータがあります。セッションの個別の名前を追加したり、プローブしたいメッセージの最大数を設定したり、データをリッスンする時間制限を秒単位で設定したりできます。
トリガー
最後に、Sniffingを開始するタイミングを定義できます。飛んでくるメッセージを即座にSniffingするか、新しいストリームが始まるときにのみ開始するか、最初に応答するインスタンスから開始するかなどを選択できます。
スニッファーの実行
ダイアログで「OK」を押すと、Sniffingが開始されます。オープンスニッファーセッションが作成され、データを待ちます。以前の設定に応じて、セッションはプローブされたメッセージの希望数に達するか、最大期間のしきい値に達するまで開いたままになります。


メッセージが届くと、そのメタデータがスニッファーウィンドウの右側に最新のものが上に来るようにリストされます。これには、時間、メッセージの種類、Sniffingされた場所(インスタンス)、ストリームの名前、そして非常に重要なことに、Workflowのどこでプローブされたか(場所)が含まれます。

Workflowのどこからメッセージが取得されるのか疑問に思うかもしれません。想像できるように、メッセージの内容はWorkflowのプロセッサを通過する際に変更されやすいです。では、データをプローブするのに最適な場所はどこでしょうか?最初、最後、途中のどこか?答えは、Workflowのすべての接続「ライン」にあります。これは、コンピュータ内ではなく、コンピュータ間の「ワイヤー」でSniffingするネットワーク上でのSniffingに類似しています。
layline.ioも同様に、Workflowのすべての接続ワイヤーで同じメッセージをSniffingし、Workflowを通過する際にメッセージを始めから終わりまで追跡できるようにします。
分析
結果リストからメッセージを選択すると、それがSniffingされた位置がウィンドウの下部セクションのWorkflowグラフに表示されます。オレンジ色の点線を確認してください。リストの他の場所で同じメッセージを選択すると、Workflowグラフの他の場所に表示されます。これにより、メッセージのすべての段階や処理を実際に確認し、同じメッセージへの潜在的な変更を比較することができます。
最後に、メッセージの中身を知りたいと思うでしょう。この目的のために、メッセージの先頭にある「+」記号をクリックしてメッセージ構造を展開し、含まれているすべてのデータを確認してください。

プロービングデータが保存されることに注意してください。これは、同じWorkflowで複数のプローブを実行し、複数のスニッファーセッション間で結果を比較したい場合に非常に便利です。
まとめ
通常、何百万ものメッセージからデータをデバッグし、プローブするという面倒な作業が、layline.ioによって非常に簡単になります。石炭の生産ラインのように、コンベヤーベルトから飛んでくるものをつかんで、製造プロセスを妨げることなく分析することができます。
かなりクールです。
リソース
- layline.ioについてもっと読むにはこちら。
- hello@layline.ioまでお問い合わせください。


