2024年8月21日

Prisma Accelerateのコネクションプールにオートスケーリングを導入

初回リリース以来、Prisma Accelerateはすでに100億近いクエリを処理してきました!さらに改善を続けており、オートスケーリングの追加により、Prisma Accelerateはアプリケーションのスケーリングをさらに支援し、データベース接続のボトルネックに関する懸念を取り除きます。

Connection pooling using multiple instances of accelerate's connection poolers

コネクションプーリングが重要な理由

コネクションプーリングは、データベースのパフォーマンスに関して、しばしば見過ごされたり、長期間無視されたりすることがあります。

開始当初は、コネクションプーリングなしでも対応できます。小規模なデータベースサーバーでも、1つまたは2つのアプリケーションサーバーが5〜10の接続を確立する程度なら処理可能です。しかし、成長するにつれて、より良い接続管理は迅速かつ簡単な勝利をもたらします。

ほとんどの人は、コネクションプーラーは大規模なスケールでのみ必要だと考えていますが、それよりもはるかに早く導入することが有益です!

従来のデータベース接続における課題

アプリケーションがデータベースと対話する場合、通常以下の手順に従います

  1. データベースへのTCP接続を開く
  2. データベースにクエリを送信する
  3. TCP接続を閉じる

このプロセスは、すべてのデータベース操作に対して繰り返されます。データベース接続の開閉は、認証、3ウェイハンドシェイク、メモリやCPUなどのリソースの割り当てが必要なため、非常に遅く、リソースを大量に消費します。

Requests to the database from around the globe

この課題は、現代のサーバーレスおよびエッジコンピューティング環境でさらに悪化します。これらのシナリオでは、個々の関数呼び出しごとに新しいデータベース接続を確立しようとします。

コネクションプーリングがアプリケーションに役立つ方法

リクエストごとに接続を開閉する代わりに、コネクションプーラーは開いているデータベース接続のプールを維持し、将来データベースへのリクエストが必要になったときに再利用できるようにします。

データベースとの対話のプロセスは次のようになります

  1. プールマネージャーから接続を要求する
  2. データベースにクエリを送信する
  3. 接続をプールに返す

コネクションプールを使用すると

  • 常に接続を作成・閉じることによるオーバーヘッドを削減
  • データベース操作の応答時間を改善
  • サービス停止を引き起こすことなくトラフィックのピークを管理するのに役立つ
  • データとユーザー数の増加に合わせて効果的にスケール

コネクションプーリングの利点については、最近の記事「コネクションプーリングでブラックフライデーを救う」をご覧ください。

Prisma Accelerateのオートスケーリング導入

昨年ローンチされて以来、Prisma Accelerateは100億近いクエリを処理することで、本番環境での準備が整っていることを証明してきました。次の1000億のクエリを目指し、Prisma Accelerateをさらに堅牢にする機能をリリースしようとしています。オートスケーリングの追加により、Prisma Accelerateはあらゆるアプリケーションのスケーリングにさらに適したものとなるでしょう!

新しいオートスケーリングの仕組み

  1. Accelerateを有効にすると、接続制限を設定します。
  2. Accelerateは、それらの接続のうちどれくらいがアクティブに使用されているかを継続的に監視します。
  3. アプリケーションのトラフィックを処理するためにより多くのリソースが必要な場合、設定した接続制限まで追加のリソースが割り当てられます。
  4. トラフィックが減少すると、追加のリソースは削除されます。

Autoscaling Accelerate's connection pooling nodes

スケーリングは、負荷が増加しボリュームが拡大するにつれて、より多くのコネクションプールインスタンスをプロビジョニングすることで水平に発生します。これにより、予測不可能な急増するワークロードだけでなく、成長するアプリケーションにも対応でき、大規模なボリュームを管理できるようになります。

Prisma Accelerateでの接続制限の設定

Prisma Accelerateでは、既存のAccelerate有効環境の設定を有効化または更新する際に表示される「Connection Pool」セクションにあるコネクションプールサイズのドロップダウンから、接続制限を設定できます。

Configuring Accelerate connection pool size in Platform Console

Accelerateのコネクションプールサイズの設定について詳しくは、ドキュメントをご覧ください:ドキュメント

適切な接続制限の設定が重要な理由

アプリケーションが重い負荷にさらされている場合、適切な接続制限を設定することが重要です。その理由は以下の通りです。

  • リソース割り当て:設定された制限は、Accelerateがリソースを効率的に割り当てるのに役立ちます。
  • パフォーマンス指標:アプリケーションのデータベース対話パターンを理解するための重要な指標として機能します。
  • スケーリング効率:適切な制限により、タイムリーなスケーリングが保証され、パフォーマンスに影響を与える前にボトルネックを防ぎます。

接続制限を設定するためのベストプラクティス

アプリケーションの適切な接続制限を設定するのに役立つベストプラクティスをいくつかご紹介します。

  1. 接続制限を設定する:アプリケーションのニーズを分析し、それに応じて接続制限を設定してください。利用可能な接続の約3分の1をAccelerateに割り当てることをお勧めします。これにより、データベースと対話する必要がある他のサービスが使用できる接続のバッファが確保されます。Accelerateは、スキーマ変更の効率的な管理や新しいPrismaバージョンへの移行のために、割り当てられた接続を超えて一時的に急増する可能性があることに注意してください。
  2. 必要に応じて調整:アプリケーションの成長に合わせて、接続制限を見直し、調整してください。

接続制限を理解し活用することで、単に設定を調整するだけでなく、Accelerateがアプリケーションのパフォーマンスを最適化する方法に直接影響を与えます。コネクションプーリングは、大規模なスケールだけのものではありません。成長のさまざまな段階にあるアプリケーションに恩恵をもたらす技術です。

データベースのラウンドトリップを減らすことでアプリケーションのパフォーマンスを向上させるためのもう一つのステップとして、キャッシングを検討されているなら、その通りです。Accelerateもそれをサポートしています!データベースキャッシングの利点については、最近のブログ記事「スピードとコスト削減:Prisma Accelerateでデータベースクエリをキャッシュする」で詳しく学べます。

今すぐAccelerateを試してアプリケーションのパフォーマンスを向上させましょう

Prisma Accelerateでどのようなパフォーマンス向上が得られるかご自身で確認したい場合は、Accelerateスピードテストをご覧いただくか、当社のスタータープロジェクトのいずれかを使用して開始してください。


Accelerateを始める

次の記事をお見逃しなく!

Prismaニュースレターに登録

© . All rights reserved.