Dataiku アプリケーションデザイナー利用時のプロジェクト運用ベストプラクティスについて

Sendi
Sendi Partner, Registered Posts: 3 Partner

こんにちは。Dataiku のアプリケーションデザイナーを使ったプロジェクト運用について質問させてください。

アプリケーションデザインで作成したアプリは、元となる通常プロジェクトとは別プロジェクトとして作られる認識です。プロジェクトキーを新たに指定する必要があります。
その場合、フローに変更が入ったときには、

  • 元の通常プロジェクト
  • アプリケーションとして公開したプロジェクト

の両方を修正する必要が出てくると思います。

この点について、みなさんがどのように運用されているか、ベストプラクティスやおすすめのやり方があれば教えてください。
特に、次の 2 点について知りたいです。

  1. アプリ → 通常プロジェクトへの逆変換は可能か?
    通常は「通常プロジェクトをベースにアプリケーションデザイナーで設定し、アプリ(別プロジェクト)としてパブリックに公開する」という流れだと思います。
    その逆に、アプリケーションとして作られたプロジェクトをベースに、通常のプロジェクト(アプリではない形)に戻すことは可能でしょうか?
    もし可能な場合、その手順や注意点も知りたいです。
  2. 保守はすべてアプリ側で完結させる運用は現実的か?
    一度パブリックしたアプリケーションに対して、今後の改修や保守作業を、
    • 元となる通常プロジェクトではなく
    • アプリケーション側のプロジェクトのみで完結させる
      という運用は現実的でしょうか?
      そのような運用をされている方がいれば、メリット・デメリットや注意点も教えていただきたいです。

同様のケースを経験された方や、公式に近い推奨パターンをご存じの方がいらっしゃれば、ぜひご意見をいただけると助かります。よろしくお願いします。

Answers

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 328 Dataiker
    edited November 18

    Dataikuアプリケーションは、「アプリケーションデザイナーで作成したテンプレートから個別のインスタンスを生成して、異なる設定・実行を行うための機能」という位置付けになります。

    https://academy-content.dataiku.com/latest/automation/dataiku-applications/dku-apps/tutorial2-visual-apps.html?opals=true#convert-the-project-into-a-dataiku-app

    アプリケーションデザイナーの定義次第では、個別のインスタンス上でフローのカスタマイズを行うことも可能ですが、前述の通り「プロジェクトのテンプレートから個別のインスタンスを作成して、異なる設定で実行する」ことが目的であるため、その逆(個別のインスタンスでカスタマイズした内容を元々のプロジェクトに反映する)には対応していないことになります。

    考え方は上記のようになりますが、今回ご質問をいただいた内容(個別のインスタンスでカスタマイズを行い、その内容を元々のプロジェクトに反映したい)について、想定されているユースケースやそのような機能が必要な背景がございましたら、ご教示いただけますと幸いです。その内容によっては、もう少し調査やアドバイスなどできる可能性があると考えていますので、どうぞよろしくお願いいたします。

  • Sendi
    Sendi Partner, Registered Posts: 3 Partner

    ご確認ありがとうございます。

    私たちのユースケースと現状の課題を共有します。

    ■ 概要

    以下通り、親プロジェクトとアプリプロジェクトがあります。

    • 親プロジェクト(通常プロジェクト)
      毎月の売上データを処理するための “開発用” プロジェクト。
    • アプリプロジェクト(アプリケーションデザイナーでパブリッシュしたもの)
      親プロジェクトをベースにアプリデザイナーでパブリッシュしたプロジェクトで、
      ユーザーに実際使ってもらうのはこちらです。
      月次処理の実データはすべてこちらで蓄積されています。

    ■ 現在の課題

    1. データが親・アプリで完全に分離してしまう
      データセットのパスは下記のようにプロジェクトキーフォルダーに格納する仕組みになっています。
      /dataiku/${projectKey}/XXXXXXX実際に使う売上データはアプリ側に蓄積されるため、親プロジェクトは実データを持たない状態になっています。
    2. 親プロジェクトを修正するとアプリ再パブリッシュが必要になるが、データが初期化されてしまうアプリを再パブリッシュすると、アプリ側のデータセットがリセットされ、過去の積み上げデータが消えてしまうため、パブリッシュできない状況です。
    3. そのためアプリ側で直接フロー修正を行ってしまい、親プロジェクトのテンプレートとしての価値が失われているこのままでは親プロジェクトが古いまま固定され、将来的なメンテナンス性が危険な状態です。
    4. 親とアプリで同じデータセットを参照する方法も検討したが現実的ではない
      • アプリと親を同じデータセットに差し替える作業が煩雑
      • 親プロジェクト側のテスト実行で本番データを誤って上書きしてしまうリスクがある
      このため、データセット共有は安全性・作業効率の面から断念しています。

    ぜひ知見を共有いただけると大変助かります。

    よろしくお願いいたします。

Setup Info
    Tags
      Help me…