MySQL アプリに適したホスティング オプションを選択する

完了

新しいアプリを開発する場合、または既存のアプリを最新化する場合は、パフォーマンス、セキュリティ、コスト効率を最適化するために、適切なホスティング オプションを選択することが重要です。 従来、アプリはインターネット インフォメーション サービス (IIS)、Apache などの Web サーバー、または物理または仮想化されたオンプレミス ハードウェア上の NGINX でホストされてきました。 このオプションには、インフラストラクチャ チームが環境を完全に制御できるという利点がありますが、オーバーヘッド、初期コスト、可用性、スケーラビリティ、回復性、セキュリティ、コンプライアンスを管理するために追加の作業が必要になります。

アプリをクラウドにデプロイすると、これらの領域を管理する必要がなくなります。 クラウドでアプリをホストすると、全体的なセットアップ コストが削減され、事業継続とディザスター リカバリー (BCDR) オプションを使用することで可用性と信頼性が向上し、アプリのリソースをオンデマンドでスケーリングでき、高度なセキュリティが提供されます。

Microsoft Azure には、アプリのアーキテクチャ要件とユース ケースに対応するためにカスタマイズされた、さまざまなアプリ ホスティング オプションが用意されています。

MySQL アプリケーションの種類と対応する Azure サービスを示す図。

これらのアプリ ホスティング オプションの多くは、Azure Database for MySQL - フレキシブル サーバーとシームレスに統合されます。これは、スケーラビリティ、パフォーマンス、管理容易性のためにバックエンド データベースに特に効果的なサービスです。 このユニットでは、アプリのワークロードに最適なホスティング オプションを決定できるように、いくつかの一般的な MySQL アプリ アーキテクチャと Azure サービスについて説明します。

Azure App Service 上の Web アプリ

MySQL は、その移植性、速度、スケーラビリティ、信頼性をすべて低コストで実現できるため、Web およびモバイル アプリの開発に最も人気のあるデータベースの 1 つです。 バックエンドで Azure Database for MySQL - フレキシブル サーバーを使用すると、軽量またはミッション クリティカルな LAMP (Linux-Apache-MySQL-PHP) スタックのインターネット スケール アプリをより簡単に構築できます。 また、WordPress、Drupal、Joomla などの一般的な CMS、Moodle などの学習管理システム、Magento などの eコマース プラットフォームを使用して開発することもできます。これらはすべて Azure Database for MySQL - フレキシブル サーバーと互換性があります。

開発者は、Web アプリ、REST API、モバイル バックエンドをホストするための HTTP ベースのサービスとしてのプラットフォーム (PaaS) ソリューションである Azure App Service を使用して、これらの MySQL ベースの Web およびモバイル アプリを Windows または Linux 環境にデプロイできます。 Azure App Service を使用すると、管理オーバーヘッドの削減、任意の言語での開発、アプリのデプロイの自動化、迅速なスケールアップとダウン、さらにはカスタム Windows または Linux Docker コンテナーをホストするためにアプリを "Docker でコンテナー化する" こともできます。

Azure Kubernetes Service または Azure Container Apps 上のコンテナ化されたアプリ (マイクロサービス アーキテクチャ)

最近、マイクロサービス アーキテクチャを使用するアプリはその効率性、回復性、スケーラビリティ、デプロイの容易さにより、人気が高まっています。 従来のモノリシック アプリとは異なり、各マイクロサービスまたはコンテナーは独立して動作し、アプリ全体を再デプロイすることなく更新できます。

Azure では、これらのマイクロサービスを Azure Kubernetes Service (AKS) にデプロイできます。これは、最も複雑なコンテナ化されたアプリであっても、迅速かつ簡単に定義、デプロイ、デバッグ、アップグレードできるフル マネージド Kubernetes サービスです。

AKS に加えて、Azure Container Apps (ACA) は、マイクロサービスから構築されたモダン アプリに最適なサーバーレス コンテナー ホスティング サービスを提供します。 ACA は、仮想マシンや Kubernetes クラスターなどの基になるインフラストラクチャを管理することなく、コンテナーのデプロイとスケーリングを簡略化します。 イベントドリブン アーキテクチャの Azure Logic Apps および Azure Functions と適切に統合され、アプリ コンポーネントの迅速なスケーリングと管理をサポートします。 ACA は、HTTP トラフィックまたはイベントドリブン トリガーに基づいた動的なスケーリング オプションを提供し、機敏な操作と素早い反復を必要とするアプリに特に有益です。 このサービスは Windows コンテナーと Linux コンテナーの両方をサポートしており、さまざまなプログラミング環境で開発されたマイクロサービスをシームレスにデプロイできます。

AKS を通じて従来の Kubernetes デプロイと共に ACA を利用することで、コンテナー化されたアプリのオーケストレーション、スケーリング、管理の方法をより柔軟に行うことができます。 このアプローチにより、運用効率が最大化されるだけでなく、市場の変化や顧客の要求に迅速に対応する能力も強化されます。

Azure Functions と Azure Logic Apps を使用したイベントドリブンのサーバーレス アプリ

サーバーレス アプリは、イベントとバインドに応答してコードを自動的に実行するトリガーを備えたイベントドリブン モデルを使用して開発を加速し、追加のサービスをシームレスに統合します。 コードの実行に要した時間とリソースに対してのみ課金されます。

Azure Functions と Azure Logic Apps は、Azure 上のサーバーレス ソリューションであり、一連の重要なイベントに対応するシステムを構築するのに役立ちます。

  • Azure Functions Azure Functions は、HTTP 要求、タイマー イベント (cron ジョブ)、または Azure サービス イベント (Azure Storage キューまたは Service Bus からのメッセージなど) などのさまざまなトリガーに応答してコードを実行する、非常に汎用性の高いサーバーレス コンピューティング サービスです。 この柔軟性により、サーバー インフラストラクチャを管理することなく、変更にリアルタイムで対応するアプリを構築できます。 Azure Functions は、C#、Java、JavaScript、Python、PowerShell などの幅広いプログラミング言語をサポートしており、さまざまな開発者ベースがアクセスできます。 これらの関数は、他の Azure リソースとやりとりすることもできます。
  • Azure Logic Apps は、アプリ間および企業全体のタスク、プロセス、ワークフローの自動化と調整に役立つサーバーレス設計エクスペリエンスを提供します。 Azure portal または Visual Studio のビジュアル デザイナーを使用すると、ワークフローを設定して、最小限のコーディングで複雑なビジネス シナリオを自動化できます。 これらのワークフローは、バッチ オーダーの処理や結果の集計など、複雑なタスクを実行するために実行される "アクション" と呼ばれる関数またはステップのコレクションを調整します。

Azure では、イベントドリブン ワークフローでサーバーレス アプリをトリガーできるイベントやメッセージを中継および管理するための Azure Event GridAzure Service BusAzure Event Hubs などのサービスも提供しています。

Azure VM 上のモノリシックなレガシ アプリケーション

組織によっては、ビジネス プロセスと密接に結び付いており、最新化が難しいモノリシック アーキテクチャを備えたレガシ アプリを使用している場合があります。 リフトアンドシフト モデルを使用してこれらのアプリを Azure に移行し、サービスとしてのインフラストラクチャ (IaaS) サービスである Azure Virtual Machines でホストできます。

Azure の利点には、バックアップと復元サービス、ディスク暗号化、初期費用を必要としないスケーリング オプションを有効にできる機能が含まれますが、それでも、Azure VM でアプリをデプロイ、保守、管理するには人手による労力をつぎ込む必要があります。