【レポート】purpose-built databases を実践するために!「Amazon DynamoDB – What’s new & How to use NoSQL Workbench」 #AWSSummit

DynamoDBの直近のアップデート情報と、NoSQL Workbench for Amazon DynamoDBの機能紹介のお話です。
2020.09.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、崔です。

2020年9月8日から9月30日の間で開催されているAWS Summit Online のセッション「Amazon DynamoDB - What's new & How to use NoSQL Workbench」を視聴しましたので、レポートをお届けします。
DynamoDBの直近のアップデート情報と、NoSQL Workbench for Amazon DynamoDBの機能紹介となります。

セッション情報

スピーカー

アマゾン ウェブ サービス ジャパン株式会社
技術統括本部
ソリューションアーキテクト 成田 俊 様

概要

Amazon DynamoDB は完全フルマネージド型データストアサービスとして、Amazon.com をはじめとした多くのお客様に利用されています。DynamoDB の直近のアップデートの紹介と、GAリリースとなった NoSQL Workbench for Amazon DynamoDB の機能を紹介します。

資料

Introduction

このセッションの目的、ゴール

  • Amazon DynamoDBの利点、特徴を理解する
  • 直近のアップデートを理解する
  • NoSQL Workbench for Amazon DynamoDBの基礎を理解する

ことの3点となります。

Modern applicationの要件

現在、多くの大規模サービスで必要とされる要件、規模について。

  • ユーザー数は、100万人以上
  • データボリュームは、テラバイトからペタバイト
  • Localityは、世界中で
  • パフォーマンスは、ミリ秒レベルの遅延
  • Request Rateは、秒間100万リクエスト規模
  • アクセスは、モバイルやIoT、様々なデバイスから
  • スケールは、事実上無制限
  • Payment Modelは、利用した分だけ
  • Developer accessは、APIによる容易な操作ができること
  • Developmentは、AppsとStorageが疎結合であること

など、数多くの要件が求められています。

Internet-scale ecommerce

世界最大のeコマース事業であるAmazon.comでは、その規模やパフォーマンス、メンテナンスのメリットにより、ワークロードに適したデータベースで稼働している。
Prime dayでは、48時間にDynamoDBで累計7.11兆回、ピーク時4540万リクエスト/秒を処理した。

Things with purpose

1つのリレーショナル・データベースだけで、全てのユースケースを捌くようなアプリケーションでは、長時間問題なく稼働させることが難しくなることがあります。
したがって、開発者が複雑なアプリケーションを小さなサービスに分割し、それぞれの問題を解決するための最適なツールを選択するという改善を行っています。
最適なツールは、ユースケースによって異なるため、多数の専用データベースを使用して高度に分散されたアプリケーションを開発する必要があります。

DynamoDBのカスタマー事例

  • SAMSUNG
    • 3億ユーザーがいるモバイルアプリのバックアップ/リストア
    • CassandraからDynamoDBへ
    • 運用メンテナンスの大幅なコスト削減
    • 一貫したパフォーマンスの安定性
    • 大規模にスケールする要件に適応
  • duolingo
    • 毎秒24,000回の読み取りと3,000回の書き込み
    • 過剰なプロビジョニングにより発生するであろう無駄なコストを最小限に抑えている
  • The Pokemon Company
    • AWSのpurpose-built databasesを実現している
    • 目的に応じたデータベースサービスの使い分け
    • 月間データベースコストは数万ドルの削減
    • DynamoDBへの移行後は、パフォーマンス低下がゼロに

Amazon DynamoDB

Amazon DynamoDB

あらゆる規模に対応する高速で柔軟なkey-valueデータベースサービス

  • あらゆるスケールで一桁ミリ秒のパフォーマンスを実現
  • フルマネージド、マルチリージョン、マルチマスターで耐久性に優れている
  • ミッションクリティカルなワークロードで利用可能

メンテナンスフリー

DynamoDBの大きな特徴であるメンテナンスフリー。
DynamoDBを利用することで、セキュリティや耐久性、可用性、性能、拡張性といったオペレーションを削減することができ、アプリケーションのローンチに集中することができる。

What's new

主な直近アップデート

  • Global Tables v2
  • NoSQL Workbench GA
  • Amazon CloudWatch Contributor Insights for DynamoDB
  • 空の値サポート
  • Backupのリージョン変更
  • DAXのメトリクスアップデート
  • CMKサポート

Global Table v2 (Version 2019.11.21)

  • 複数のregionでマルチマスタにデータを同期出来る Global Tables
  • レプリカテーブルを動的に追加でき、書き込みキャパシティーの消費を低減することが可能
  • Global Tables用に付与されていた aws:rep:* 属性が追加されないなどItemのmetaデータ管理が変更になった
  • 前のVersionからはオンラインでupdateが可能

