クラウドネイティブ アプリケーション開発のためのコスト最適化戦略

2020年6月18日 に投稿済み

Senior Product Marketing Manager

本日は、Azure Kubernetes Service (AKS) および Azure Cosmos DB や Azure Database for PostgreSQL などのマネージド データベースを使用してクラウドネイティブ アプリケーション開発プロセスを最適化するために Azure で活用できる戦略について詳しく検討します。

Azure Kubernetes Service (AKS) を使用してコンピューティング リソースを最適化する

AKS を使用すると、マネージド Kubernetes クラスターを Azure 内に簡単にデプロイできます。AKS では、責任の多くを Azure にオフロードすることで、Kubernetes の管理の複雑さと運用上のオーバーヘッドを軽減します。マネージド Kubernetes サービスとして、Azure は正常性監視やメンテナンスなどの重要なタスクを自動的に処理します。

AKS を使用してコンテナー ワークロードをデプロイする場合、コストを削減し、開発およびテスト環境を実行する方法を最適化するいくつかの戦略があります。

複数のユーザー ノード プールを作成し、ゼロへのスケーリングを有効にする

AKS では、同じ構成のノードはノード プールにまとめられます。コンピューティングまたはストレージの要件が異なるアプリケーションをサポートするには、追加のユーザー ノード プールを作成できます。ユーザー ノード プールは、アプリケーション ポッドをホストするという主な目的を果たします。たとえば、これらの追加のユーザー ノード プールを使用すると、コンピューティング集約型のアプリケーションに GPU を提供したり、高パフォーマンスな SSD ストレージにアクセスを提供したりできます。

仮想マシン スケール セットで実行される複数のノード プールがある場合、クラスター オートスケーラーを構成してノードの最小数を設定できます。また、稼働時間外など必要でない時に、ノード プール サイズを手動でゼロにスケール ダウンすることもできます。

詳細については、AKS でノード プールを管理する方法をご覧ください。

スポット ノード プールでクラスター オートスケーラーを使用する

AKS のスポット ノード プールは、スポット VM を実行する仮想マシン スケール セットによりサポートされます。スポット VM を使用すると、Azure の未使用の容量を活用して、コストを大幅に削減できます。スポット インスタンスは、バッチ処理ジョブや開発/テスト環境などの、中断を処理できるワークロードに最適です。

スポット ノード プールを作成する場合、時間ごとの最大使用料金を定義すると共に、クラスター オートスケーラーを有効にできます。これは、スポット ノード プールで使用することが推奨されています。クラスターで実行されているワークロードに基づいて、クラスター オートスケーラーは、ノード プール内のノードの数をスケールアップ、スケールダウンします。スポット ノード プールでは、追加のノードが引き続き必要な場合、クラスター オートスケーラーは排除の後にノードの数をスケールアップします。

詳細情報とガイダンスについては、AKS クラスターにスポット ノード プールを追加するのドキュメントをご覧ください。

Azure Policy を使用して Kubernetes リソース クォータを適用する

名前空間レベルで Kubernetes リソース クォータを適用 (英語) して、リソース使用率を監視して必要に応じてクォータを調整します。これにより、開発チームまたはプロジェクト間でリソースを予約、制限できるようになります。これらのクォータは名前空間で定義され、CPUとメモリ、GPU などのコンピューティング リソース、またはストレージ リソースのクォータを設定するために使用できます。ストレージ リソースのクォータには、作成できるシークレット、サービス、またはジョブの最大数など、特定のストレージ クラスおよびオブジェクト数のディスク領域の合計容量が含まれます。

Azure Policy は組み込みのポリシーを介して AKS と統合され、一元化された、一貫した方法で、クラスターに大規模な強化と保護を適用します。Azure Policy アドオンを有効にすると、Azure Policy は AKS クラスターへの割り当てをチェックし、ポリシーの詳細をダウンロードおよびキャッシュし、フル スキャンを実行して、ポリシーを適用します。

ドキュメントを参照して、クラスター上で Azure Policy アドオンを有効にし、CPU およびメモリのリソース制限ポリシーを適用して、CPU およびメモリのリソース制限が Azure Kubernetes Service クラスター内のコンテナーで定義されるようにします。

Azure Cosmos DB を使用してデータ層を最適化する

Azure Cosmos DB は、あらゆるスケールに対応したオープン API を備えた、高速な NoSQL データベースです。フル マネージド サービスである Azure Cosmos DB は、1 桁ミリ秒の待機時間と 99.999% の可用性のサービス レベル アグリーメント (SLA) が適用され、世界中で即時の柔軟なスケーラビリティを備えた、保証された速度とパフォーマンスを提供します。Azure Cosmos DB はクリック 1 つでお客様のデータを世界中すべての Azure リージョンにレプリケートし、MongoDB、Cassandra、および Gremlin などのさまざまなオープンソース API を使用できるようにします。

開発およびテスト環境の一部として Azure Cosmos DB を使用している場合は、コストを節減する方法がいくつかあります。Azure Cosmos DB では、プロビジョニングされたスループット (要求ユニット、RU) と消費したストレージ (GB) に対して課金されます。

Azure Cosmos DB Free レベルを使用する

