すべてのプロダクト
Search
ドキュメントセンター

Serverless App Engine:はじめに

最終更新日:Aug 27, 2026

は、アプリケーション指向のサーバーレス PaaS プラットフォームです。サービスとしてのプラットフォーム (PaaS) のユーザーは、サービスとしてのインフラストラクチャ (IaaS) の運用保守から解放され、従量課金でオンデマンドにリソースを使用できます。また、マイクロサービス、Java、PHP などのテクノロジースタックで構築されたアプリケーションをクラウドに移行する際のハードルを下げます。このトピックでは、のデプロイメントワークフローについて説明し、各機能領域の実践例をご紹介します。

デプロイメントワークフロー

次の図は、SAE のワークフローを示しています。

dg_sae_workflow

このワークフローは 4 つの段階で構成されています。段階 1 ~ 3 は、アプリケーションを実行状態にするための最短パスです。段階 4 では、アプリケーションを本番運用へ移行するにあたり追加する機能を扱います。

  1. リソースの計画と事前準備の完了 初めて SAE アプリケーションをデプロイする前に、Virtual Private Cloud (VPC)、vSwitch、名前空間を計画します。名前空間は、テスト、ステージング、本番などの環境を分離します。詳細については、このトピックの「Before you begin」および「Prerequisites」をご参照ください。

    1. Deploy your application. Deploy the application in the SAE console. For details, see Application deployment and Deploy an application in this topic. In addition to console-based deployment, SAE supports deployment through Jenkins, IDE plug-ins, Maven plug-ins, Terraform, OpenAPI, Alibaba Cloud DevOps, and the kubectl-sae tool.

      説明

      If this is the first time that you deploy an application to SAE, create the application in the SAEコンソール.

    2. Make your application accessible. Choose an access method based on how clients reach the application. For a full comparison of the methods and their implementations, see Application access in this topic.

      • Ingress (recommended) — One port serves multiple applications, and traffic is routed to different applications based on domain names and paths. For details, see Configure an ingress.

      • Service — One port serves one application. Use a Service when you need Layer 4 TCP access or when domain-based access is not available. To expose a Service with a Network Load Balancer (NLB) instance, see Bind an NLB instance to an application.

      • Elastic IP address (EIP) — One instance can be bound to one EIP, which lets the instance both send traffic to and receive traffic from the Internet. For details, see Configure an EIP to enable public access for an SAE instance.

    3. Configure advanced features. The following sections of this topic describe the capabilities that you can add to an SAE application:

事前準備

Serverless App Engine (SAE) を初めて使用する場合は、動画を視聴して SAE と基本操作を確認してください。

サービスの詳細については、「What is Serverless App Engine?」をご参照ください。

前提条件

初回のデプロイメントの前に、次の項目を準備してください:

  • ネットワークリソース — VPC と、その vSwitch を計画してください。vSwitch を作成する際は、Limits and quotas の説明に従って IP アドレス数を計画してください。

  • 名前空間 — テスト、ステージング、本番環境を分離する名前空間を計画してください。

  • アプリケーションソース — コードパッケージまたはコンテナイメージを準備してください。対応しているソースについては、Deployment sources をご参照ください。

  • コンソールのエントリ — SAEコンソール で最初のアプリケーションを作成してください。

    詳細については、「Prerequisites」をご参照ください。

制限とクォータ

計画時には、次の制限を考慮してください。各制限は、アプリケーションを作成できるか、スケールできるか、または監視できるかに影響します。

  • システムディスク — SAE は 20 GB のシステムディスクストレージを提供します。外部ストレージの読み取りまたは書き込みを行うには、Apsara File Storage NAS または Object Storage Service (OSS) を使用してください。詳細については、「Storage」をご参照ください。

  • リアルタイムログ — リアルタイムログ機能では、ログデータを 500 行表示します。より多くのログデータを表示するには、ファイルログ収集を使用してください。詳細については、「Logs」をご参照ください。

  • EIP 数 — 各インスタンスを EIP にバインドする場合は、EIP の数が「インスタンス数 + 1」以上であることを確認してください。EIP が不足していると、インスタンスの作成に失敗し、インスタンスはトラフィックを処理できません。

  • vSwitch の IP アドレス — IP アドレスが不足すると作成や弾性スケーリングに失敗するため、vSwitch ごとに 100 個以上の IP アドレスを計画してください。

  • ポートマッピング — サービスは 1 つのアプリケーションに対して 1 つのポートを公開します。イングレスは 1 つのポートで複数のアプリケーションを公開します。

