次の方法で共有


LAMP ゲーミング リファレンス アーキテクチャ

LAMP アーキテクチャをオンプレミスで既にロッキングしている場合、Azure への移行はそれ以上簡単にはできません。 このリファレンス アーキテクチャに従って、効果的かつ効率的にデプロイする方法について説明します。

また、パブリック クラウドを使用することによる利点をいくつかを紹介します。

  • 必要に応じて新しいコンピューティング ノードやデータベース ノードを簡単に追加できる。短時間でより多くのサーバーを追加できることが保証されているため、より軽量なインフラストラクチャをセットアップし、ニーズに合わせてスケールアップしたりスケールダウンしたりすることができます。 さらに、Azure でのスケールアップとスケールダウンにかかるコストや時間はオンプレミスよりも大幅に削減されているため、オンプレミスでの実行では数日から数週間かかる処理が、パブリック クラウドを使用すると数十分で完了します。 同様に、新しいサーバーをスピンアップするためにハードウェアを購入する必要がないときは前払いコストははるかに少なくなり、必要に応じて容量を動的にスケーリングできる場合はサステイン コストがより低くなる可能性があります。
  • 最新のハードウェアと最高のハードウェアを使用してパフォーマンスを向上させることができる。つまり、より少ないものでより多くのことが実現できる可能性があります。 また、よりハイエンドな性能のハードウェアをパブリック クラウドで使用するほうが、オンプレミスで調達するよりも低コストで済みます。
  • ハードウェア障害は避けられないため、オンプレミスではそれを解決するために悪夢のような事態に陥る可能性がある。 Azure でインフラストラクチャを実行することで、自動バックアップとフェールオーバーにより守られるため安心して眠ることができます。
  • 利便性が高い。業務において、ゲーミングの部分により注力し、バックエンドですべてが時計仕掛けのように確実に動作するために多くの作業を必要とする IT にかける労力がより少なくなります。

そして一度パブリック クラウドに移行すれば、後のステージにおいて、実装を検討しているまたは既にサービスが提供されている一部の機能を有効にするのにより適している可能性がある、より新しいクラウド サービスを使用して、ジャーニーを続けることができます。 例として、LAMP を活用したマルチプレイヤー マッチメーカーを実装しているような場合は、その機能に適しているサーバーレス アプローチが検討対象になる可能性があります。

導入事例

GameInsight customer story



ゲーム開発者がクラウドで楽しさを動的にスケールアップさせる

"Azure には LAMP スタックの実行に必要なすべてのものが揃っていました。"
"Azure は Terraform と「うまく連携」します。"
Alex Shirov: チーフ テクノロジー オフィサー

単一リージョン

アーキテクチャの図

要約

単一リージョンでの LAMP アーキテクチャの要約

Azure 固有

Azure の単一リージョンでの LAMP アーキテクチャ

アーキテクチャのサービス

  • Azure Linux Virtual Machines - Azure で演算能力 (このケースでは Apache Web サーバーとアプリケーション PHP ファイル の LAMP コンポーネントをホストする能力) を得る最も基本的な方法。
  • Azure Virtual Machine Scale Set - 同一の負荷分散された仮想マシンのグループを作成して管理できます。
  • Azure Database for MySQL - LAMP のデータ ストレージ コンポーネント。
  • Azure Cache for Redis - アーキテクチャのパフォーマンスとスケーラビリティを向上させるキャッシュ。
  • Azure Load Balancer - Azure Virtual Machine Scale Set からの異なる Azure Linux Virtual Machine インスタンス全体にわたってトラフィックを分散します。
  • Azure Storage - フラットなファイルを格納します。
  • Azure DDoS Protection Standard - Azure DDoS Protection をアプリケーション設計のベスト プラクティスと組み合わせると、DDoS 攻撃から守られるようになります。

