App Service 上の WordPress

Azure Front Door
Azure Load Balancer
Azure Virtual Network
Azure App Service
Azure Database for MySQL

この記事では、Azureでの小規模から中規模の WordPress インストールのアーキテクチャについて説明します。 このアーキテクチャでは、Azure App Serviceを使用して、データベース、ネットワーク、およびコンテンツ配信レイヤーの WordPress およびマネージド Azure サービスをホストします。 大規模なインストールやストレージ負荷の高いインストールについては、Azure の WordPress ホスティング オプションを参照してください。

アーキテクチャ

\\\App Service 上の WordPress のアーキテクチャ図。Azure Front Door はトラフィックを Web アプリにルーティングします。Azure Database for MySQL は動的コンテンツを格納します。\\

左側には、矢印がインターネットからAzure Web Application Firewallを使用してAzure Front Doorに向かっています。 ストレージ アカウント セクションの Azure Blob Storage から、Azure Web Application Firewall を含む Azure Front Door に向かう静的 Web コンテンツを示す破線の矢印が付いたラベル。 矢印は、Azure Web Application Firewallを持つAzure Front Doorから App Service を指しています。 App Service からプライベート エンドポイントを指す矢印。 矢印は、この線からBlob Storageを指しています。 プライベート エンドポイントから MySQL 用 Azure データベース フレキシブル サーバー (プライマリ) へ矢印が指しています。 プライマリ サーバーから Premium Storage を指す矢印。 データとログのローカル冗長同期レプリケーションというラベルが付いた破線の矢印は、プライマリ サーバーの Premium Storage からスタンバイ サーバーの Premium Storage を指します。 矢印は、Azure Database for MySQLフレキシブル サーバー (スタンバイ) から Premium Storage を指しています。 上部には、プライベート DNS ゾーンから仮想ネットワークへのリンク ポイントというラベルが付いた破線の矢印が表示されます。

このアーキテクチャの Visio ファイルをダウンロードします。

注意

このソリューションを拡張するには、WordPress ホスティング 方法に固有ではないヒントと推奨事項を実装します。 WordPress のインストールを展開する方法の詳細については、「WordPress on Azureを参照してください。

データ フロー

このシナリオでは、 App Service で実行される WordPress のスケーラブルなインストールについて説明します。

次のデータ フローは、前の図に対応しています。

次のデータ フローは、前の図に対応しています。

  • ユーザーは、Azure Web Application Firewall が有効になっている Azure Front Door を介してフロントエンド Web サイトにアクセスします。

  • Azure Front Doorは、WordPress を実行する App Service Web アプリ全体に要求を分散します。 要求されたコンテンツがキャッシュされていない場合、Azure Front Doorは Web アプリからそれを取得します。

  • WordPress アプリケーションは、プライベート エンドポイントを介してフレキシブル サーバー Azure Database for MySQL接続し、データベースから動的コンテンツを取得します。

  • Azure Database for MySQLは、スタンバイ サーバー経由の高可用性をサポートします。

  • すべての静的コンテンツは、Azure Blob Storage でホストされます。

コンポーネント

  • App Service は、Web アプリの構築、デプロイ、スケーリングのためのサービスとしてのプラットフォーム (PaaS) オファリングです。 このアーキテクチャでは、App Service によって WordPress アプリケーションがホストされます。

  • Azure Database for MySQL フレキシブル サーバー は、オープンソースの MySQL データベース エンジンに基づくマネージド リレーショナル データベース サービスです。 このアーキテクチャでは、WordPress データが格納されます。

  • Azure DDoS Protection は、強化された分散型サービス拒否 (DDoS) 軽減機能を提供するネットワーク セキュリティ サービスです。 このアーキテクチャでは、DDoS Protection は DDoS 攻撃からパブリック IP アドレスを保護するのに役立ちます。

  • Azure Front Door は、コンテンツ配信ネットワークとグローバル ロード バランサーです。 このアーキテクチャでは、Azure Front Doorは Web ユーザーのアプリケーション エントリ ポイントとして機能します。

  • Azure Virtual Network は、セグメント化と分離を提供しながら、Azure リソースが相互、インターネット、およびオンプレミスネットワークと通信できるようにするネットワーク サービスです。 このアーキテクチャでは、App Service コンポーネントとバックエンド コンポーネントは、仮想ネットワーク内のプライベート接続を介してのみ到達できます。

  • Blob Storage は、大量の非構造化データ用に最適化されたオブジェクト ストレージ サービスです。 このアーキテクチャでは、Blob Storage は WordPress アプリケーションのすべての静的コンテンツをホストします。

  • ネットワーク セキュリティ グループ (NSG) は 、セキュリティ規則を使用して、送信元または送信先の IP アドレス、ポート、プロトコルによってネットワーク トラフィックを許可または拒否します。 このアーキテクチャでは、NSG ルールによってサブネット間のトラフィック フローが制限されます。

  • App Service の WordPress テンプレートは、App Service で WordPress をホストするためのマネージド ソリューション テンプレートです。 このアーキテクチャでは、テンプレートは、App Service と、このセクションで説明する他の Azure サービスを含む事前構成済みの WordPress デプロイを提供します。