アプリケーションのデプロイメント

このセクションでは、SAE がサポートするデプロイメントソース、デプロイ時の設定、自動配信チャネル、およびアプリケーションのリリース、ロールバック、アクセス許可の方法について説明します。

デプロイメントソース

SAE は コードパッケージのデプロイ および イメージのデプロイ をサポートしています。

起動コマンドとパラメーター

起動コマンドは、デプロイメントソースごとに定義方法が異なります。

  • イメージデプロイメント — Dockerfile に起動コマンドとそのパラメーターを直接定義します。また、アプリケーションの作成時に起動コマンドを上書きすることもできます。

  • コードパッケージデプロイメント — アプリケーションの起動コマンドのパラメーターを設定します。Java アプリケーションの場合、デフォルトのコマンド形式は java [-Options] -jar jarfile [arg...] です。この形式では、[-Options] と [arg...] のパラメーターをカスタマイズできます。

環境変数

アプリケーションのコマンドを実行する前に、システムで必要な環境変数を設定しておく必要があります。環境変数はキーと値のペアとして保存されます。環境変数はアプリケーションごとに独立しており、他のアプリケーションには影響しません。詳細については、「Configure environment variables」をご参照ください。

Hosts バインディング

Hosts バインディングを使用すると、SAE アプリケーションは IP アドレスの代わりにドメイン名を使用して外部サービスにアクセスできます。

データベースのホワイトリスト

Elastic Compute Service (ECS) インスタンスに直接アプリケーションをデプロイする場合と比較して、SAE はコンテナでアプリケーションを実行するため、アプリケーションをデプロイするたびに IP アドレスが変更される可能性があります。 アプリケーションがバインドされている vSwitch の CIDR ブロックは変更されないため、vSwitch の CIDR ブロックをデータベースのホワイトリストに追加します。 詳細については、「アプリケーションから Alibaba Cloud データベースにアクセスする」をご参照ください。

CI/CD とデプロイメントプラグイン

SAE は、コンソールおよび API デプロイに加えて、Alibaba Cloud DevOps や Jenkins などの多くの CI/CD ツールと連携しているため、コードコミット後にデプロイが自動的に開始されます。 Java を使用する場合、SAE は、Maven、IntelliJ IDEA、Eclipse 用のプラグインなど、一連のデプロイプラグインも提供します。 詳細については、「アプリケーションホスティングの概要」をご参照ください。

SAE リソースをコードとして管理するには、Terraform を使用します。 詳細については、「terraform-provider-alicloud」および「Terraform の概要」をご参照ください。

ローカル開発や、すでにクラウド上で稼働しているサービスとの共同デバッグについては、「Microservices development」をご参照ください。

リリースとロールバック

SAE は、一括リリース、段階的リリース、およびカナリアリリースをサポートしています。リリースによって問題が発生した場合、アプリケーションを以前のバージョンにロールバックできます。詳細については、「アプリケーションのアップグレードとロールバック」をご参照ください。

権限設定

SAE は、名前空間、アプリケーション、および読み取り/書き込みレベルでのきめ細かいアクセス制御をサポートしており、権限アシスタントが設定プロセスを簡素化します。詳細については、「SAE 権限アシスタント」をご参照ください。

アプリケーションアクセス

このセクションでは、SAE がベースとするネットワーク概念、各トラフィック方向のアクセス方法、およびそれらの選択に役立つ比較について説明します。詳細については、「アプリケーションアクセスとトラフィック管理」をご参照ください。

SAE では、サービスは NLB または Classic Load Balancer (CLB) インスタンスで公開されるのに対し、イングレスは API ゲートウェイ、Application Load Balancer (ALB)、または MSE クラウドネイティブゲートウェイで実装されます。

ネットワークの概念

次の図は、これらの Alibaba Cloud ネットワークリソースが相互にどのように関連しているかを示しています。