ステップ バイ ステップの手順

  1. クライアント デバイスがドメイン ネーム システム (DNS) から Azure Load Balancer の IP アドレスを取得します。
  2. Azure Load Balancer が Azure Virtual Machine Scale Set から特定の Azure Linux Virtual Machine インスタンスを選択します。
  3. Azure Linux Virtual Machines コードが、まず Azure Cache for Redis に格納されている情報、次に 共通キャッシュ アサイド パターンの読み取りを試行します。
  4. Azure Linux Virtual Machines コードが、接続プーラーを使用して Azure Database for MySQL、および利用可能なすべての読み取りレプリカに対して情報の読み取りと書き込みを行います。
  5. 高可用性を確保するために、Azure Database for MySQL ではいくつかの種類のレプリケーションが有効になっています。
  6. Azure Virtual Machine Scale Set からの Azure Linux Virtual Machine インスタンスが、高パフォーマンスの Azure Storage に対してフラットなファイルの読み取りと書き込みを行います。

デプロイ

Azure Virtual Machine Scale Set 上で実行されているアプリケーションは、通常、次の 2 つのいずれかの方法でデプロイされます。

  • 仮想マシン拡張機能を使用してデプロイ時にアプリケーション ファイルをコピーする。
  • 1 つのカスタム イメージに OS とアプリケーション ファイルの両方を含むゴールデン イメージを作成する。

仮想マシン拡張機能ベースのアプローチでは、拡張機能が作成されるたびに新しい仮想マシン上で実行されるため、スケールアウト速度が低下する可能性があります。 スケールセットがゴールデン イメージをベースとする場合、新しい仮想マシンはすべてソースのカスタム イメージのコピーであり、前提条件とアプリケーションが既にインストールされているため、スケールアウトが高速になります。

ゴールデン イメージのアプローチは、不変のデプロイとも呼ばれ、次のような利点があります。

  1. 既にテスト済みのイメージを昇格させるため、予測可能である
  2. 簡単にスケーリングしてよく知っている以前の状態にロールバックすることもできる

また、その両方を組み合わせることも可能で、OS のバージョン、Apache のバージョン、PHP のバージョン、カスタムツールなど、最も不変の要素を持つゴールデン イメージを作成する一方で、より頻繁な更新を必要とする PHP スクリプトを除外できます。

重要

このアーキテクチャをさまざまな方法でデプロイする詳細なステップ バイ ステップの手順については、「単一リージョンでの LAMP アーキテクチャのデプロイ」を参照してください。

PHP で読み取りワークロードを複数の MySQL 読み取りレプリカに配布する

複数の読み取りレプリカに対して読み取りワークロードを配布するロード バランサー プロキシとして使用できる、mysqlnd_ms (PHP の MySQL ネイティブ ドライバー用のプラグイン) を活用することを検討してください。

MySQL サーバーに接続するためのサーバー名、ユーザー名、パスワードを指定することができるため、読み取りのワークロードを Azure Database for MySQL の読み取りレプリカに配布することで、負荷の分散とスケールアウトを行うことができます。

価格設定

Azure サブスクリプションをお持ちでない場合は、無料アカウント を作成して 12 か月間の無料サービスの利用を開始できます。 それらのサービスの制限を超えない限り、Azure 無料アカウントで無償で提供されているサービスに対して料金が発生することはありません。 Azure Portal または使用状況ファイルを通じて使用状況を確認する方法について説明します。

これらのリファレンス アーキテクチャの実行中に使用される Azure サービスのコストはユーザーが負担し、その合計は分析パイプラインで実行されるイベントの数によって異なります。 リファレンス アーキテクチャで使用されていた各サービスの価格は、Web ページで確認ください。

また、Azure の料金計算ツールを使用して、使用する予定の Azure サービスのコストを構成および見積もることもできます。

コストの見積もり

