本番展開のヒント

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む7読むのに数分
  • ServiceNow® プラットフォームでアプリケーションのカスタマイズを開発する場合は、アプリケーションリポジトリを介してそれを本番インスタンスに展開します。このトピックでは、アプリケーションリポジトリからのアプリケーションのインストールと、ソースコントロールを使用した Git リポジトリからのインストールのトレードオフについて検討し、注意事項を示します。

    概要

    技術的には、ソースコントロールを使用して、Git リポジトリから本番インスタンスにアプリケーションを「展開」できます。これにより、意図しない結果が生じる可能性があります。

    用語集

    用語 定義
    メタデータまたはアプリケーションファイル sys_metadata レコードは ServiceNow 内の構成を定義し、アプリケーションにパッケージ化されています。これらのレコードは、インスタンスの動作を変更しますが、インシデントや CMDB レコードなどのデータは含まれません。(以下の注意を参照)
    スコープ対象のアプリケーション ServiceNow アプリケーションで、制限によってスコープ境界内の更新と操作のみを許可します。このメカニズムは、ほとんどの新規開発に使用されます。
    グローバルアプリケーション グローバルアプリケーションは、従来のグローバルスコープで開発されます。多くの場合、このスコープでの作業は、IT Service Management (ITSM) などの既存の ServiceNow アプリケーションのカスタマイズです。
    アプリケーションリポジトリ アプリケーションは通常、本番インスタンスでの展開のためにここで公開されます。アプリケーションリポジトリには個別のエンタイトルメントルールがありますが、ServiceNow Store と同様に動作します。
    ServiceNow ストア サードパーティ (ベンダー) アプリケーションおよび ServiceNow の公開済みアプリケーションのリポジトリです。ほとんどの顧客は Store に公開しませんが、そこからアプリケーションをインストールすることがよくあります。
    更新セット 連続する各インスタンスでの展開用にカスタマイズをパッケージ化する標準的な方法です。挿入、更新、および削除の増分コレクションが含まれます。
    デルタロード 以前のアンインストール/再インストールの方法ではなく、ソースコントロールからのみ変更されるため、ロードの最も効率的な方法です。
    スキーマ テーブルとテーブルの列の定義です。
    ロールバック 管理者は、選択したアプリケーションの最後のインストールをロールバックできます。ロールバックすると、初期インストールからすべてのコード、テーブル、ファイルの更新が削除されます。
    注:
    sys_metadata テーブルは、テーブル継承モデルを使用する ServiceNow プラットフォーム内のすべてのアプリケーションファイルの親テーブルです。メタデータのサマリ情報を表示するには、テーブル (sys_db_object レコード) の拡張テーブル (super_class) フィールドで示される方法で直接的または間接的に拡張される親テーブルやテーブルにアクセスします。sys_metadata テーブルのテーブル (sys_db_object) フォームにアクセスして、フォームの下部にある [スキーママップを表示] 関連リンクを選択することで、スキーマ全体を表示することもできます。スキーマが大きいため、レンダリングに時間がかかります。

    スキーママッピング

    スキーママップの目次

    インストールの場所

    ソースコントロールをインストールすると、進行中のカスタムアプリケーションの開発が容易になります。したがって、そのアプリケーションは、ストアアプリケーション [sys_store_app] テーブルの「インストール済み」アプリケーションとしてではなく、カスタムアプリケーション [sys_app] テーブルの「開発中」アプリケーションとして管理されます。どちらのテーブルも sys_scope の拡張であるため、どちらもスコープと同じ保護と制限を提供します。したがって、ソースコントロールの展開済みアプリケーションのインストールを検索するときは、システムアプリケーション [sys_app] テーブルと [アプリケーションマネージャー] ページの [開発中] セクションを参照してください。

    ServiceNow ストアまたはアプリケーションリポジトリからアプリケーションを展開するときに、インスタンスに同じアプリケーションの sys_app レコードを含めることはできません。2 つの展開モデルは相互に排他的です。どの時点でも展開モデルが変更された場合は、まず sys_app レコードを sys_store_app レコードに変換する必要があります。この操作の実行については、ServiceNow サポートにお問い合わせください。

    デルタロード

    ServiceNow Paris リリースより前は、ソースコントロールからのアプリケーションインストールがトリガーされると、「リモート変更の適用」機能を含むアプリケーション全体が常に削除されて再インストールされていました。デルタロード では変更のみが更新されるため、プロセスが大幅に簡素化されます。

    デルタロードのプロセスは、ソースコントロールからの変更を増分としてロードします。リモート変更を適用する場合、既存のテーブルや列は、リポジトリから削除されない限り削除されません。これにより、存在し続けているテーブルとフィールドのデータが保持されます。
    注:
    glide.source_control.allow_delta_loading_in_scopedapp プロパティを使用すると、Paris でデルタロードを無効にできます。ただし、これにより、アプリケーションを削除して再インストールする、より破壊的な動作に戻ります。Paris のグローバルアプリケーションでは、常にデルタロードが使用されます。
    次の表に、デルタロードを使用するインスタンスで予想されるさまざまな結果を示します。
    アプリケーションタイプ インストールソース パッケージにスキーマが存在するか スキーマにデータが含まれるか 他のアプリからの要求 (グローバル) データとスキーマの予想される結果
    スコープ対象 アプリケーションリポジトリまたはストア あり はい/いいえ 適用外 保持
    スコープ対象 アプリケーションリポジトリまたはストア なし はい/いいえ 適用外 保持
    スコープ対象 ソースコントロール あり はい/いいえ 適用外 保持
    スコープ対象 ソースコントロール なし はい/いいえ 適用外 削除
    グローバル ソースコントロール、アプリケーションリポジトリ、またはストア あり はい/いいえ はい/いいえ 保持
    なし はい なし 保持 (1)
    なし いいえ あり 保持 (2)
    ソースコントロール なし いいえ なし 削除 (3)
    アプリケーションリポジトリ なし いいえ なし 保持
    注:
    1:データベーススキーマとデータは保持されますが、デフォルトのグローバルアプリケーションに移動されます。
    注:
    2:データベーススキーマとデータは保持されますが、以前にこれらのファイルに対する要求を保持していたグローバルアプリケーションがインストールされている場合、そこに移動されます。それ以外の場合は、デフォルトのグローバルアプリケーションに移動されます。
    注:
    3:u_ プリフィックス付きのカスタム列にのみ適用されます。ServiceNow プラットフォームで作成された列は削除されません。

    スコープ対象のアプリケーションのソースコントロールで分岐を切り替える場合は、本番環境で十分に注意してください。現在の分岐で見つかるスキーマ要素がターゲットの分岐にない場合、関連するスキーマは削除され、含まれているデータはすべて破棄されます(データが存在する場合、グローバルアプリケーションはスキーマを削除しません)。

    更新セットの場合と同様に、デルタロードでは増分変更のサブセットのみを適用する必要があります。更新セットとは異なり、アプリケーションパッケージは完全なアプリケーションを表します。新しいパッケージに存在しないファイルは削除されます。これにより、機能が変更され、データが削除される可能性があります。アプリケーションリポジトリまたは ServiceNow Store からアップグレードされた更新セットとアプリケーションには、ファイルやスキーマを削除するための明示的な削除ペイロードが必要です。

    アプリケーションファイルが何らかの方法で動的に生成されている場合、アプリケーションに対する次のインストール/リモート変更の適用操作で、これらのレコードは削除されます。それらは、受信したアプリケーションパッケージには存在しないと見なされます。ローカルの変更をスタッシュすると、スタッシュコミットによってアプリケーションファイルを復旧できる場合がありますが、変更の結果としてデータが失われた場合、そのデータは復旧されません。
    注:
    sys_update_xml レコードを削除または抑制すると、動的生成ファイルはデルタロードによって削除されなくなります。ただし、このアクションは他の重大な結果や望ましくない結果をもたらす可能性があります。

    リポジトリを直接編集する (特にファイルを削除する) と、データの損失やカスケード削除などの重大な影響が生じる可能性があります。このアクションは注意して実行してください。