Sitecore Managed Cloud Standardは、Microsoft Azureのプラットフォーム上における技術とサービスの組み合わせにより成り立っています。Managed Cloud Standardはさまざまな最適化が可能な本質的にオープンな製品であり、お客様ごとの実装パターンに合わせて開始時のトポロジー(Sitecore Managed Cloud Standardのトポロジーおよび価格レベル)を適用させることができます。
本記事では、弊社が多くのManaged Cloud Standard関連のプロジェクトに携わった経験の中から、それらのプロジェクトを成功に導いたベスト プラクティスをいくつかご紹介します。
ただし、これらのご提案は正式なSLAを通じてSitecoreからサポートされているものではない点にご注意ください。Managed Cloudの公式サポートの範囲は、Sitecore Managed Cloud Standard - オンデマンド リクエストのサービス一覧およびSitecore Managed Cloud Standard - モニタリング メトリクスで定義されています。
本記事でご説明する内容は(Sitecoreの公式サポートとは別に、)Microsoft Azureの機能を特定のSitecoreのシナリオに合うよう調整する場合の対応方法のご提案事項となります。
ご提案内容は、具体的には以下の6つの要素に関係しています。
「Application Initialization」は、Azure App Servicesで利用可能なIIS機能であり、Sitecore特有の機能ではありません。いくつかのManaged Cloudの実装は初回使用前に、<applicationInitialization>機能を使用してAzureのApp Serviceをウォームアップする場合があります。この機能を使うと、新しいインスタンスがトラフィックを受信する前に適切にウォームアップされるため、自動スケールアウト時に有用な場合があります。この機能を有効化するには、ウォームアップのページおよび関連のプロパティに指定しているweb.configにAppInitializationセクションを追加します:
<system.webServer>
<applicationInitialization doAppInitAfterRestart="true">
<add initializationPage="/default.aspx" hostName="myhost"/>
</applicationInitialization>
</system.webServer>
詳細情報については、アプリケーション初期化をご参照ください。また、以下のリンクに参考となるSitecore向けのご提案が掲載されていますのでご参照ください:
Sitecore App Service Warm-Up Demystified
Azure App Serviceには、自動復旧(Auto-Heal)という機能が搭載されています。これは、Azureのランタイムが、システムがビジーすぎる状態であったり、正常な状態でないと判断した場合に、システムをプロアクティブに再起動させるためのものです。ひとつのApp Serviceが90%以上のメモリ使用量で30秒間動作した場合、Azureランタイムが介入し、App Serviceを再起動させます。Azure App Serviceではこれが望ましい場合もありますが、Sitecoreの実装によっては、容量の限界(高メモリ使用量)に近い状態で動作している場合、Azureの自動復旧機能を無効にするとサイトの可用性が向上し、ワークロードが重くてもサイトを中断せずに動作させることができるようになる場合があります。
自動復旧を無効にするには、以下を実施してください。
FcnMode機能が有効化された状態で、特定のファイル(.dllや.config)が変更されると、Web Appが再起動されます。 この機能を有効化することによって、予期されないApp Poolの再起動が発生する可能性があります。例えば、アプリケーションのロジックでファイルを高速に変更する場合や、サブディレクトリが多数存在するディレクトリ構造で、それぞれにFcnModeの監視が必要な場合などに、この現象が見受けられることがあります。その予防策として、 実装でFcnModeを無効にすることが可能です。チューニングに関する情報については、以下の記事をご参照ください:
https://doc.sitecore.com/xp/en/developers/100/managed-cloud/recommendations--sitecore-tuning-in-azure.html(英語版)
これを無効化すべきか判断できない場合は、新規のお問い合わせを作成してサポートにご連絡ください。サポートとのやり取りを通じて、現在直面している問題をよりよく理解し、この機能を無効にする必要性があるかをより詳しく把握することができます。
Dynamicキャッシュは、ローカル キャッシュと似たものです。しかし、これはサイト全体をApp Serviceのホストにキャッシュする代わりに、リクエストされたファイルのみをキャッシュします。これはSitecoreではなく、Azure App Service製品で提供されている機能です。そもそもファイルがキャッシュされるのは、App Serviceのアプリケーション ファイルが、複数のインスタンスにスケールできる機能がサポートされている単一の場所に保存され、すべてのインスタンスが同じコンテンツを指すようにするためです。これは、「d:\home」ディレクトリをファイル サーバーへのシンボリック リンクにすることで実現します。「d:\local」 は実際にインスタンス上にあり、キャッシュが保存される場所となります。一部のAzure App Serviceでは、リモート ファイル共有からサイトのコンテンツを要求したときに遅延(レイテンシー)が発生する場合がありますが、ほとんどの場合これは起こりません。
「Azure Web Appsを使用している場合にSitecore XPが不安定になる」の記事の「解決策1」に従って、「WEBSITE_DYNAMIC_CACHE」を「0」に変更し、この機能を無効化していただくことをお薦めします。
Managed Cloud環境をスケールしようとするお客様は、おそらくAzureの価格レベルを「S3」と「P2v2」のどちらにするか検討することになります。本記事の執筆時点では、Microsoft Azureでのこれら2つのレベルの価格は同じですが、P2v2が提供する2コアよりもS3が提供する4コアが必要な場合を除き、一般的にはP2v2レベルの方の性能が優れています。要件はアプリケーションによって異なるため、プロジェクトごとにテストして判断する必要がありますが、Managed Cloudのお客様は、S3よりもP2V2を選択するのが一般的です。なぜなら、Premium v2シリーズは、同じコストでより高度な仕様のコンポーネントをサポートしており、それがしばしばSitecoreパフォーマンスの向上につながるためです。
Sitecore Managed Cloudのインスタンスのパフォーマンスに影響を与えるため、SitecoreアプリケーションのログをAzure Blobストレージに保存することは推奨されないことにご注意ください。詳細情報については「Azure App Serviceのアプリケーション ログ (Blob)の設定とWebサイトのパフォーマンスについて」の記事をご参照ください。このデータの収集および保存には、Azure Application Insightsを使用することをお薦めします。
Sitecore Managed Cloudのデプロイは、Azure Application Insightsを使用してアプリケーションの診断情報と関連するテレメトリーを収集します。Application Insightsで収集したデータはすべて有料なため、1日に保存するデータ容量の制限が設定されています。デフォルトでほとんどのお客様のシナリオでは1日あたり0.33GBに制限されています(この制限は「日次制限(Daily Cap)」と呼ばれます)。本番アプリケーションでは、1日あたり0.33GBを超える診断データを生成することがしばしばあるため、貴重なデータの損失を防ぐために、お客様特定の実装に適した値に日次制限を増加させることをお勧めします。正確な値は、状況によって異なりますが、実際のManaged Cloudの実装では、1日の上限を5GBから10GBの間に設定することが多いようです。なお、追加のデータを保存すると、プロジェクトにかかるAzureのコストが増加することに注意してください。
エンドポイントにアクセスできるIPアドレスを指定することで、Sitecore Managed Cloudの環境の主要コンポーネントであるAzure App Serviceへのアクセス権を制御することができます。これは、Azure App Serviceの「Networking」設定で実施します。これに関する詳細情報につきましては、Microsoftドキュメントの「Azure App Serviceのアクセス制限を設定する」記事をご参照ください。なお、もしManaged Cloudのお客様が特定のIPにしかリソースへのアクセスを付与しない場合、Azure App Serviceのエンドポイントのヘルス チェックを阻害する可能性がある点にご注意ください。Application Insightsのヘルス チェックは、Sitecore Managed Cloudのチームが、システムの可用性を監視するための重要な手段の1つであり、これらのチェックが接続できない場合、Managed CloudのサポートのSLAに影響を与えることになります。監視のメトリックスに関する情報については、「Sitecore Managed Cloud Standard - モニタリング メトリクス」の記事をご参照ください。
Managed Cloudのサービス範囲(Sitecore Managed Cloud スタンダード– サービスの概要と付属するオペレーション)によると、監視サービスに対するアプリケーションの可用性を確保することは、お客様の責任で実施していただく内容となっています。Application Insightsの監視で使用されるIPアドレスは、Application InsightsおよびLog Analyticsで使用されるIPアドレスの記事の「可用性テスト」節で確認することができます。Sitecore Managed Cloudで使用される場所は、オーストラリア東部、ヨーロッパ北部、東南アジア、米西部および米中部となります。これらのIP制限に関するサポートが必要な場合、カスタマー サクセス マネージャー(CSM)またはサポート ポータル(サポート ポータルの使用方法)を通じて、弊社にお問い合わせください。
Sitecore Managed Cloudチームは、お客様の環境でWAFのセットアップおよびインテグレーションを実施します。これは、Sitecore Managed Cloud Standard - オンデマンド リクエストのサービス一覧で提供されているサービスの一部です。 弊社のこれまでの経験上、DNSの伝搬遅延やその他のネットワークの問題のおそれがあるため、WAFの実装は、Sitecore Managed Cloud環境の本番開始前に完了させることが最善であると考えられます。実際のプロジェクトでは、WAF導入後にすべての接続の変更をテストし、かつ慎重に評価するために十分な時間が必要であるため、プロジェクトのライフ サイクルの早い段階で取り込むことをお勧めします。
Microsoft Azureは、リソースを認識する方法として、「タグ」をサポートしています。これに関連するMicrosoftの資料として、「タグを使用して Azure リソースと整理階層を整理する」の記事をご参照ください。Managed Cloudのお客様には、環境のメタデータを通知するために、Azureリソース グループにタグをつけていただくことをお薦めいたします。Azure Portalでのタグは、以下の例のように表示されます。