選択肢

Azure Managed Redis を使用して、WordPress パフォーマンス最適化プラグインのキー値キャッシュをホストします。 キャッシュは、App Service Web アプリ間で共有できます。

シナリオの詳細

このシナリオ例は、小規模から中規模の WordPress のインストールに適用されます。

考えられるユース ケース

  • トラフィックの急増を引き起こすメディア イベント
  • コンテンツ管理システムとして WordPress を使用しているブログ
  • WordPress を使用するビジネスまたは eコマースの Web サイト
  • 他のコンテンツ管理システムを使用して構築された Web サイト

考慮事項

これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「 Well-Architected Framework」を参照してください。

[信頼性]

信頼性は、アプリケーションが顧客に対して行ったコミットメントを確実に満たすことができるのに役立ちます。 詳細については、「信頼性の設計レビュー チェックリスト」を参照してください。

このソリューションをデプロイするときは、次の推奨事項を考慮してください。

  • Azure Database for MySQLの自動バックアップを構成します。 目標復旧ポイント (RPO) に合わせて保持期間を定義します。 復元プロセスを定期的にテストして、バックアップの信頼性を確認します。

  • App Service には、組み込みの負荷分散と正常性チェックが用意されています。 これらの機能は、App Service Web アプリに障害が起きたときに可用性を維持するのに役立ちます。

  • Azure Front Doorは、配信元が一時的に使用できない場合に、キャッシュされた応答を提供できます。 この機能は可用性の損失を制限しますが、完全な可用性ソリューションを置き換えるわけではありません。

  • Blob Storage をペア リージョンにレプリケートして、複数のリージョン間でのデータ冗長性を確保できます。 詳細については、「Azure Storage の冗長性」を参照してください。

  • Azure Database for MySQL可用性を高めるために、高可用性を有効にします。 同じゾーンの高可用性により、プライマリ サーバーと同じ可用性ゾーンにスタンバイ サーバーが作成されます。 障害の分離を強化するために、ゾーン冗長高可用性を使用して、スタンバイ サーバーを別の可用性ゾーンに配置します。 高可用性を有効にするには、General Purpose または Business Critical コンピューティング レベルを使用します。 詳細については、ニーズを満たす 高可用性オプション を参照してください。

セキュリティ

セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、「セキュリティの設計レビュー チェックリスト」を参照してください。

このソリューションをデプロイするときは、次の推奨事項を考慮してください。

  • Azure Front DoorのAzure Web Application Firewallを使用して、フロントエンド アプリケーション層に流れ込む仮想ネットワーク トラフィックを保護します。 詳細については、「Azure Front Door 上の Azure Web Application Firewall」を参照してください。

  • Azure Database for MySQLやBlob Storageなど、すべてのバックエンド サービスにプライベート エンドポイントを使用します。 プライベート エンドポイントは、仮想ネットワーク内のトラフィックを保持し、パブリック インターネットへの公開を防ぎます。 詳細については、「Azure Private Linkを参照してください。

  • データベース層からの送信インターネット トラフィックをブロックします。

  • プライベート ストレージへのパブリック アクセスをブロックします。

  • WordPress のコア、テーマ、プラグインを最新バージョンに更新して、既知のセキュリティの脆弱性に対処します。 不要になったプラグインとテーマをアンインストールします。

  • Azure Front Doorに/wp-adminを作成して、WordPress 管理パネル () へのアクセスを制限します。 RequestUri一致条件を使用して、/wp-adminパスと IP アドレス条件を組み合わせて、既知の IP アドレス範囲からのアクセスのみを許可します。 App Service のアクセス制限は、個々の URL パスではなくサイト全体に適用されるため、パス固有の制御には適していません。

