本番展開のヒント
ServiceNow® プラットフォームでアプリケーションのカスタマイズを開発する場合は、アプリケーションリポジトリを介してそれを本番インスタンスに展開します。このトピックでは、アプリケーションリポジトリからのアプリケーションのインストールと、ソースコントロールを使用した Git リポジトリからのインストールのトレードオフについて検討し、注意事項を示します。
概要
技術的には、ソースコントロールを使用して、Git リポジトリから本番インスタンスにアプリケーションを「展開」できます。これにより、意図しない結果が生じる可能性があります。
用語集
| 用語 | 定義 |
|---|---|
| メタデータまたはアプリケーションファイル | sys_metadata レコードは ServiceNow 内の構成を定義し、アプリケーションにパッケージ化されています。これらのレコードは、インスタンスの動作を変更しますが、インシデントや CMDB レコードなどのデータは含まれません。(以下の注意を参照) |
| スコープ対象のアプリケーション | ServiceNow アプリケーションで、制限によってスコープ境界内の更新と操作のみを許可します。このメカニズムは、ほとんどの新規開発に使用されます。 |
| グローバルアプリケーション | グローバルアプリケーションは、従来のグローバルスコープで開発されます。多くの場合、このスコープでの作業は、IT Service Management (ITSM) などの既存の ServiceNow アプリケーションのカスタマイズです。 |
| アプリケーションリポジトリ | アプリケーションは通常、本番インスタンスでの展開のためにここで公開されます。アプリケーションリポジトリには個別のエンタイトルメントルールがありますが、ServiceNow Store と同様に動作します。 |
| ServiceNow ストア | サードパーティ (ベンダー) アプリケーションおよび ServiceNow の公開済みアプリケーションのリポジトリです。ほとんどの顧客は Store に公開しませんが、そこからアプリケーションをインストールすることがよくあります。 |
| 更新セット | 連続する各インスタンスでの展開用にカスタマイズをパッケージ化する標準的な方法です。挿入、更新、および削除の増分コレクションが含まれます。 |
| デルタロード | 以前のアンインストール/再インストールの方法ではなく、ソースコントロールからのみ変更されるため、ロードの最も効率的な方法です。 |
| スキーマ | テーブルとテーブルの列の定義です。 |
| ロールバック | 管理者は、選択したアプリケーションの最後のインストールをロールバックできます。ロールバックすると、初期インストールからすべてのコード、テーブル、ファイルの更新が削除されます。 |
インストールの場所
ソースコントロールをインストールすると、進行中のカスタムアプリケーションの開発が容易になります。したがって、そのアプリケーションは、ストアアプリケーション [sys_store_app] テーブルの「インストール済み」アプリケーションとしてではなく、カスタムアプリケーション [sys_app] テーブルの「開発中」アプリケーションとして管理されます。どちらのテーブルも sys_scope の拡張であるため、どちらもスコープと同じ保護と制限を提供します。したがって、ソースコントロールの展開済みアプリケーションのインストールを検索するときは、システムアプリケーション [sys_app] テーブルと [アプリケーションマネージャー] ページの [開発中] セクションを参照してください。ServiceNow ストアまたはアプリケーションリポジトリからアプリケーションを展開するときに、インスタンスに同じアプリケーションの sys_app レコードを含めることはできません。2 つの展開モデルは相互に排他的です。どの時点でも展開モデルが変更された場合は、まず sys_app レコードを sys_store_app レコードに変換する必要があります。この操作の実行については、ServiceNow サポートにお問い合わせください。
デルタロード
ServiceNow Paris リリースより前は、ソースコントロールからのアプリケーションインストールがトリガーされると、「リモート変更の適用」機能を含むアプリケーション全体が常に削除されて再インストールされていました。デルタロード では変更のみが更新されるため、プロセスが大幅に簡素化されます。
| アプリケーションタイプ | インストールソース | パッケージにスキーマが存在するか | スキーマにデータが含まれるか | 他のアプリからの要求 (グローバル) | データとスキーマの予想される結果 |
|---|---|---|---|---|---|
| スコープ対象 | アプリケーションリポジトリまたはストア | あり | はい/いいえ | 適用外 | 保持 |
| スコープ対象 | アプリケーションリポジトリまたはストア | なし | はい/いいえ | 適用外 | 保持 |
| スコープ対象 | ソースコントロール | あり | はい/いいえ | 適用外 | 保持 |
| スコープ対象 | ソースコントロール | なし | はい/いいえ | 適用外 | 削除 |
| グローバル | ソースコントロール、アプリケーションリポジトリ、またはストア | あり | はい/いいえ | はい/いいえ | 保持 |
| なし | はい | なし | 保持 (1) | ||
| なし | いいえ | あり | 保持 (2) | ||
| ソースコントロール | なし | いいえ | なし | 削除 (3) | |
| アプリケーションリポジトリ | なし | いいえ | なし | 保持 |
スコープ対象のアプリケーションのソースコントロールで分岐を切り替える場合は、本番環境で十分に注意してください。現在の分岐で見つかるスキーマ要素がターゲットの分岐にない場合、関連するスキーマは削除され、含まれているデータはすべて破棄されます(データが存在する場合、グローバルアプリケーションはスキーマを削除しません)。
更新セットの場合と同様に、デルタロードでは増分変更のサブセットのみを適用する必要があります。更新セットとは異なり、アプリケーションパッケージは完全なアプリケーションを表します。新しいパッケージに存在しないファイルは削除されます。これにより、機能が変更され、データが削除される可能性があります。アプリケーションリポジトリまたは ServiceNow Store からアップグレードされた更新セットとアプリケーションには、ファイルやスキーマを削除するための明示的な削除ペイロードが必要です。
リポジトリを直接編集する (特にファイルを削除する) と、データの損失やカスケード削除などの重大な影響が生じる可能性があります。このアクションは注意して実行してください。