継続的インテグレーション/継続的デリバリー(CI/CD)はソフトウェア開発の手法です。ここではその用語を借りて、ソフトウェアではなく、特に時間とともに絶えず変化し、システムの記録に継続的に統合する必要があるデータに適用しています。
いつも大胆に挑戦する私の例は、公共交通機関の車両位置情報のフィード(REST API経由でアクセス)を取得し、30秒ごとに更新されるこのデータをArcGIS Enterpriseポータルのホストされたフィーチャ サービスおよびSnowflakeの空間対応テーブルにプッシュすることです。高可用性が望ましいため、処理にはWebツールを使用します。
こちらは数分前(現地時間土曜早朝)のニュージーランド・オークランドのバス、電車、フェリーの位置情報です。
オークランドのバス、電車、フェリーの位置情報
私はおそらく継続的な大量データ統合頻度の極端な例で作業していますが、大多数の統合は数時間または数日の間隔で行われていると思います。ただ、何が達成可能かは少なくともわかるでしょう。
私の統合シナリオで少し遊ばせてください 😉。
例えば私がFako(架空の名前)で働いているとしましょう。Fakoはeコマースのファーストマイル/ラストマイル問題を解決しました。通勤ネットワークは乗客が買い手かつ売り手である場合、人々と小売商品を効率的に結びつけることができるとFakoは認識しています。輸送事業者と提携し、各車両の通路両側の座席数列をいくつか取り除き、インターネットショッピングを倉庫内の港湾ターミナル隣接施設で荷役人が“配達”できるスマートロッカーのグリッドに置き換えました。購入者は任意のウェブサイトから配達日とルートを指定して注文し、販売者は当社ウェブサイトで販売し、商品をネットワーク上どこへでも転送します。私たちは貨物運送業者です。Fakoのモバイルアプリでは顧客が旅行中いつでも自分の商品が入ったロッカーをスマホで解除できます。一部ロッカーは冷蔵対応で、自社ブランドのミールキットもあります。モバイルアプリの非常に人気な機能として放棄品オークションへの入札があります。Fakoは輸送事業者に商品1点あたり乗客運賃相当額を支払い、有効乗客数を大幅に増加させています。Fakoは配送車両 fleet を購入する必要がなく、輸送事業者は収益増加を得ています。ビジネスは好調です!
FakoのバックエンドシステムはSnowflake上で稼働しています。すべてを機能させるために、Fakoはネットワーク状況を空間対応Snowflakeオブジェクトとして継続的に維持する必要があります。さあ見てみましょう!
まず退屈な方法ですが、Windowsスケジュールタスクがサポートしない頻度を選んだため自分で除外した方法として、Spatial ETLワークスペースソースfmwをData Interoperabilityサーバーにコピーし、arcgisユーザーによる手動実行ログファイルに記載されたコマンドラインベースでスケジュールタスクを設定する方法があります:
このワークスペース実行用コマンドライン:
"C:\Program Files\ESRI\Data Interoperability\Data Interoperability AO11\fme.exe" C:\Users\arcgis\Desktop\ContinuousIntegration\VehiclePositions2Snowflake.fmw
この選択肢は状況によって慎重に検討してください。堅牢でシンプルです。
次に退屈でない方法です。先述したように、高頻度で一括更新されるデータを扱うことでこの方向へ進みました。統合処理を行い、その後ソースデータ更新まで待って自分自身を呼び出すWebツールを作成します。
なんと自分自身を呼ぶWebツール、webhookなしかつスケジューリングなし? とてもシンプル(多分ただ単にクレイジー)です。
私は2つのSpatial ETLツールを作りました。一つは本物でもう一つは何もしないダミーですが同じ名前とパラメーター(今回はなし)です。

ダミーバージョンVehiclePositions2SnowflakeをWebツールとして履歴アイテム共有し、submitJob URLを記録しました。Webツールは非同期であることが重要です。呼び出された際にレスポンス待ちでワークスペースがブロックされないようにするためです:
https://dev99999.esri.com/server/rest/services/VehiclePositions2Snowflake/GPServer/VehiclePositions2Snowflake/submitJob
次に本物ETLツールの最終HTTPステップでこのsubmitJob URLを呼び出すよう編集します。ツール実行後、その履歴アイテムからダミーWebツール上書きします。
ツール自体をご覧いただけますが、基本的には上流ストリームが車両データ取得とポータルおよびSnowflakeへの同期処理を行い、下流ストリームがこれら完了と30秒経過待機後HTTP呼び出しを行います。
自己統合型ETLツール
あとはWebツールを一度手動実行すればスタートし、その後無限に繰り返します。私はProマップ(フィーチャサービスレイヤーキャッシュなし)を更新しながら輸送 fleet の動きを見ています。
Snowflakeでもデータが更新されています:
Snowflakeコンソール
退屈な詳細ですが、Spatial ETLツールをWebツールとして公開する際にはData Interoperabilityが各ツールホスティングサーバーにインストール・ライセンスされている必要があります。またここで使っているようなWeb接続やデータベース資格情報の場合、「Tools>FME Options」ダイアログから必要な資格情報(右クリックメニュー)をXMLファイルとしてエクスポートし、それらファイルをサーバーへ配置してWorkBench環境へarcgisサービス所有者としてインポートしてください。サーバー上でワークスペース手動実行時にはPython環境変更も必要になる場合があります。最後にブログダウンロードにはFMWファイルがありますが、サーバーへ公開するツールには埋め込みソースが必要です。
さて、とても楽しかったです!