適材適所でクラウドを使い分ける企業が増えている。ここで課題になるのがクラウドごとの違いだ。AWS(アマゾン・ウェブ・サービス)、Google Cloud Platform(GCP)、Microsoft Azureはサービスラインアップが似ているが、用語やサービスの構造、利用できる機能などに差異がある。本連載ではテーマ別に各クラウドの特徴を取り上げ、違いを浮き彫りにしていく。第4回から第6回は「データベース」をテーマに解説する。第4回はAWSを取り上げる。
アプリケーションの実装には、データを記録・参照するデータベースが欠かせません。これはクラウドでも変わりませんし、アプリケーションを実装する上でのデータベースの位置付けや、データベースの基本的な仕組みはクラウドでもオンプレミスでも大きな違いはありません。ただ、1点だけ意識すべき大きな違いがあります。クラウドには、データベースのマネージドサービスである「DBaaS(Database as a Service)」が存在することです。
DBaaSでは、データベース管理ソフト(DBMS)やインフラ管理、運用も含めてサービスとして提供されます。そのため、利用者はバックアップやアップデートといったデータベースのメンテナンスから開放されます。従来、データベースのメンテナンスはIT運用の重要課題で、資格試験も存在するほど複雑かつ専門的な領域でしたが、DBaaSを使うと大幅に簡素化できます。
3大クラウドはどれも高いスケールアウト性能、高い冗長性、高い堅牢性を持ったDBaaSを提供しています。個々の機能やスペックを比較すると大した違いがないように見えますが、クラウドごとにデータストア(データの格納)に対する考え方が違い、あるクラウドでのベストプラクティスが他のクラウドではそうではないということがあります。3大クラウドを使いこなすには、各クラウドのDBaaSの設計指針を理解しておく必要があります。
AWSは得意領域が異なる10種類以上のDBaaSを提供
今回はAWS(アマゾン・ウェブ・サービス)のDBaaSについて深掘りしていきましょう。AWSのデータベースへの考え方を象徴しているのが、米アマゾン・ドット・コム(Amazon.com)の最高技術責任者兼副社長であるワーナー・ヴォゲルス氏の以下の言葉です。
“A one size fits all database doesn't fit anyone(全ての用途をカバーできる1つのデータベースなど何の役にも立たない)”
ワーナー・ヴォゲルス氏のブログエントリー(https://www.allthingsdistributed.com/2018/06/purpose-built-databases-in-aws.html)から引用
従来、データベースは主にリレーショナルデータベース(RDB)を拡張する形で進化してきた経緯があります。多様化するデータや性能要件などを吸収するため、RDBMSやそれを使ったシステムの設計、運用はどんどん複雑になってきました。「データベースチューニング」といった概念もそうした複雑化の中で出てきたものです。
流れが変わったのが2010年代です。NoSQL(Not only SQL)と呼ばれる、RDBとは異なる性質を持つ用途特化型の様々なデータベースが出てきました。特に、書き込みと読み込みの整合性を維持する「トランザクション」を捨てて高性能を実現するデータベースの登場は、大きなインパクトがありました。トランザクションはデータベースの心臓ともいえる存在だったからです。多様なデータベースが登場し、実際にシステムで使われるようになってきました。
データベースタイプ | 特徴 |
---|---|
リレーショナル | 定義済みのスキーマとそれらの関係を使用してデータを保存する。ACIDトランザクションをサポートし、参照整合性と強力なデータ一貫性を維持するように設計されている |
KVS(Key-Value Store) | 一般的なアクセスパターン用に最適化されており、通常は大量のデータを保存および取得する。大量の同時リクエストでも迅速な応答時間を提供する |
インメモリー | リアルタイムでデータにアクセスする必要があるアプリケーションで使用される。データをメモリーに直接保存することで、ミリ秒のレイテンシーでは十分ではないアプリケーションにマイクロ秒のレイテンシーを提供する |
ドキュメント | 半構造化データをJSONのようなドキュメントとして保存するように設計されている。デベロッパーがアプリケーションを迅速に構築および更新するのに役立つ |
ワイドカラム | NoSQLデータベースの一種。テーブル、行、カラムを使用するが、リレーショナルデータベースとは異なり、同じテーブルの中でも、カラムの名前と書式を行ごとに変えられる |
グラフ | 高度に接続されたグラフデータセット間の何百万もの関係を、大規模にミリ秒単位のレイテンシーでナビゲートおよび照会する必要があるアプリケーション向け |
時系列 | 時間とともに変化し、時間間隔にまたがるクエリによって変化するデータから効率的に収集・合成し、洞察を導き出す |
台帳 | 全てのアプリケーションのトランザクションについて、スケーラブルでイミュータブル(不変)、かつ暗号的に検証可能な記録を維持するための、中央集中型の信頼できる認証機関を提供する |
アマゾン・ドット・コムでもRDBの性能に悩み、自らNoSQLの1つである「DynamoDB」を発明したとヴォゲルス氏は言っています。AWSもその考え方にのっとり、用途ごとに特化した、得意領域が異なる様々なデータベースをDBaaSとして提供しています。
データベースタイプ | 代表的なアプリケーション | AWS上でのサービス |
---|---|---|
リレーショナル | 従来のアプリケーション、ERP、CRM、eコマース | Amazon Aurora、Amazon RDS、Amazon Redshift |
KVS | トラフィックの多いWebアプリケーション、eコマースシステム、ゲームアプリケーション | Amazon DynamoDB |
インメモリー | キャッシュ、セッション管理、ゲームのリーダーボード、地理空間アプリケーション | Amazon ElastiCache、Amazon MemoryDB for Redis |
ドキュメント | コンテンツ管理、カタログ、ユーザープロファイル | Amazon DocumentDB(MongoDB 互換) |
ワイドカラム | 高スケールの業界アプリケーション、設備のメンテナンス、多数の装置の管理、ルートの最適化 | Amazon Keyspaces |
グラフ | 不正検出、ソーシャルネットワーク、レコメンデーションエンジン | Amazon Neptune |
時系列 | IoTアプリケーション、DevOps、産業用テレメトリー | Amazon Timestream |
台帳 | 記録システム、サプライチェーン、銀行トランザクション | Amazon QLDB(台帳データベース) |
AWSのDBaaSの特徴を簡単にまとめると、以下の4点となります。
- 独自性が少なく、既存データベースのマネージド版がほとんど。利用のハードルが低く、既存のライブラリーや知識、ノウハウをそのまま使える。
- データの保全や永続化はストレージサービスのAmazon S3(Simple Storage Service)に依存し、可用性はAZ(アベイラビリティゾーン)の冗長化を活用するなど、AWS共通の考え方に即している。使い方を間違えなければ、強力な堅ろう性と可用性が手に入る。
- リージョンやAZの考え方がベースになっているため、サービスを展開する地域を意識したデータベース配置が必要になる。一部のサービスはグローバル化に制限がある。
- セキュリティは、AWSが提供する「AWS IAM(リソースベースの管理)」に委任する仕組みが提供されている。他サービスやサーバーレスなどとの連携を容易に構築できる。
以下では、個別のDBaaSを見ていくことにしましょう。