【SAA試験対策】AWS認定ソリューションアーキテクト-アソシエイトの暗記用語のまとめ 〜 データベース編
目次
こんにちは。
AWSの認定試験の勉強をしています。特にSAA(ソリューションアーキテクト - アソシエイト)試験で出てきそうな、個人的に覚えにくい・忘れやすい用語をまとめてみました。
試験概要はこちら:AWS 認定 ソリューションアーキテクト – アソシエイト
AWSの認定試験は実用的な内容で、現場で直面する状況に即して最適解を考えさせる問題が多く、丸暗記で対応できるものではありません。とはいえ、専門用語を覚えていれば答えられる問題も結構あります。
思い出せずにスコアを落とすのは勿体ないので、ぜひ試験準備中の方は知識確認としてチェックしてみてください。
尚、本記事で取り扱っている用語はAWS公式の実際の出題ではなく、サードベンダーの模擬試験や、自分が覚えにくかった用語を元にしていますので、認定試験では出題されない可能性もあります。あくまでも参考程度に御覧ください。
そもそもAWSって何?という方はこちらの記事を御覧ください。
また、AWSのクラウドやサーバーがどういうものか具体的なイメージを知りたい方はこちらへどうぞ。
AWS公式ドキュメントでは概念的な言葉でわかりにくい表現がどうしてもあります。このブログではふわっとした言葉を極力なくして、わかりやすく伝えていこうと思います。
AWSの基礎や体系立てた知識の習得には書籍もオススメです。
AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト
今回はデータベース編です。AWSには複数のデータベースサービスがあるので、ちゃんと理解してうまく使いこなせるレベルに知識を定着させたいですね。
それでは用語についてまとめていきます。
RDS編
リードレプリカ
読み込み専用(Read Only)に冗長化されたレプリカで、負荷分散による性能向上が主な目的です。
1つのプライマリに対して最大5個のレプリカを作成できます。(Auroraの場合は15個。)
プライマリに障害発生した場合は、レプリカをプライマリに昇格させることもできます。
参考【AWS公式】: リードレプリカの使用
参考【AWS公式】: Amazon RDS リードレプリカ
マルチAZ配置
複数のAZにインスタンスを配置することで、耐障害性をアップする構成のことです。
プライマリ(普段使うインスタンス)に障害が発生すると、セカンダリ(控えているサブ)に自動フェイルオーバーされます。CNAMEレコードがプライマリからセカンダリに移行するので、データベース操作を素早く再開できます。移行時間は通常60~120秒とのこと。
同期レプリケーションのため、シングルAZよりも書き込みとコミットの遅延が増加する可能性があります。
参考【AWS公式】: Amazon RDS での高可用性 (マルチ AZ)
マルチリージョン配置
AZにとどまらずリージョンを跨いでレプリカを配置することでさらに耐障害性をアップさせることができます。
また、データベースがグローバルで利用される場合は、配置するリージョンからの読み込みパフォーマンスを向上させることができます。
IAMデータベース認証
EC2インスタンスにIAMポリシーを設定するのではなく、IAMロールを使用してDBインスタンスへの認証情報を付与しアクセスを可能にします。
認証トークンはIAMで管理されるので、認証情報をデータベースに保存する必要がなく済みます。
参考【AWS公式】: IAM 認証情報を使用して Amazon RDS MySQL DB インスタンスに対する認証をユーザーに許可する方法を教えてください。
拡張モニタリング
これを有効にすると、CloudWatch LogsでインスタンスのCPU使用状況をリアルタイムでモニタリングできるようになります。
拡張モニタリングによるメトリクスはデフォルトで30日間CloudWatch Logsに保存されます。
参考【AWS公式】: 拡張モニタリングの使用
自動バックアップ
定期的なRDSデータのバックアップを自動で取得する設定が可能です。
保存先はS3です。
参考【AWS公式】: バックアップの使用
RDSの暗号化
暗号化オプションを有効にするとサーバーサイドで暗号化されます。暗号化アルゴリズムは業界標準のAES-256で、AWS KMSカスタマーマスターキー (CMK) を使用して暗号化されます。
暗号化されるリソースは、DBインスタンス、ログ、リードレプリカ、自動バックアップ、スナップショットです。
暗号化はインスタンスの作成時にのみ設定可能で、後から無効にはできません。
ちなみにインスタンスへの接続はSSL/TLSで暗号化することができます。
参考【AWS公式】: 暗号化を使用したデータの保護
Aurora編
AuroraはRDSから選択できるDBタイプの一つで、AWS独自のデータベースサービスです。
RDSよりもスループットの高い性能と、3つのAZに2つずつコピーを取ることで実現している99.99%の高い可用性が特徴です。
RDSのリードレプリカの数は最大5個でしたが、Auroraは15個まで配置できます。
マルチマスタークラスター
各AZのすべてのインスタンスに読み書き機能が備わっている構成のこと。AuroraはReaderだけでなくWriterをマルチAZ構成にできます。
どのAZが障害で落ちてもダウンタイムゼロで使用を継続できます。
参考【AWS公式】: Aurora マルチマスタークラスターを使用する
Aurora Serverless
Auroraのタイプの一つで、自動でDBインスタンスをスケーリングします。ワークロード、つまり処理の負荷が予測不可能な場合に有効です。
消費するデータベースリソースに対して秒単位の時間で課金されるので、利用頻度が少ない処理に対してもコスト効果が高いです。
参考【AWS公式】: Amazon Aurora Serverless v1 の使用
Auroraグローバルデータベース
Auroraのタイプの一つで、複数のリージョンにまたがる一つのDBを使用できます。
専用インフラによって1sec未満の低レイテンシーで別リージョンにレプリケートできます。
インスタンスを配置した他リージョンからも高速アクセスが可能になります。
また、セカンダリクラスターには書き込みインスタンスがなく読み取り専用なため、リードレプリカは最大15個ではなく16個配置できます。
参考【AWS公式】: Amazon Aurora グローバルデータベースの使用
DynamoDB編
高速なNoSQL型データベースです。
RDSと違って非リレーショナル構造で高速なので、厳密なデータ型の定義を必要としないで大量のデータを保持・検索したい場合に便利です。
ハッシュキー(パーティションキー)、レンジキー(ソートキー)
ハッシュキー(パーティションキー)は主キーのことです。これを元にパーティション化したテーブルを別の場所に保存しているので、検索が高速に行うことができます。
レンジキー(ソートキー)は追加で使う検索用のキーです。
読み込み整合性モデル(結果整合性・強い整合性)
デフォルトでは結果整合性ですが、オプションで強い整合性を選択することができます。
結果整合性(Eventual Consistency)は、データを変更した後「いつか変更が反映される」というモデルなので、すぐに別のインスタンスがデータを読みに行くと最新の情報が反映されていない、つまり陳腐化したデータを読み込む可能性があります。
強い整合性(Strong Consistency)は、データを読みに行くと取得できるデータは常に最新であることが保証されています。
これはAZ内の3つのレプリカのうち2つに書き込まれたことを「書き込み完了」として、読み込み側は2つのレプリカを読みに行って値が異なればもう一つを読みにいく、といった構成をとっていることで整合性が実現できています。
参考【AWS公式】: 読み込み整合性
ローカルセカンダリインデックス(LSI)
ソートキー以外に検索に使用するキーを追加する機能です。
後述のGSIと異なり、オリジンテーブルのコピーは生成されません。
参考【AWS公式】: セカンダリインデックスを使用したデータアクセス性の向上
グローバルセカンダリインデックス(GSI)
オリジンテーブルに対して異なるハッシュキー(パーティションキー)を設定したテーブルを作る機能です。
オリジンテーブルのコピーが生成されるので、その分コストに影響します。
DynamoDBはハッシュキーを元にテーブルを分割して保存することで検索性が向上しデータへの高速アクセスを可能にしています。なので、オリジンと違うキーをハッシュキーにするということはデータの保存場所を変える必要があるのですね。
異なるキーで検索するユースケースが多い場合に有効なソリューションです。
参考【AWS公式】: セカンダリインデックスを使用したデータアクセス性の向上
グローバルテーブル
複数のリージョンにマルチマスターとしてDBをデプロイして、各リージョンで読み書きできるようにするマネージドサービスです。たとえば東京リージョンに立ち上げたDynamoDBと同じものを北米リージョンに立ち上げて冗長化し、それぞれのリージョンからのアクセスを高速化できます。
GSIと名前がややこしいのは注意ですね。GSIは同一リージョン内の機能です。GSIがついているテーブルをグローバルテーブルにすると、GSIもそのリージョンにレプリケートされます。
また、強い整合性オプションが使えないことも注意です。
参考【AWS公式】: グローバルテーブルを使用した複数リージョンレプリケーションDynamoDB
Auto Scaling
Application AutoScalingを利用して自動でワークロードの負荷に応じてスケーリングし、スループット性能を維持することができます。
読み取り・書き込みどちらに対してもトリガーとなるターゲット使用率を設定できます。
参考【AWS公式】: DynamoDB Auto Scaling によるスループットキャパシティーの自動管理
DynamoDB Accelerator (DAX)
インメモリ型のキャッシュクラスタをDynamoDBの前段に追加して、キャッシュレスポンスをミリ秒〜マイクロ秒単位まで高速化することができるマネージドサービスです。
高コストなので、コスト最適を問われた場合は注意すべきオプションです。
また、強い整合性オプションがないため、結果整合性が許容できないアプリケーションの場合は選択肢から外れます。
参考【AWS公式】: インメモリアクセラレーションと DynamoDB Accelerator (DAX)
DynamoDB ストリーム
テーブル項目の変更・追加・削除をキャプチャして最大24時間ログに保存できる機能です。これをトリガーにユーザにメール通知することも可能です。
テーブル変更をトリガーにLambda関数を実行したいときなどに使われます。接続するストリームのエンドポイントはDynamoDBとは別のエンドポイントになります。
参考【AWS公式】: DynamoDB ストリームの変更データキャプチャ
ElastiCache編
ElastiCacheは高速のインメモリDBです。
AWSオリジナルのサービスではないので、あまり詳しく問われることはないと思います。他のサービスとの組み合わせテクニックが問われる可能性があるので、一応基礎は覚えておきたいところです。
セッションデータなど高速で扱いたいデータのキャッシュなどとしてよく使われるようです。
Redis or Memcached?
ElastiCacheに関する必須知識は「Redis」タイプを選ぶべきか、「Memcached」タイプを選ぶべきか?ということです。
これらはキャッシュエンジンの名前で、どちらもキャッシュ型の高速なインメモリDBであることは同じなのですが、特徴や付加機能が異なるので、アプリケーションの要件に合わせて選択することになります。
キャッシュエンジンって何だって感じですが、ElastiCacheの本体であるEC2にインストールされているソフトウェアのことです。
「Redis」(レディス)の方が高機能で幅広く使えて、「Memcached」(メムキャッシュディー)の方がシンプルでマルチスレッド(たくさんの処理を同時に行える機能)になっています。
読み方、「メムキャッシュド」ではないんですね。
基本的なユースケースではRedisを利用することになると思います。
違いはこちらの比較がわかりやすくまとめられています。 【AWS公式】Redis と Memcached の比較
Redisの付加機能
Redis独特の代表的な付加機能としては、以下のようなものがありますね。
- スナップショット
- レプリケーション
- PubSub
- List/SetといったString以外のデータ型
- 地理空間データ専用の処理
PubSubというのはPublish-Subscribeのことで、「トピック」と呼ばれる中央チャンネルにPublisher(発行者)が送信したメッセージを、不特定のSubscriber(購読者)が読みに行けるスタイルのメッセージングモデルですね。
少々古い記事ですが、こちら(Amazon ElastiCache for Redis を使ったChatアプリの開発)にあるような、チャットアプリを実現できるみたいです。
Redisの方が、自動的なフェイルオーバーをしてくれたり、読み込みの負荷が大きくなったときにリードレプリカに負荷を分散させることができたり、キーストアの永続性が保証されているので、データやサービスをより安全に運用することができます。
このような保証が必要ない場合は、Memcachedを選んだほうが良いみたいですね。
DBその他
Neptune
グラフDBサービス。ソーシャル・ネットワーキングや顧客の興味・購入履歴に基づくレコメンデーションといった「リレーションシップ(関係性)」に重きを置くデータ保管やアプリケーション構築に使われます。
Amazon AlexaやNetflixでも使われているみたいですね。
参考【AWS公式】: Amazon Neptune
AWS DMS
Database Migration Service。 オンプレにあるデータベースをAWSに移行するサービスです。
移行中もDB利用可能とダウンタイムがなく、また異なる種類のDBエンジンへの移行もサポートされているのが特徴的です。
参考【AWS公式】: AWS Database Migration Service
まとめ
というわけで、AWS認定試験のSAA(ソリューションアーキテクト - アソシエイト)で必要となりそうなデータベース関連の用語について忘れないようにまとめてみました。
定期的に見直して知識の定着を行っていきたいです。また別のカテゴリについてもまとめる予定です。
AWSの基礎からの勉強や、体系立てた知識の整理には書籍もオススメです。こちらは2020年の最新試験(SAA-C02)の問題にも対応しています。
(模擬問題付き)改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト − アソシエイト教科書[SAA-C02]対応