# 更新戦略

## Evergreen アプローチ

SCEPman の更新には Evergreen アプローチを推奨します。これは、SCEPman が production チャネルを使用してデプロイされている場合の既定のアプローチです。SCEPman は、直接次を指すことで ZIP デプロイメントを使用します。 [SCEPman GitHub](https://github.com/scepman) そして、開発チームによって公開された最新バージョンを読み込みます。

production チャネルは、利用可能な他のチャネルとあわせて、次のガイドに記載されています。

{% content-ref url="../scepman-no/application-artifacts" %}
[application-artifacts](https://docs.scepman.com/ja/scepman-no/application-artifacts)
{% endcontent-ref %}

このアプローチでは、常に最新の機能とセキュリティ更新を取得できます。

{% hint style="info" %}
念のため、 **更新は、App Service が停止して再起動されたときにのみ発生します**。これが ZIP デプロイメントがトリガーされるイベントです。App Service は自動的には停止および起動しませんが、特定のイベントでは外部から再起動されます。そのようなイベントの 1 つが [基盤となるインフラストラクチャのメンテナンスとパッチ適用](https://learn.microsoft.com/en-us/azure/app-service/routine-maintenance-downtime)です。これらは **定期的に行われ、サービスを最新の状態に保ちます**.
{% endhint %}

本番の企業環境で、更新プロセスをより細かく制御したい場合は、Microsoft の機能である **Deployment Slots**.

## デプロイ スロットの構成

SCEPman の更新プロセスを完全に制御したい場合は、 **Deployment Slots** を Azure App Service 内で使用できます。

{% hint style="success" %}
についてさらに詳しく知るには、 **Deployment Slots** Microsoft のドキュメントをご覧ください。\
<https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots>
{% endhint %}

以下の手順では、プレリリース管理のために推奨するセットアップを示します

{% hint style="info" %}
各 Deployment Slot は本番 App と同じ App Service Plan 上で実行され、同じリソースを使用することに注意してください。
{% endhint %}

### プレリリース スロット

プレリリース スロットの考え方は、本番の App Service を自分の Storage account に保存されたアーティファクトで実行し、GitHub のアーティファクトを指す新しい Deployment Slot を作成することです。カスタムのアーティファクト配置場所を設定する手順は、次の記事で確認できます。

{% content-ref url="../scepman-no/application-artifacts" %}
[application-artifacts](https://docs.scepman.com/ja/scepman-no/application-artifacts)
{% endcontent-ref %}

これで本番 App Service はカスタムのアーティファクト配置場所で実行されており、これから新しい Deployment Slot の設定を進めます。

{% hint style="info" %}
Deployment Slot の要件 \*\*\*\*（PS. SCEPman Module 経由）：

* SCEPman **2.2** 以上
* PowerShell SCEPman-Module **1.5.1.0** 以上
  {% endhint %}

次の CMDlet コマンドにより、Deployment Slot が作成され、必要なすべての権限が設定されます。

```
New-SCEPmanDeploymentSlot -SCEPmanAppServiceName <Your SCEPman App Service Name> -DeploymentSlotName <Name For The Deploymentslot> 6>&1
```

**例**

![](https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-e6d6f6705ddea62ace2056be7939000667f1be20%2F2022-06-13%2017_36_44-DeploymentSlotCommand.png?alt=media)

デプロイが正常に完了したら、SCEPman App Service の -> で Deployment Slot を確認できます **Deployment slots**

![](https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-dc8370a42c97d7d629bf570e79136d689eb64fa9%2F2022-06-13%2011_53_59-DeploymentSlot.png?alt=media)

次に、Deployment Slot が GitHub 上の SCEPman Production チャネルを指していることを確認してください。

次へ移動して **Deployment Slot** -> **Environment variables** を探し、設定 **WEBSITE\_RUN\_FROM\_PACKAGE** そして [production channel artifacts](https://docs.scepman.com/ja/scepman-no/application-artifacts#production) の値を貼り付けます。

<figure><img src="https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FhWunHIoJy8uhT2T5S6Mq%2Fimage.png?alt=media&#x26;token=4430a03c-7728-4ed5-9207-e711a279996e" alt=""><figcaption></figcaption></figure>

メインの **App Service** に戻って **Deployment Slots y**ou can see your two slots and can manage the **Traffic %** to root the defined among of request to the new **pre-release** slot.\
このトラフィックのルーティングはアプリケーションに対して完全に透過的であり、App Service によって処理されることに注意してください。 **Traffic %** から **20**その後、で 2 つのスロットを比較できます。 **Application Insights**GitHub に更新版を公開した場合は、 **pre-release** スロットを再起動するだけで、その後で 2 つの異なるバージョンをで比較できます。 **Application Insights**1 週間後、または任意の期間の後に、新しい GitHub アーティファクトをカスタムのアーティファクト配置場所にアップロードし、SCEPman ソリューションを更新できます。