dg_aliyun_cloud_network

  • VPC — Alibaba Cloud 上に作成するカスタムのプライベートネットワークです。VPC は論理的に互いに完全に分離されています。

    説明

    デフォルトでは、プライベートネットワークはインターネットにアクセスできません。

  • vSwitch — VPC の基本的なネットワークデバイスで、物理データセンターに対応します。VPC 内にクラウドリソースを作成する際は、そのリソースが接続する vSwitch を指定する必要があります。

  • EIP — ECS インスタンスや SAE インスタンスなどの 1 つのリソースにのみバインドできる Elastic IP アドレスです。バインドされたリソースは、インターネットとの間でトラフィックを送受信できます。

  • NAT ゲートウェイ — VPC 内のリソースが SNAT を介してインターネットにアクセスできるようにします。EIP との主な違いは、インターネット NAT ゲートウェイが VPC 内のすべてのリソースを対象とするのに対し、EIP は VPC 内の 1 つのリソースのみを対象とする点です。

トラフィック方向別のアクセス方法

SAE にアプリケーションをデプロイすると、以下のネットワークアクセス要件が発生する場合があります。次の図にその概念を示します。

dg_sae_network

インターネットからのインバウンドアクセス

インターネット経由でアクセス可能にする必要がある SAE アプリケーションは、以下の方法を使用できます。

インターネットへのアウトバウンドアクセス

インターネットにアクセスする必要がある SAE アプリケーションは、以下の方法を使用できます。

アプリケーション間の相互アクセス

デプロイごとに新しい内部 IP アドレスが生成されるため、SAE アプリケーション同士は、インスタンス IP アドレスでは直接アクセスできません。代わりに以下の方法を使用してください。

VPC 内の他のリソースへのアクセス

  • SAE は Alibaba Cloud VPC ネットワーク上に構築されているため、追加設定なしで、同じ VPC 内の ECS インスタンス、ApsaraDB RDS、ApsaraDB for Tair (Redis 互換) などのリソースにアクセスできます。逆に、同じ VPC 内の Alibaba Cloud リソースも SAE にアクセスできます。

  • 宛先サービスのセキュリティグループとホワイトリストがトラフィックを許可していることを確認してください。それでもアクセスに失敗する場合は、「トラブルシューティング」をご参照ください。

アクセス方法の比較

サービスまたはイングレス

次の図に示すように、SAE イングレスはドメイン名とパスに基づいてトラフィックをさまざまなアプリケーションにルーティングしますが、サービスはそうしたルーティングを行いません。要件を満たす場合は、まずイングレスを使用します。レイヤー 4 TCP アクセスが必要な場合、またはドメインベースのアクセスが利用できない場合は、サービスを使用します。

dg_slb

ALB イングレス

ALB は、HTTP、HTTPS、QUIC などのアプリケーション層シナリオ向けに設計された Alibaba Cloud のロードバランシングサービスです。イングレスのシナリオでは、まず ALB を使用してください。詳細については、「Server Load Balancer (SLB) 製品ファミリーの概要」をご参照ください。

NAT ベースまたは EIP ベースのインターネットアクセス

次の図は、EIP ベースのインターネットアクセスを示しており、各インスタンスは 1 つの EIP にバインドされています。EIP が不足している場合、インスタンスの作成に失敗し、インスタンスはトラフィックを処理できません。

dg_eip

次の表に、NAT モードと EIP モードの主な違いを示します。

比較項目

NAT

EIP

有効範囲

NAT ゲートウェイは VPC または vSwitch レベルで制御でき、VPC または vSwitch 内のパブリック IP アドレスを持たないすべてのインスタンスにプロキシサービスを提供します。VPC または vSwitch に必要な NAT ゲートウェイは 1 つだけで、そのすべてのインスタンスがインターネットにアクセスできるようになります。

EIP はインスタンスレベルで動作します。たとえば、10 個のインスタンスには 10 個の EIP が必要です。EIP がインスタンスにバインドされると、そのインスタンスはインターネットとの間でトラフィックを送受信できるようになります。

固定パブリック IP アドレス

はい。

いいえ。SAE は、新しいインスタンスが EIP にバインドされた後にのみ、元のインスタンスを破棄して元の EIP をアンバインドします。このため、EIP の数は、インスタンスの数に 1 を加えた数以上であることを確認してください。EIP は変更され、IP アドレスプールから取得されます。

