Amazon RDS Proxyは、Amazon RDSおよびAuroraで実行されるMySQLおよびPostgreSQLデータベース用の新しいフルマネージの高可用性データベースプロキシである。このサービスは、データベース接続を高速でOpen/Closeするサーバレスアーキテクチャやその他のアプリケーションに合わせて調整されている。
re:Invent 2019の数日前に、AWSはMySQLのAmazon RDS Proxyのパブリックプレビューをリリースした。これは、アプリケーションとRDSまたはAmazon Aurora上のデータベースの間に位置するフルマネージドの高可用性データベースプロキシであった。7か月後、このサービスはPostgreSQLもサポートするようになり、一般に利用可能になる。
イメージ引用: https://aws.amazon.com/rds/proxy/
RDS Proxyを使用すると、アプリケーションはデータベースで確立された接続をプールして共有できる。これは、現在接続プールに依存しておらず、データベース接続を頻繁にOpen/Closeし、データベースのメモリと計算リソースを使い果たすサーバに役立つ。サーバレスアーキテクチャはリレーショナルデータベースをより効率的に使用し、プロキシはアプリケーションのスケーラビリティを向上させる。クラウドエコノミストであり、先週のAWSニュースレターの著者であるCorey Quinn氏は、「これにより、『10,000個のラムダ関数があなたのデータベースを死ぬほど抱きしめる』という問題を解決した」と述べている。
また、マネージドプロキシがインスタンス障害やデータベースフェイルオーバの場合のダウンタイムを短縮できる、より伝統的なデプロイメントにもメリットがある。アプリケーションからの接続を維持しながら、プライマリノードに障害が発生した場合に、RDS Proxyは自動的にスタンバイ・データベース・インスタンスに接続する。Anton Okmyanskiy氏とSteve Abraham氏は、Amazon Web Servicesの主任エンジニアと主任データアーキテクトであり、以下のデモンストレーションをした。
RDS Proxyは、フェイルオーバ後のクライアント回復時間をAmazon Aurora MySQLの場合は最大79%、Amazon RDS for MySQLの場合は最大32%削減します (...) RDSプロキシはフェイルオーバを実行するためにDNS伝播に依存しないため、フェイルオーバを改善します。RDS Proxyは、Auroraクラスタクライアントのリーダとライターの移行の問題を解消します。Auroraデータベースクラスタ内の各データベースインスタンスをアクティブに監視して、クライアントに代わってフェイルオーバ中に迅速に動作します。
新しいプロキシは、コンソールまたはAWSコマンドラインインターフェイスを使用して、数ステップで作成できる。
aws rds create-db-proxy \
--db-proxy-name channy-proxy \
--role-arn iam_role \
--engine-family { MYSQL|POSTGRESQL } \
--vpc-subnet-ids space_separated_list \
[--vpc-security-group-ids space_separated_list] \
[--auth ProxyAuthenticationConfig_JSON_string] \
[--require-tls | --no-require-tls] \
[--idle-client-timeout value] \
[--debug-logging | --no-debug-logging] \
[--tags comma_separated_list]
コード引用: https://aws.amazon.com/blogs/aws/amazon-rds-proxy-now-generally-available
RDS Proxyの料金体系には、インスタンスクラスや他の構成に関係なく、基盤となるデータベースインスタンスのvCPUごとの1時間あたりの固定金額という1つのディメンションしかない。プロキシの背後で実行されるインスタンスが大きいほど、価格が高くなる。
ただし、AWSが指摘するように、広く採用されるのを妨げる可能性のあるいくつかの制限がある。RDS Proxyは、ホストの置換、名前の変更、インスタンスの拡大または縮小など、データベースインスタンスのセットに対する変更を追跡しない。つまり、インスタンスの垂直スケーリング中のダウンタイムを削減するために使用することはできず、デプロイの弾力性が低下する可能性がある。さらに、プロキシはまだMySQL 8.0では使用できず、Amazon VPC内でのみ機能する。