クラウド インフラストラクチャのコストを正確に予測するのは、非常に手間がかかることがあります。 このガイドは、Azure の料金計算ツールの設定と、ゲームのバックエンドの単一リージョンでの LAMP アーキテクチャのデプロイの相関関係をシンプルにするのに役立ちます。

コンポーネント

このシステムを実装しているユーザーは、次の重要な要素を考慮する必要があります。

  1. Azure Virtual Machine インスタンス

    Virtual Machine Scale Sets サービス自体には追加料金は発生せず、選択したコンピューティング インスタンスと、その他の基礎となるインフラストラクチャ リソース (ストレージやネットワークなど) に対してのみ課金されます。

    ハードウェアに関する考慮事項を確認し、具体的なニーズに基づいて、使用するのに最適な仮想マシンの種類と、アーキテクチャで始めに使用するインスタンスの数を決定してください。 概念実証 (PoC) から、バックエンドが完全に運用環境で使用されるまでには、調整が必要になる場合があることに注意してください。

    毎月のコンピューティング コストを見積もるには、次の式を適用します。価格はリージョンごとに異なる場合があります。

    (# of Virtual Machine instances * # of hours running per month) + (# of Virtual Machine instances * # of GBs per instance)

  2. Azure Cache for Redis

    状況に適したキャッシュを選択するには、「Azure Cache for Redis のどのオファリングとサイズを使用するか」を確認してください。 Azure for Redis Cache の毎月のコストを見積もるには、この計算式を適用します。価格はインスタンス SKU によって変わる (プレミアム > スタンダード > ベーシック) ほか、リージョンごとに異なる場合もあります。

    (# of instances * # of hours running per month) + (# of GBs per instance for persistence if enabled in Premium SKU)

    膨大な量のメモリが必要な場合は、プレミアム SKU を使用し、高可用性実現のために各ノードがプライマリ/レプリカ キャッシュ ペアで構成されているクラスターを作成する必要があります。

  3. Azure Database for MySQL

    Azure Database for MySQL の毎月のコストを見積もるには、この式を適用します。価格はデータベース レベル (メモリ最適化 > 汎用 > ベーシック) とコンピューティング レベルによって変わるほか、リージョンごとに異なる場合もあります。

    (# of servers * # of hours running per month) + (# of GBs provisioned) + (# of GBs in additional backup storage)

    プロビジョニングされたストレージの合計が 100% になるまで、バックアップ ストレージには追加料金は発生しないことに注意してください。

  4. Azure Load Balancer

    Basic Azure Load Balancer は無料である一方、Standard Azure Load Balancer は使用に伴い料金が発生します。 Standard Load Balanacer の毎月のコストを見積もるには、次の式を適用します。価格はリージョンごとに異なる場合があります。

    (# or GBs of data processed) + (# of rules processed * # of hours running)

  5. Azure Storage

    ストレージの毎月のコストを見積もるには、次の式を適用します。価格はパフォーマンス レベル (Premium > Standard)、冗長性の代替、アクセス レベル (ホット > クール > アーカイブ) によって変わるほか、リージョンごとに異なる場合もあります。

    (# or GBs of capacity) + (# of write operations) + (# of list/create operations) + (# of read operations) + (# of GBs retrieved) + (# of GBs written)

  6. 帯域幅

    さらに、帯域幅コストを追加する必要があります。 入力方向のデータ転送 (Azure データ センターに入るデータ) は無料ですが、送信データの転送 (Azure データ センターから出るデータ) は、次の式を使用して課金されます。

    (# of GBs transferred outbound)

料金計算ツールを開く

起動するには、次のいずれかの事前設定された見積もりを使用して、Azure 料金計算ツールを開きます。

小規模構成 中規模構成 大規模構成
単一リージョン 料金計算ツール 料金計算ツール 料金計算ツール

各セクションのリージョンは、それを実行する予定のリージョンに設定し (日本西部など)、独自のシナリオに基づいて調整してください。

注意

Azure 料金計算ツールは、すべての言語で利用できるわけではありません。