典型的なシナリオ

アプリケーションが自動的にスケーリングし、新しいインスタンスがデフォルトでアウトバウンドのインターネットアクセスを必要とし、かつ固定 IP アドレスが必要な場合に適しています。

EIP の変更が許容され、オンライン会議などでインスタンスに直接接続する必要がある場合に適しています。また、各インスタンスのライフサイクルをきめ細かく制御したい場合にも適しています。

課金

課金の詳細については、「NAT ゲートウェイの課金」をご参照ください。

課金の詳細については、「EIP の課金」をご参照ください。インスタンスが 20 個以下の場合、EIP の方がコスト効率が高くなります。

マイクロサービス

SAE は、サービス登録と検出、設定管理、開発効率、およびサービスガバナンスのためのマイクロサービスの機能強化を提供します。

サービスレジストリと設定センター

SAE アプリケーションは、サービスレジストリを介して相互に登録および検出します。要件に基づいて実装を選択してください。

マイクロサービス開発

IDE からの自動デプロイメント

アプリケーションを毎回再パッケージして再デプロイする場合と比較して、IDE からのワンクリックデプロイメントはデプロイ時間を短縮し、開発効率を向上させます。詳細については、「Alibaba Cloud Toolkit を使用してマイクロサービスを SAE に自動デプロイする」をご参照ください。

オンプレミスとクラウドの相互接続

マイクロサービスアーキテクチャを採用すると、アプリケーションの数が増加します。極端なケースでは、ローカルでの開発や共同デバッグを行う際に、関連するすべてのマイクロサービスアプリケーションを起動する必要があります。この課題に対処するために、Alibaba Cloud Toolkit プラグインのオンプレミスとクラウドの相互接続機能を使用します。たとえば、ローカルのコンシューマーを SAE にデプロイされたプロバイダーに直接接続できるため、ローカルでプロバイダーを起動する必要はありません。これにより、開発およびデバッグのコストが削減されます。詳細については、「Cloud Toolkit を使用してオンプレミスとクラウドのアプリケーション間の相互接続を実装する (IntelliJ IDEA)」をご参照ください。

サービスガバナンス

サービス一覧

組み込みの Nacos サービスレジストリを使用するアプリケーションの場合、SAE は基本的なサービスリスト照会機能を提供します。自己管理型のサービスレジストリまたは MSE サービスレジストリを使用する場合は、SAE コンソールでサービスを表示するのではなく、対応するコンソールにログインしてサービスを照会します。詳細については、「サービスリストの表示」をご参照ください。

マイクロサービスカナリアリリース

SAE はアプリケーションライフサイクルを管理し、マイクロサービスアプリケーションのリリースフェーズ向けにカナリアリリース機能も提供します。詳細については、「カナリアリリースルールを管理する」および「アプリケーションのカナリアリリースを実行する」をご参照ください。

多言語サポート

PHP ランタイムのサポート

Serverless App Engine (SAE) は、PHP アプリケーション向けに以下のデプロイ方法をサポートしています。

  • イメージ: あらゆる PHP アプリケーションアーキテクチャ。

  • PHP ZIP パッケージ: PHP-FPM と Nginx アーキテクチャを使用するあらゆるオンラインアプリケーション。

    SAE は、デフォルトで PHP ランタイム環境を提供します。

PHP リモートデバッグ

SAE には、リモートデバッグを有効にできる Xdebug プラグインが組み込まれています。デバッグ中にインスタンスとローカルマシン間でファイルを移動するには、「ファイルのアップロードとダウンロード」をご参照ください。

ログ

SAE は、コンテナログパスにあるビジネスファイルログと、コンテナ標準出力 (stdout) ログの 2 種類のログを収集します。必要なログデータ量と分析方法に基づいて、送信先を選択してください。

  • コンソールのリアルタイムログ — SAE のリアルタイムログ機能は、500 行のログデータを表示します。ログ出力を迅速に確認する際に使用します。

  • Simple Log Service (SLS) — SAE はログを SLS に送信します。SLS では、無制限の行数のログを表示し、独自にログを集約および分析し、ビジネスログを簡単に統合できます。stdout ログを SLS に送信するには、まず標準出力をファイルにリダイレクトしてから、ファイル収集を設定します。

  • Kafka — SAE はログを Kafka に送信します。SLS 収集が環境に適さない場合 (RAM ユーザーが SLS ログを表示する権限を持っていない場合など) に Kafka を使用します。