WordPress のセキュリティの詳細については、「WordPress のセキュリティとパフォーマンスに関する一般的なヒント」および「Azure セキュリティに関するドキュメント」を参照してください。

コストの最適化

コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。

このソリューションをデプロイする場合は、コストに関する次の考慮事項を確認してください。

  • 1 か月あたりのトラフィックの期待値 (GB): トラフィック量が最もコストに影響します。 受信するトラフィックによって、必要な App Service インスタンスの数と送信データ転送の価格が決まります。 Azure Front Doorを介してコンテンツを提供すると、送信データ転送コストを削減できます。

  • Hosted data: Blob Storageでホストするデータを検討してください。 ストレージの価格は、使用容量によって異なります。

  • 書き込みパーセンテージ: Web サイトに書き込み、Storage でホストする新しいデータの量を検討します。 新しいデータが必要かどうかを判断します。 マルチリージョンデプロイの場合、Web サイトに書き込む新しいデータは、リージョン間でレプリケートされるデータと関連付けられます。

  • 静的コンテンツと動的コンテンツ: データベース ストレージのパフォーマンスと容量を監視して、低コストの SKU がサイトをサポートしているかどうかを判断します。 データベースには動的コンテンツが格納され、Azure Front Doorは静的コンテンツをキャッシュします。

  • App Service の最適化: App Service のコストを最適化する方法の詳細については、「 コストの最適化」を参照してください。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「 オペレーショナル エクセレンスの設計レビュー チェックリスト」を参照してください。

このソリューションをデプロイするときは、次の推奨事項を考慮してください。

  • Application Insights を有効にして、アプリケーションのパフォーマンス、可用性、および使用パターンを監視します。 監視データを使用して、ユーザーに影響を与える前に問題を特定して解決します。

  • App Service の デプロイ スロット を使用して、WordPress コアのアップグレードをステージングします。 運用環境にスワップする前に、新しいバージョンをステージング スロットにデプロイし、テーマとプラグインの互換性を検証します。 アップグレード後に管理者がサインインすると、WordPress によって共有データベースに対してスキーマ移行が自動的に適用されるため、スワップ前に Azure Database for MySQL インスタンスをバックアップします。

  • Bicepまたは Terraform を使用してインフラストラクチャのデプロイを自動化します。 コードとしてのインフラストラクチャ (IaC) は、環境間の整合性を維持し、環境を確実に再構築するのに役立ちます。

  • 主要なメトリックであるApp Service の CPU 使用率、データベース接続数、応答時間に対して、Azure Monitorアラートを設定します。 ユーザーに影響を与える前に、アラートを使用して運用上の問題に対応します。

パフォーマンス効率

パフォーマンス効率とは、ユーザーの要求を効率的に満たすためにスケーリングするワークロードの能力を指します。 詳細については、「パフォーマンス効率の設計レビュー チェックリスト」を参照してください。

このソリューションをデプロイするときは、次の推奨事項を考慮してください。

  • App Service で自動スケーリング機能を有効にして、インスタンスの数を自動的にスケーリングします。 顧客の需要に応じて、またはスケジュールに基づいて自動スケール トリガーを設定できます。 詳細については、「 Azure での自動スケーリングの概要」を参照してください。

  • Azure Managed Redis を使用して、ハイパーテキスト プリプロセッサ (PHP) セッション データと頻繁にアクセスされる WordPress オブジェクトをキャッシュします。 これらの項目をデータベースからオフロードして、クエリの読み込みを減らし、ページの読み込み時間を短縮します。

  • エッジの場所から静的資産を提供するようにAzure Front Doorキャッシュ規則を構成します。 エッジでキャッシュして、App Service リージョンから地理的に離れたユーザーの待機時間を短縮します。

  • パフォーマンスとセキュリティを強化するには、App Service でサポートされている最新の PHP バージョンを使用してください。 アップグレードする前に、WordPress のバージョンとプラグインに互換性があることを確認します。

寄稿者

Microsoft では、この記事を保持しています。 この記事を書いたのは、以下の寄稿者です。

主要著者

その他の共同作成者:

  • Adrian Calinescu | シニア クラウド ソリューション アーキテクト
  • Andrew Cardy |シニア ソフトウェア エンジニア

公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。

次の手順

製品ドキュメント:

Microsoft トレーニング モジュール: