web-dev-qa-db-ja.com

データエンジニアとデザイナーの間で変更を同期するにはどうすればよいですか?

私はデータを処理してデータベースに書き込んでいます。これは、設計者の同僚がデータに取り組んでいます。

たとえば、同僚が視覚化で使用する新しい列を効率的に追加するにはどうすればよいですか?

私は、彼らが使用する「本番」出力と、結果を確認するために使用する「ステージング」出力を持っています。また、「本番」視覚化(Webサイトなど)と「ステージング」Vizもあります。

私は2つのオプションを考えています:

    • 新しい列をステージング出力に追加し、
    • 開発者に満足したら、この新機能(新しい列)を運用環境に導入します。
    • 次に、ある種のリリースノートを書いて、この新しいコラムが利用可能であることを同僚に警告します。
    • そして、視覚化のために開発/ステージング/プロダクションの役割を彼らに任せます。
    • この新しい列をステージング出力に追加し、
    • この新しいコラムが利用可能であることを同僚に警告し、
    • 彼らが開発者の役割を果たすことを待つ
    • 開発者の両方に満足したら、新しい列を起動しますand新しい視覚化を本番環境で

それぞれの方法には短所があるように見えるので、どうすればいいのか気になりません。

    • 少し遅いですが、私の同僚が私の機能を起動して視覚化に取り掛かるのを待つ必要があります
    • カラムを削除する場合は、運用中であるため、誰も使用しないように特に注意する必要があります。
    • 同期して展開する必要があります
    • 私の同僚はデータの変更に取り組んでいます。開発フェーズで使用している列の名前を変更する必要があるとしましょう。同僚は、視覚化のソースを更新する必要があります。
3
Be Chiller Too

2番目のオプションは、あなたが思っているよりも短所があります:

  • 同期して展開する必要はありません。データプロバイダーとして、互換性のない変更をデプロイしない限り、最初にデプロイできます。追加のフィールドによって互換性が損なわれることはありません。
  • 移動するターゲットで同僚が作業するのを防ぐには、インターフェイスの定義(この場合は、新しいデータベースフィールドの名前とタイプ)に同意し、開発中に再検討する十分な理由がない限り、そのままにしておきます。

したがって、妥当な一連のアクションは次のようになります(その新しいフィールドに対する実際の要求があると想定)。

  1. あなたとあなたの同僚はインターフェースについて同意します。
  2. ステージング環境では、最初はおそらくnullまたはデフォルト値が含まれるデータベースフィールドを定義します。
  3. あなたとあなたの同僚は並行して作業することができます。ある時点で、ステージング環境のデータに問題がないことを同僚に伝え、視覚化が機能するかどうかを確認できます。このフェーズでは、発生した問題を両方とも修正できます。
  4. 問題がなければ、新しい列を本番環境にデプロイできます。
  5. その後、同僚は新しい視覚化を本番環境にデプロイできます

主な要点は、最初に上位互換性のあるインターフェースについて同意し、次に同期が不要で、異なる環境で適切なシーケンス処理(つまり、インターフェースのインプリメンターがコンシューマーの前に準備されている必要がある)だけであるということです。どちらも機能のデプロイとそれでの作業に関心があるため、本番環境へのデプロイは、非常に短い期間で継続する可能性が高いです:-)

4

これは依存関係の管理についてです。デザイナーはあなたの変更に依存しています。簡単に言うと、このプロジェクト/製品を管理している人は誰でもこれらの依存関係を認識し、影響を受ける関係者が同期を保つことができるように適切なスケジュールを立てる必要があります。

管理職がいない場合は、同僚と連絡を取り合うだけで、変更とその変更を協調して行うことができます。

アプリケーションのコンシューマ(依存者)が誰であるかを示し、変更の同期を維持するために、ここにドキュメント(おそらく高レベルのシステム図)があると役立ちます。

3
Jon Raynor