Azure Cosmos DB の Free レベルを使用すると、アプリケーションの利用開始、開発、およびテストを簡単に実施できるようになり、小規模な実稼働ワークロードを無料で実行することも可能です。アカウント上で Free レベルを有効にすると、そのアカウントでの最初の 400 RU/秒のスループットと 5 GB のストレージが無料で利用できるようになります。また、データベース レベルで 400 RU/秒を共有する 25 個のコンテナーを備えた 1 つの共有スループット データベースを作成し、すべて Free レベルで対応することもできます (Free レベルのアカウントでは、5 つの共有スループット データベースが上限になります)。Free レベルは、アカウントの有効期間中は無期限に存続し、無制限のストレージとスループット (RU/秒)、SLA、高可用性、すべての Azure リージョンでのターンキー グローバル分散など、通常の Azure Cosmos DB アカウントの利点と機能をすべて備えます。

Azure Cosmos DB を無料でお試しください

Azure Cosmos DB を使用してプロビジョニングされたスループットを自動スケーリングする

プロビジョニングされたスループットは、アプリケーションのパターンに応じて自動的にスケール アップまたはスケール ダウンできます。  最大スループットが設定されたら、Azure Cosmos DB のコンテナーおよびデータベースはアプリケーションのニーズに基づいて自動的および瞬時にプロビジョニングされたスループットをスケーリングします。

自動スケーリングにより、SLA を維持しつつ、容量計画と管理の要件を排除できます。そのため、アクティビティのピークを伴う、変動が激しく、予測不可能なワークロードのシナリオに理想的です。また、新しいアプリケーションを展開している時や、プロビジョニングされたスループットがどれくらい必要かわからない場合にも適しています。開発およびテスト データベースの場合、Azure Cosmos DB コンテナーでは、使用していないときには事前設定された最小値 (400 RU/秒または最大値の 10% から開始) までスケールダウンされます。自動スケーリングは Free レベルと組み合わせることもできます。

シナリオの詳細と方法については、Azure Cosmos DB の自動スケーリングのドキュメントを参照してください。

データベース レベルでスループットを共有する

共有スループット データベースでは、データベース内のすべてのコンテナーはデータベースのプロビジョニングされたスループット (RU/秒) を共有します。たとえば、400 RU/秒のスループットを備えたデータベースをプロビジョニングしており、4 つのコンテナーがある場合、4 つのコンテナーすべてが 400 RU/秒を共有します。開発またはテスト環境において、各コンテナーが頻繁に利用されず、必要とするスループットが最小限の 400 RU/秒よりも少ない場合、共有スループット データベースにコンテナーを配置することで、コストを最適化できます。

たとえば、開発またはテスト環境に 4 つのコンテナーがあるとします。専用スループット (最小 400 RU/秒) を持つコンテナーを 4 つ作成すると、スループットの合計は 1,600 RU/秒になります。それとは対照的に、共有スループット データベース (最小 400 RU/秒) を作成して、そこにコンテナーを配置すれば、スループットの合計は 400 RU/秒のみとなります。一般的に、共有スループット データベースは、個々のコンテナーに保証されたスループットを必要としないシナリオに最適です。

開発およびテスト環境で使用できるデータベースについては、共有スループット データベースの作成方法のドキュメントを参照してください。

Azure Database for PostgreSQL を使用してデータ層を最適化する

Azure Database for PostgreSQL は、コミュニティ エディションの PostgreSQL 向けにエンタープライズ グレードの機能を提供するフルマネージド サービスです。特に危機の時期においてもオープン ソース テクノロジは成長を続けており、ユーザーによる PostgreSQL 採用が増加しています。PostgreSQL をオープンソースとして使用し続けながら、アプリケーションの一貫性、パフォーマンス、セキュリティ、および耐久性を確保できるためです。開発者中心のエクスペリエンスと、コストが最適化された新機能により、Azure Database for PostgreSQL はデータベース管理の作業を引き受け、開発者がアプリケーションに集中することを可能にします。

予約容量の料金設定 - Azure Database for PostgreSQL で利用可能に

今回 Azure Database for PostgreSQL で利用可能になった予約容量を通して、Azure 上でフルマネージドの PostgreSQL データベースを実行するコストを管理しましょう。現在利用可能な通常の従量課金制の支払いオプションと比較して、最大 60% 節約できます。

詳細については、Azure Database for PostgreSQL の価格を参照してください。

PostgreSQL でのハイパフォーマンスのスケールアウト

Hyperscale によって、単一ノードの PostgreSQL データベースのハイパフォーマンスの水平スケールアウトの力を活用しましょう。手動シャーディングによる高コストと労力を避けつつ、トランザクションと分析を 1 つのデータベースで実行することにより時間を節約できます。

今すぐ Azure Database for PostgreSQL - Hyperscale をご利用ください。

オープン ソースの PostgreSQL と互換性を維持する

Azure Database for PostgreSQL を活用することで、アプリケーションを大幅に再構築することなく、コミュニティ エディションの PostgreSQL の数多くのイノベーション、バージョン、およびツールを継続して利用できます。Azure Database for PostgreSQL は拡張機能に対応しているため、Intelligent Performance、Query Performance Insights、および Advanced Threat Protection などの最高品質のエンタープライズ グレードの機能をいつでもすぐに利用できるようにしつつ、PostgreSQL で最適なシナリオを引き続き実現することを可能にします。

詳細については、Azure Database for PostgreSQL の製品ドキュメントを参照してください。