fu3ak1's tech days

何事もシンプルに。主にAWS関連の記事を書いています

re:Invent2020セッションレポート :(EMB023) Amazon Aurora Serverless v2: Instant scaling for demanding workloads

概要

2020 re:Inventで新しく発表された、Amazon Aurora Serverless v2のセッションです。もともとAurora Serverlessは機能としてありましたが、今回パワーアップしてv2としてリリースされました。

セッション内容

Auroraの概要

通常の(サーバーレスじゃない)Auroraの概要です。ここらへんはBlackBelt公式ドキュメントも(特に日本の方は)わかりやすいと思います。

AuroraはAWSクラウド環境用に開発した独自のリレーショナルデータベースサービスで、MySQLPostgreSQLに互換性があります。通常のRDSよりもクラウドに特化した機能が多く備わっています。独自となっていますが、接続するアプリケーションから見ると従来のMySQLPostgreSQLと同様になりますので、特別アプリケーションの変更は不要です。

f:id:fu3ak1:20201213213531p:plain

  • コンピュート機能とストレージ機能は分離されていて、データは3AZに分散されている

f:id:fu3ak1:20201213213758p:plain

  • ストレージは分離されているため、Writer(書き込み)またはReader(読み込み)ノードにアタッチするという形でノードを生成
  • Writerは1ノード、Reader(リードレプリカ)は最大15個作成可能です。指定のReaderでカスタムリードエンドポイントの作成も可能

f:id:fu3ak1:20201213214216p:plain

  • クラスター」という単位でAuroraを設計、構築していく
  • アプリケーションの内容がデータベースのIOスループットやレイテンシの要件に影響する
  • マルチAZ等可用性の設計も行う
  • ストレージの拡張やフェイルオーバーやAWS側で自動実行される

f:id:fu3ak1:20201213214717p:plain

  • DBのキャパシティ管理は難しい
  • 3つの例を紹介、スパイキー(たまに高い)、不規則(開発など)、一定の傾向があるもの
  • ピーク時に合わせて用意すると料金が高くなる
  • ピークよりも低く設定するとユーザー影響が出る
  • 自前でモニター、キャパシティ管理は大変
  • そこでAurora Serverless!!

f:id:fu3ak1:20201213215200p:plain

Aurora Serverless v2

  • キャパシティをオートスケールしてくれる Serveless v2
    • 素早くスケールするので急なアクセス増にも耐えられる
    • きめ細かく的確にキャパシティを設定してくれる
    • 通常のAuroraの機能もフルで使用できる。マルチAZやグローバルDBなど
    • 最大90%のコスト削減

f:id:fu3ak1:20201213215700p:plain

  • 読み書き(Read-Write)のスケーリング
    • 最初は特にノードはなく、アプリからアクセスがあると、Router fleetという部分がそれを処理し、Writerを起動する
    • 起動の単位はAurora Capacity Unit(ACU)と言う
    • アクセス数、クエリ数が多くなるとACUを自動で増やしていく
    • 最低キャパシティを指定して、常時稼働させておくことも可能。初回接続時のインパクトを抑える

f:id:fu3ak1:20201213220441p:plain

  • 読み込み(Read-Only)のスケーリング
    • Write同様にアクセスに応じて自動スケールする
    • 読み込み専用のアクセスに応じてスケール

f:id:fu3ak1:20201213220718p:plain

  • 通常のAuroraとMixも可能
  • この例ではReaderのみServerless v2

f:id:fu3ak1:20201213220950p:plain

デモ

※デモは動画のほうが見やすいと思います。気になる方は是非直接セッション動画をご覧ください

  • CloudWatchメトリクスの画面。オンラインストアを例とし、青がオーダー数でオレンジがAuroraのキャパシティ
  • スクリプト処理でSQLを継続実行
  • スケールダウンはスケールアップよりも緩やかに行われる。バックグラウンドプロセスの動きも見ながら、影響がないように

f:id:fu3ak1:20201213222131p:plain

セッションまとめ(re:Cap)

  • サーバーレスなオートスケーリングAurora
  • 本番環境もOK
  • 数千トランザクション/秒にも耐えられる
  • 必要なリソースだけ用意する、安い

f:id:fu3ak1:20201213222440p:plain

感想

高機能すぎて、本当にここまでキレイに動いてくれるのかという感じですね。まだプレビュー段階ですので、今後に期待です。 このセッションを見る前は、通常のAuroraと同様に裏でノード(インスタンス)が稼働してそれをAWSが自動管理してくれるのかと思っていましたが、Lambdaのような小さなVMが稼働し、それをスケールアウト/インしてきめ細やかなキャパシティ管理を実現しているということでうね。驚きました。

RDSのノードタイプの決定や、そのサイズ、レプリカ個数の管理は難しい、というか構築したら基本はそのまま稼働させるという考えが多かったので、そこを動的に変えてくれるなら任せてみたいですね。使用前の金額見積が難しい部分はありますが、基本は安くなると思うので期待です。