例えば、日本で展開していたサービスを、アメリカやヨーロッパに拡張していく際に、Global Tableを利用することでマルチリージョン展開が容易に可能になる。

Amazon CloudWatch Contributor Insights for DynamoDB

  • アクセスが多いItem、スロットリングしたItemの特定、可視化が可能に
  • 意図しないアクセスの偏りによるスロットリングが発生した際に、よりスピーディな解決が可能

以前は、自身でスロットリングが発生していたキーなどをロギングし集計・可視化する作業が必要だった。
この機能によりとても簡単に、アクセスが集中しているキーがあるのか、スロットリンクがテーブル全体なのか、キー単体で出たのか、などの切り分けが容易にできるようになり、データモデリングに対してどういった修正が必要なのか、検討が容易になった。

Adaptive capacity & dynamic partitioning

  • 頻繁にアクセスされるアイテムを⾃動的に分離することで、アンバランスなワークロードをより適切に処理する
  • 頻繁にアクセスされるアイテムが同⼀パーティション内に存在しないようにバランスを再調整
  • 不均等なデータアクセスパターンへの対応のためのオーバープロビジョニングの必要がない

空の値サポート

  • DynamoDB テーブルの⾮キーの⽂字列およびバイナリ属性で空の値をサポート
  • 幅広いユースケースのための属性を DynamoDB に送信する前に変換することを要せずに、当該属性を使⽤するに際しての柔軟性が向上した
  • リスト、マップ、およびセットのデータ型は、空の⽂字列およびバイナリ値もサポート
  • ベーステーブル、LSI/GSIのパーティションキーとソートキーの属性では、⽂字列とバイナリを含むすべてのデータ型について空でない値が引き続き必要

カスタマー管理型カスタマーマスターキー(CMKs) サポート

  • DynamoDB データの暗号化のオプションが追加
  • AWS owned CMK あるいは AWS managed CMKを使⽤する選択肢に加え、カスタマー管理型 CMK を使⽤し⾃⾝で管理する暗号化キーを安全に利⽤することで、重要なデータを保護するため⾃社ポリシーに準じたコンプライアンスと規制上の要件への対応が可能に

主な直近のアップデートのまとめ

  • スループットのコントロール
  • クラスタ管理
  • 可視化
  • セキュリティ
  • アプリケーション開発に役⽴つツールなど

今まで⾃前で管理を要していたような部分もフルマネージド化によりオペレーションコストを下げる改善やセキュリティ対策の拡張などアップデートをリリースしている

How to use NoSQL Workbench for Amazon DynamoDB

NoSQL Workbench for Amazon DynamoDB

  • Data modeler
  • Visualizer
  • Operation builder

の3つの機能を提供し、Win/Mac/Linuxに対応している。
DynamoDB Localに対応。

構築したオペレーションと同じ処理をするコードを⽣成する機能にも対応している。

Data modeler

  • スキーマの設計、作成したデータのimport/exportに対応
  • Table, GSIの設定にも対応
  • TableのPartition Key, Sort Key, 各Attributeの Data typeなどが一覧化されて表示できる

Visualizer

  • Data modelerで作成したスキーマを元にテストデータの作成・変更や、DynamoDBへのcommitなどのオペレーションが可能
  • テストデータをまとめて表示することで、どういうテーブル構造になるのか、GSIはどのようなデータで生成されるのか、などが可視化される

Operation builder

  • 既存テーブルに対して、テーブルの一覧表示、データの管理、各種API操作のサンプルアプリケーションコードの生成が可能
  • 接続に必要なIAM権限の設定は必要

Build operationsで可能な操作

  • Update Item
  • Put Item
  • Delete Item
  • Query
  • Scan
  • TransactWriteItems

それぞれの操作で必要なオプションを設定することも可能
複数条件などの設定も可能

Workbenchのまとめ

  1. マネジメントコンソールやAWS CLIでも同様の操作が可能だが、より tableやGSIの構造、data modeling、Item操作がわかりやすく
  2. 開発時にモデリングする際にデータを触りながら試行錯誤することで、 可視化された状態でより分かりやすく設計が可能に
  3. 特に GSI側は想定したデータを入れたときに意図した構造になるのか、想定したQueryは想定した挙動になるのか などをより簡単に操作可能
  4. ローカル上から、実際のテーブル上の操作までシームレスに対応

感想

DyanmoDBは、パフォーマンスや拡張性に優れたデータベースサービスです。
また、マネジメントサービスとして、メンテナンスフリーというメリットが享受できます。
最近では、Global Table v2 や Amazon CloudWatch Contributor Insights for DynamoDB などがリリースされ、さらに便利になってきていると思います。
また、NoSQL Workbench for Amazon DynamoDB もGAリリースされましたので、アプリケーション開発も捗りそうですね。