ファイルログ

SAE は SLS ログ収集と統合されており、SAE コンソールで有効にするだけで使用できます。収集マシンのリストを手動で管理する必要がある ECS インスタンスへのアプリケーションの直接デプロイと比較して、SAE は、収集ディレクトリまたは収集ファイルを設定した後、各デプロイメントおよびスケールアウト時に SLS ログ収集に自動的に接続します。その後、SLS コンソールでキーワードによるログ検索が可能になります。詳細については、「SLS へのログ収集の設定」をご参照ください。

収集を設定するには、ログ設定ページで次の操作を実行します。

  1. SLS ログサービスを有効にするをオンにします。

  2. 新しい SLS リソースを作成または既存の SLS リソースを使用を選択します。

  3. 収集設定テーブルで、ログタイプ (コンテナ標準出力など) を選択し、ログソース (stdout.log など) を設定します。

  4. 追加をクリックして、収集ルールを追加します。

    ログソースはワイルドカードをサポートしています。たとえば、/tmp/log/*.log は、/tmp/log ディレクトリとそのサブディレクトリ内の .log で終わるすべてのファイルを収集します。

環境変数を使用して Logtail 起動パラメータを設定することもできます。詳細については、「Logtail 収集パフォーマンスの向上」をご参照ください。

代わりにログを Kafka にインポートする場合は、ビジネスシナリオに基づいて、Kafka データを Elasticsearch などの別の永続ストアに配信できます。これにより、ログの一元管理と分析が容易になります。詳細については、「Kafka へのログ収集の設定」をご参照ください。

リアルタイムログ

SAE は標準出力ログを自動的に収集し、最新の 500 エントリを保持し、SAE コンソールで表示できるようにします。詳細については、「リアルタイムログの表示」をご参照ください。

リアルタイムログページで、Pod 名ドロップダウンリストからインスタンスを選択し、リアルタイムログの更新頻度を設定します (デフォルトは 15 秒です)。

最新の 500 エントリを超える標準出力ログを保持するには、ログをファイルにリダイレクトします。

  1. 起動コマンド設定のargs フィールドに >> /tmp/stdout.log 2>&1 と入力して、標準出力と標準エラーを /tmp/stdout.log ファイルにリダイレクトします。

  2. ファイルログで説明されているように、/tmp/stdout.log のファイル収集を設定します。Webshell を使用してファイルをオンラインで表示することもできます。Webshell は、インスタンスが正常に実行されている場合にのみ使用できます。

ストレージ

各 SAE インスタンスにはシステムディスクがあります。外部ストレージへの読み取りまたは書き込みが必要な場合は、Apsara File Storage NAS または OSS を使用してください。NAS と OSS を使用することで、SAE は静的ファイルの独立したホスティングもサポートします。ランタイムで生成されたコード、テンプレート、アップロードされたファイルを永続化し、インスタンス間でファイルを共有します。システムディスク容量については、「制限とクォータ」をご参照ください。

説明

ロギングシナリオでは、NAS や OSS ではなく SLS を使用してください。詳細については、「SLS へのログ収集の設定」をご参照ください。

NAS

SAE は Apsara File Storage NAS をサポートしており、アプリケーション インスタンスのデータの永続性とインスタンス間のデータ配信の課題を解決します。NAS ストレージは、ECS インスタンスまたは SAE にマウントした後にのみアクセス可能です。詳細については、「NAS ストレージの設定」をご参照ください。

OSS

OSS は、バケットを視覚的に管理するための便利なツールとコンソールを提供します。OSS は、設定ファイルやフロントエンドの静的ファイルのマウントなど、読み取り集中型シナリオに適しています。SAE コンソールでアプリケーションをデプロイする際に OSS ストレージを設定すると、OSS コンソールでデータにアクセスできます。詳細については、「OSS ストレージの設定」をご参照ください。

説明

ossfs ツールは、ログ書き込みシナリオでは使用できません。詳細については、ossfs 1.0 をご参照ください。

ファイルのアップロードとダウンロード

SAE インスタンスからローカルマシンにファイルをダウンロードするには、Webshell を使用してインスタンスにログインし、組み込みのファイルアップロードおよびダウンロード機能を使用してください。詳細については、「Webshell を使用したファイルのアップロードとダウンロード」をご参照ください。

NAS や OSS ストレージの利用に加えて、ossutil ツールで OSS のファイルを操作することもできます。NAS と OSS は、コード開発とデバッグも簡素化します。定期チェックを通じて、または OSS にログをアップロードすることで、SAE アプリケーションを診断できます。Alibaba Cloud OSS を使用したログのアップロードとダウンロードの方法については、「定期チェックによるアプリケーションの診断」をご参照ください。

伸縮性

SAE は、手動スケーリング、定時スケーリング、メトリクスベースのスケーリング、ハイブリッドスケーリング、および定時起動/停止などの伸縮ポリシーをサポートしています。伸縮性は、クラウドネイティブアーキテクチャおよびアプリケーションの典型的な特徴であり、マシンコストを削減し、O&M 効率を向上させます。

手動スケーリング

手動スケーリングは、手動 O&M のシナリオに適しています。 SAE のスケーリングはコンテナイメージに基づいているため、ECS インスタンスに直接デプロイされたアプリケーションのスケーリングよりも高速です。 詳細については、「手動スケーリング」をご参照ください。

スケジュールされたスケーリング

スケジュールされたスケーリングは、予測可能なトラフィックのシナリオに適しています。たとえば、飲食業や教育業界では、毎日明確な朝と夕方のビジネスピークがあるため、異なる時間帯に異なる数のインスタンスを設定することで、サーバーリソースを実際のビジネストラフィックに合わせることができます。詳細については、「自動スケーリングポリシーの設定」をご参照ください。

メトリクスベースのスケーリング

メトリクスベースのスケーリングは、比較的予測が困難なトラフィックのシナリオに適しています。現在、CPU、メモリ、TCP 接続、QPS、レスポンスタイム (RT) などのメトリクスをサポートしています。詳細については、「自動スケーリングポリシーの設定」をご参照ください。

ハイブリッドスケーリング

ハイブリッドスケーリングは、バーストトラフィックの処理とスケジュールされたスケーリングの両方が必要なシナリオに適しています。たとえば、インターネット、教育、飲食業界などで、既知の時間帯に対してインスタンス数をきめ細かく調整する場合に使用します。

たとえば、平日に伸縮性インスタンスの最大数を max、最小数を min に設定します。週末に min 個のインスタンスを維持する必要がない場合は、週末用に別のインスタンス数を設定して min を削減します。詳細については、「自動スケーリングポリシーの設定」をご参照ください。

スケジュールされた起動と停止

定時起動/停止機能は、名前空間ごとにアプリケーションをスケジュールに従って一括で起動および停止する機能です。たとえば、開発環境またはテスト環境のすべてのアプリケーションをスケジュールに従って起動および停止できます。開発環境またはテスト環境が毎日 08:00 から 20:00 までのみ必要で、それ以外の時間はアイドル状態である場合、SAE で定時起動/停止を設定することでコストを削減できます。詳細については、「定時起動/停止ルールを作成する」をご参照ください。

モニタリングとアラート

SAE は、Java と PHP 向けの組み込みのインフラストラクチャモニタリングと ARMS ビジネスモニタリングを提供します。アラート管理は、アラート集約、通知、自動エスカレーションなどの機能を提供し、ビジネスアラートを迅速に検出して修正するのに役立ちます。

インフラストラクチャモニタリング

インフラストラクチャモニタリングは、CPU、負荷、メモリ、ディスク、ネットワーク、TCP 接続を対象としています。詳細については、「インフラストラクチャモニタリング」をご参照ください。インフラストラクチャモニタリングは現在、Alibaba Cloud CloudMonitor によって提供されているため、CloudMonitor コンソールにログインして、カスタムモニタリングダッシュボードを設定することもできます。

アプリケーションモニタリング

マイクロサービスアーキテクチャでは、監視システムがないと問題の検出と診断が困難になります。SAE は Application Real-Time Monitoring Service (ARMS) を統合して、アプリケーションダッシュボード、JVM モニタリング、スローコールモニタリング、トレース分析、アラートを提供し、企業がマイクロサービスアーキテクチャを採用する際のハードルを下げます。詳細については、「アプリケーションモニタリング」をご参照ください。

アプリケーションに統合される ARMS のエディションと適用料金は、アプリケーションのエディションによって異なります。

SAE の Professional Edition アプリケーションは、ARMS Premium Edition のアプリケーションモニタリング機能を統合しています。アプリケーションモニタリングを有効にすると、追加料金は発生せず、アプリケーションはリアルタイムでモニタリングされます。詳細については、「Professional Edition のアプリケーションモニタリング」をご参照ください。

SAE の Standard Edition アプリケーションは、ARMS Basic Edition のモニタリングを統合しており、アプリケーションモニタリングを有効にすると無料で使用できます。Standard Edition は、ARMS Premium Edition のモニタリングを有効にするためのエントリポイントも提供します。Standard Edition アプリケーションで ARMS Premium Edition を有効にすると、追加料金が発生し、データを ARMS コンソールで表示する必要があります。詳細については、「Standard Edition のアプリケーションモニタリング」をご参照ください。

アラート設定

SAE では、前述のすべてのモニタリング項目に対してアラートを設定できます。詳細については、「アラート管理」をご参照ください。

高可用性

SAE にアプリケーションをデプロイした後は、次の 3 つの機能が可用性を保護します。ヘルスチェックでは、アプリケーションインスタンスとサービスが正常に稼働しているかを確認でき、例外が発生した場合に問題の切り分けに役立ちます。マルチ vSwitch デプロイメントでは、データセンターレベルの障害に対応します。スロットリングと縮退では、バーストトラフィックからアプリケーションを保護します。

マルチ vSwitch デプロイメント

データセンターレベルの障害に対応するには、本番向けの SAE アプリケーションに複数の vSwitch を設定します。vSwitch を作成する際は、IP アドレス数を十分に (100 個以上) 計画してください。IP アドレスが不足すると、作成失敗または弾性スケーリング失敗が発生します。詳細については、「Switch vSwitches」をご参照ください。

複数の vSwitch を使用すると、SAE は複数のゾーンにまたがってリソースを自動的にスケールします。そのため、リソースの分散状況を追跡する必要がなく、リソースプール全体の可用性を維持できます。たとえば、単一障害点またはゾーン障害が発生した場合、SAE は障害が発生したインスタンスと同数のインスタンスを正常なノードまたは別のゾーンに移行します。

複数の vSwitch は、次のいずれかの方法で設定します。

  • 作成時 — 異なるゾーンにある 2 つ以上の vSwitch を選択して、マルチゾーンのディザスタリカバリを実現します。

  • 作成後 — [Application Information] ページで [Multi-vSwitch Deployment] リンクをクリックし、vSwitch を追加します。

説明

vSwitch を追加したら、データベースのホワイトリストも適宜更新してください。詳細については、「Access Alibaba Cloud databases from applications」をご参照ください。

グレースフルな起動とシャットダウン

SAE にアプリケーションをデプロイする場合、通常は最初にスケールアウトし、その後スケールインします。トラフィックのグレースフルな起動とシャットダウンには、次の 2 つの主要な課題があります。

  • 新たにスケールアウトしたインスタンスがトラフィックを処理できる状態になっているか。

  • 古いインスタンスをどのようにグレースフルに破棄するか。

    SAE は Kubernetes を基盤としており、アプリケーションインスタンス向けの liveness プローブと、アプリケーションサービス向けの readiness プローブという 2 つのヘルスチェックを提供します。これら 2 つの課題に対応するため、SAE は readiness プローブをサポートしています。readiness プローブは、インスタンスが準備完了かどうかを定期的にチェックし、SAE はインスタンスの準備が完了した後にのみ、新しいインスタンスにトラフィックをルーティングします。チェックに失敗した場合、SAE はそのインスタンスにトラフィックをルーティングしません。古いインスタンスを破棄する前に、まずトラフィックから切り離されます。また、インスタンスを破棄する前のシャットダウンスクリプトと待機時間を設定できます。詳細については、「Configure health checks」をご参照ください。

liveness プローブは、インスタンスが起動したかどうかも定期的にチェックします。チェックに失敗した場合、SAE はコンテナを自動的に再起動します。この機能は、例外シナリオにおける自動運用保守をサポートしますが、障害時のコンテキストが失われ、原因調査が困難になる可能性があります。シナリオに応じて、liveness プローブを設定するかどうかを判断してください。

readiness プローブと liveness プローブに加えて、マイクロサービスのシナリオでは、サービスレジストリのキャッシュ問題を解決するためにマイクロサービスのグレースフルシャットダウンが必要です。コンシューマークライアントはデータをキャッシュするため、マイクロサービスプロバイダーのオフライン通知をタイムリーに受信できません。その結果、通常はプロバイダーインスタンスの登録をサービスレジストリから解除し、コンシューマーのキャッシュが更新されるまで待機する必要があります。この問題を解決するため、SAE は Microservices Engine (MSE) のグレースフルシャットダウン機能と連携し、このプロセスを製品機能として提供します。

本番環境では、自動スケーリングやロールバック、またはアップグレードなどの機能によって、短時間のサービス停止や多数のビジネスモニタリングエラーが発生する場合があります。これらの課題に対応するため、SAE はマイクロサービス向けのグレースフルな起動をサポートしています。コンシューマーは、プロバイダーがサービスレジストリに登録されるとすぐにマイクロサービスプロバイダーを呼び出せます。ただし、その時点では、データベース接続プールの初期化など、プロバイダー側で追加の初期化が必要な場合があります。トラフィックが多いマイクロサービスアプリケーションでは、グレースフルな起動を有効にしてください。詳細については、「Configure graceful start and shutdown」をご参照ください。

スロットリングと縮退

アプリケーションがマイクロサービスアーキテクチャとモノリシックアーキテクチャのどちらを採用していても、フラッシュセールなどのバーストトラフィックに直面すると、突然クラッシュする可能性があります。また、マイクロサービスアプリケーションではカスケード障害が発生する場合もあります。こうした高トラフィックのシナリオに対応するため、SAE は Microservices Engine (MSE) のトラフィック保護機能と連携しています。これにより、Java アプリケーションのスロットリングと縮退のルールを容易に設定および管理でき、アプリケーションの可用性を保護します。詳細については、「Traffic protection」をご参照ください。

トラブルシューティング

アプリケーションが実行されない、または到達できない場合は、以下のエントリポイントを参照してください。

  • インスタンスとサービスが正常に実行されているかどうかの確認 — ヘルスチェックを設定し、例外発生時に結果を確認して問題を特定します。詳細については、「Graceful start and shutdown」をご参照ください。

  • アプリケーション出力の確認 — [Real-time Logs] ページで最新の標準出力エントリを表示するか、SLS コンソールで収集されたログを検索します。詳細については、「Logs」をご参照ください。

  • ネットワーク接続の確認 — 宛先サービスのセキュリティグループとホワイトリストがトラフィックを許可していることを確認します。その他のトラブルシューティング手順については、「FAQs」をご参照ください。

  • Java マイクロサービスのレジストリまたは設定センターの確認 — nacos-client のバージョンと、組み込み設定センター (ACM) または MSE 設定センターの構成を確認し、名前空間名に一貫性があることを確認します。

次のステップ

アプリケーションの実行後、目標に応じて次の手順に進んでください:

  • リリースプロセスとアクセス制御を強化するには、「アプリケーションのデプロイ」をご参照ください。

  • 可観測性を追加するには、「ログ」と「モニタリングとアラート」をご参照ください。

  • 本番環境レベルの可用性に備えるには、「高可用性」をご参照ください。

  • テスト環境のコストを管理するには、スケジュールされた開始と停止または手動スケーリングを使用して、不要になったインスタンスをリリースしてください。

    さまざまなビジネス要件に対応するため、SAE は関連するベストプラクティスを提供しています。このトピックで説明した伸縮性、ネットワーキング、ストレージ、Alibaba Cloud データベースへのアクセスに加えて、ベストプラクティスではイメージ、アプリケーションアクセラレーション、JVM パラメーター設定も扱っています。より一般的なシナリオについては、「ベストプラクティス」をご参照ください。