おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-キャッシュの活用-小テスト

今回のテーマ:キャッシュの活用-小テスト

問題1:

ElastiCache for Memcachedの特徴として間違っている内容は何か

回答:

シングルスレッドで動作するインメモリキャッシュDBであり、すべてのデータ操作は排他的である。

解説:

Redisの特徴となります。

問題2:

A社は一部データ処理のキャッシュによる高速化を検討しています。
単純なデータトランザクション処理を行っており、需要の増減に応じてノード追加と削除が必要となります。
Redisとmemcachedのどちらにを選択するべきでしょうか。

回答:

memcachedを選択します。

解説:

シンプルなデータ型でオーケストレーションを利用したい場合はmemcachedを選択します。
Redis 用 Amazon ElastiCache以下のように複雑なトランザクションや分析処理の場合選択します。

  • キャッシング
  • チャット/メッセージング
  • ゲーミングリーダーボード
  • 地理空間
  • 機械学習
  • メディアストリーミング
  • キュー
  • リアルタイム分析
  • セッションストア

問題3:

CloudFrontについて間違っている内容を選択してください。

回答:

リージョナルエッジキャッシュの選択機能が追加された。

解説:

AWS側が管理するサービスとしてキャッシュ機能が追加されましたが、ユーザー側で選択する内容ではありません。

問題4:

CloudFrontの導入方法について正しい内容を選択してください。

回答:

AWS上でWEBシステムを構築していればそのまま利用可能となります。

解説:

既存のAWS上のアーキテクチャに即座に追加することが可能です。

問題5:

CloudFrontの配信設定について間違っている内容を選択してください。

回答:

HTTPプロトコルを利用したWEB配信をする際は、RTMP Distributionを選択する。

解説:

HTTPプロトコルを利用したWEB配信をする際はWEB Distributionを選択します。
また、RTMP Distributionは2020年に廃止されました。

今回のテーマは以上です。

SAA学習-キャッシュの活用-CloudFrontの概要

今回のテーマ:CloudFrontの概要

主要サービスの公式資料

CloudFront: docs.aws.amazon.com

概要

CloudFrontとはAWSが提供するCDN(Content Delivery Network)サービスです。
CDNとはWEBコンテンツ配信処理(画像や動画など)を高速化するためのサービスとなります。

導入前後のイメージや導入後のメリットは、以下のようになります。

f:id:In-houseSE:20210829144318p:plain

また、大規模なアクセスを世界中にあるエッジのキャパシティを活用し、効率的かつ高速にコンテンツ配信が可能なサービスとなります。
ポイントとしては以下のようになります。

  • 210以上のエッジロケーションによる高性能な分散配信
  • 高いパフォーマンス
  • AWS WAF/AWS Certificate Managerとの連携やDDoS対策によるセキュリティ機能
  • オリジンに対し、Header/Cookie/Query Stringsによるフォワード指定で、動的なページ配信が可能

アーキテクチャの変化

アーキテクチャの変化として、従来はユーザーに近い位置にあるエッジロケーションから配信するシンプルな構成となります。
概要図は以下のようになります。

f:id:In-houseSE:20210829145035p:plain

現在は、「リージョナルエッジキャッシュ」が追加されより効率的な配信を可能とする構成となります。
概要図は以下のようになります。

f:id:In-houseSE:20210829145318p:plain

グローバルエッジネットワーク

AWSならではのグローバルな配信ネットワークが構築が可能です。

Distribution設定

Distribution設定は、CloudFrontの配信設定を実施して、各ドメインにて利用します。
ポイントは以下のような項目があります。

  • 各配信先となるドメインに割り当てるCloudFrontを設定
  • マネージメントコンソールやAPIにより作成
  • WEB DistributionとRTMP Distributionを選択
  • 使用量が最大40Gbps/100,000RPS超は上限緩和申請が必要
  • 独自ドメインの指定可能

また、設定する際の留意事項は以下のような項目があります。

  • コンテンツオリジン設定:CloudFrontの配信ファイルの取得先設定
  • アクセス制限:ファイルアクセスの許可設定
  • セキュリティ設定:アクセス時にHTTPSの使用の要否
  • Cookieまたはクエリ文字列転送設定:オリジンへのCookie/クエリ文字列転送の要否を設定
  • 地域制限:特定の国のユーザーからアクセス拒否設定
  • アクセスログ設定:アクセスログを作成要否の設定

WEB Distribution/RTMP Distributionの違い

WEB Distribution/RTMP Distributionの違いとしては以下のようになります。

  • Adobeメディアを利用する場合:RTMPDistribution
  • 通常:WEB Distribution

このように使用判断を行いますが、各々の機能概要を以下に記載します。

WEB Distribution
  • 通常のHTTPプロトコルを利用したWEB配信をする際に利用
  • HTTP1.0/HTTP1.1/HTTP2に対応
  • オリジンはS3バケット/MediaPackageチャンネル/HTTPサーバーを設定
  • Apple HTTP Live Streaming(HLS)やMicrosoft Smooth Streamingなど様々な形式のビデオオンデマンド
RTMP Distribution
  • RTMP配信形式の際に利用
  • Adobe Media Server/Adobe Real-Time Messaging Protocol(RTMP)を使用し、メディアファイルをストリーミング
  • S3バケットをオリジン設定
  • クライアントはメディアファイル/メディアプレイヤーを使用(JW Player、Flowplayer、Adobe Flash)

Gzip圧縮機能

エッジロケーション側でコンテンツとGzip圧縮し高速で配信が可能です。

キャッシュコントロール機能

キャッシュコントロールによりキャッシュヒット率を上昇させ効率的なキャッシュ活用を可能とします。
ポイントは以下の2項目となります。

パラメーター値の完全一致

  • URLとフォワードオプション機能(heade/Cookie/Query String)のパラメータ値の完全一致キャッシュが指定される仕組み
  • 単一ファイルのキャッシュは最大20GB
  • GET/HEAD/OPTIONリクエストを対象

キャッシュ無効化

  • キャッシュが期限切れになる前に無効化することが可能
  • 必要のないキャッシュを無効化することで効率的な利用を可能
  • コンテンツ毎に最大3,000個まで無効化パスを指定可能
  • ワイルドカードを利用し最大15個まで無効化パスリクエストが指定可能

セキュリティ機能

CloudFrontでは様々なセキュリティ設定を行うことで、セキュアなコンテンツ配信が可能となります。
ポイントとしては以下のようなものがあります。

  • SSL証明書を設定し、コンテンツ配信時のHTTPS対応
  • HTTPS化することによりビューワーとオリジン配信時の暗号化通信が可能
  • オリジンカスタムヘッダーによる通信制限が可能
  • AWS WAFによるファイアーウォール機能と連携
  • AWS WAFを使用することにより、ディストビューションに対するWEBリクエスト許可/拒否が可能
  • AWS WAFを使用することにより、Referre制限によるリンク参照禁止も可能
  • Amazon S3バケットからの配信の際、OAIとCloudFrontを指すカスタムドメインによってアクセス制限が可能
  • AWS ShieldによるDDoS対応が可能(標準で有効化され使用可能)
  • 署名付きURL/Cookieによる有効期間を設定
  • GEOリストリクションによる地域情報でアクセス判定し制限が可能

CloudFrontの利用設計

CloudFrontの利用設計は、キャッシュ対象を決定した上で、キャッシュ時間やセキュリティ制限を設計します。
利用設計時のポイントは以下のようなものがあります。

キャッシュ対象の設定

コンテンツ利用データ分析などを実施し、静的コンテンツ/動的コンテンツへのキャッシュ対象URLを設定します。

TTLの設定

変更が反映されるまでの時間を考慮し、キャッシュ時間(TTL)を決定します。

その他設定

セキュリティ対応などその他設定事項の要否を選定します。(SSL認証の有無/HTTPSの有無など)

今回のテーマは以上です。

SAA学習-キャッシュの活用-ElastiCacheの概要

今回のテーマ:ElastiCache

主要サービスの公式資料

Amazon ElastiCache

docs.aws.amazon.com

概要

AWSの5つの設計原則と11のベストプラクティスに対しElastiCacheを活用する範囲は、以下のようにオレンジ色の範囲となります。

f:id:In-houseSE:20210829083418p:plain

キャッシュの利用

繰り返し取り出すデータやコンテンツについてはキャッシュを利用する構成を活用します。
AWSで使用する関連サービスは以下となります。

  • CloudFront
  • ElastiCache
  • S3

インメモリキャッシュ

インメモリキャッシュは「メモリ+キャッシュ」の構造を取りElastiCacheで採用されます。

メモリとは

データを保存するHWであり、メモリ型DBを採用することでRead/Writeなどの処理を高速化します。

データを保存するHW

PCなどの機器でデータを保存するためHWはメモリとHDDに保管します。

メモリ型DB

メモリ型DBは、データをメモリ上で動作させるとディスク上で動作する場合を比較し、大幅に高速処理が可能です。
ElastiCacheはメモリ型DBを採用してます。

キャッシュとは

一度アクセスしたデータを保存し、次回アクセス時に高速でアクセスできるようにする仕組みとなります。
データが保管された領域から取得する場合、レイテンシーが増大しDB自身のHW使用量が増加するため、キャッシュを採用します。
動作イメージは以下のようなものになります。

f:id:In-houseSE:20210829085821p:plain

インメモリキャッシュとは

メモリを活用し高速にキャッシュへのアクセスを可能にしたデータベースの仕組みとなります。

f:id:In-houseSE:20210829090049p:plain

ElastiCache

分散インメモリキャッシュサービスの構築・管理及びスケーリングを容易に実施することができるサービスとなります。
要点は以下のようになります。

  • キャッシュクラスタを数クリックで起動
  • フルマネージド型でモニタリング、自動障害検出、復旧、拡張、パッチ適用、バックアップに対応し高可用性を実現
  • 広く利用される2種類のエンジンmemcached/redisから選択可能

Redis/Mencachedの違い

オープンソースのRedisとMemcachedの違いは以下のようになります。
シンプルに利用する場合はMemcachedを採用し、それ以外はRedisを利用することが多いです。
また、RDBへアクセスする際の負荷分散に特化した場合、Memcachedを採用を検討します。

Redis

  • 高速に値をRead/Writeできるインメモリ型DB
  • シングルスレッドで動作するインメモリキャッシュDBで全てのデータ操作は排他的
  • スナップショットが可能
  • データを永続化可能
  • 複雑なデータ型が必要あり
  • インメモリデータセットをソートまたはランク付けが必要あり
  • 読込処理の負荷に対し、リードレプリカにレプリケートが必要あり
  • pub/sub機能が必要あり(メッセージング処理)
  • 自動的なF/Oが必要あり
  • キーストアの永続性が必要あり
  • バックアップと復元の機能が必要あり
  • 複数のデータベースをサポートする必要あり

Menchached

  • 高速に値をRead/Writeできるインメモリキャッシュ型DB
  • マルチスレッドで動作するインメモリキャッシュDB
  • スナップショットは不可
  • データを永続化不可
  • フェイルオーバーや復元は不可
  • シンプルなデータ側が必要あり
  • 複数のコアまたはスレッドを持つ大きなノードを実行する必要あり
  • システムでの需要増減に応じ、スケールイン/アウトする機能が必要あり
  • データベースなどのオブジェクトキャッシュが必要あり
  • キーストアの永続性は必要なし
  • バックアップと復元機能は必要なし
  • 複数のデータベースを利用不可

ElastiCache with Redis

位置情報クエリ/Luaスクリプトによる操作やpub/subモデルを活用可能となります。

Lua(ルア)スクリプト

位置情報クエリ

  • 緯度・経度などの位置情報をクエリ処理することが可能
  • 検索距離や検索範囲の指定可能

pub/subモデルの利用

  • イベントを起こす側:pubとイベント処理を行う側:subを分離するモデル
  • メッセージ処理やイベント処理で活用

ユースケース

データアクセスを高速にしたいケースがあればキャッシュの活用を検討します。
検討項目として下記のようなものが挙げられます。

検討例としては以下のようなものがあります。

f:id:In-houseSE:20210829093511p:plain

また、アプリケーションでデータの即時反映が必要なケースで活用します。
検討項目として下記のようなものが挙げられます。

  • ユーザーのマッチング処理
  • レコメンデーションの結果処理
  • 画像データの高速表示
  • ゲームイベント終了時のランキング表示

ユースケース(基本構成)

ElastiCacheを活用したシンプルなアーキテクチャは以下のようになります。

f:id:In-houseSE:20210829094000p:plain

ユースケース(キャットアプリ)

ElastiCacheのpub/sub機能を活用したキャットアプリを構成する場合は以下のようになります。

f:id:In-houseSE:20210829094247p:plain

今回のテーマは以上です。

SAA学習-データベース-小テスト

今回のテーマ:データベース-小テスト

設問1:

次のAWSデータベース・ストレージサービスのうちで、
データレイクを構築する際にデータ蓄積用に利用すべきサービスを選択してください。

回答:

S3

解説:

  • データを大量に蓄積する際はS3を中核にしデータレーク構成を構築
  • 大量アクセスが必要なデータはDynamoDBなどのデータベースが必要

設問2:

A社はAWSを利用して高速のデータ検索機能を構築していきたいと考えています。
どのデータベースを選択するべきでしょうか。

回答:

Elasticsearch

解説:

  • Elasticsearchはデータ検索専用で優れたデータベースソフト

設問3:

B社はアプリケーションサービスの中で、
1つの情報から関連する情報をマッピング表示させることで、
情報を関連付けて表示させるサービスを検討しています。
どのデータベースを選択すれば良いでしょうか。

回答:

Neputune

解説:

  • NeputuneはグラフDBを提供し、グラフDBを利用すればデータ間のマッピングによる検索処理が可能

設問4:

C社はIoTデータをKinesisでストリーム処理した後に、
ビッグデータ解析用向けのデータとして蓄積したいと考えています。
どのデータベースにデータを蓄積すれば良いか選択してください。

回答:

DynamoDB

解説:

  • ビッグデータ解析を目的とした場合に高速処理が可能なDynamoDBに予めデータを保持が効率的

設問5:

D社はゲームシステムの高速トランザクション処理を実現したいと考えています。
ゲームに係るリアルタイム処理データをどのデータベースサービスを利用して処理するべきか選択してください。

回答:

ElastiCache

解説:

  • 高速にリアルタイム処理が必要な場合はElastiCacheなどのインメモリキャッシュを利用してデータ処理を高速化

設問6:

E社は社内システムのAWSへの移行を計画しています。
E社のシステムはグローバルに利用されており大規模な業務システムに対してSQL型のRDBを利用しています。
移行におけるデータベース選択として間違っているものを選択してください。

回答:

RDSを利用し、既に利用しているMySQLを使ってすぐに移行を実施する。

解説:

  • 現行システムが同じMySQLを使用中でもRDSとのGAP分析や検討が必要

設問7:

DynamoDBのデータ整合性モデルの正しいものを選択してください。

回答:

Read処理は強い整合モデルも可能

解説:

  • デフォルトは結果整合性モデルですが、オプション機能で強い整合性モデルも利用可能

設問8:

DynamoDBの設定で正しい内容を選択してください。

回答:

利用負荷があらかじめ予測できる場合、プロビジョンドスループットを選択する。

解説:

  • 利用負荷があらかじめ予測できる場合はプロビジョンドスループットを選択することが最適

設問9:

次のうちDynamoDBを利用すべきではないユースケースを選択してください。

回答:

銀行の振込処理

解説:

  • DynamoDBはJOIN/TRANSACTION/COMMIT/ROLLBACKが必要な複雑な処理には不向き

設問10:

DynamoDBによるクロスリージョンレプリケーションについて正しい内容を選択してください。

回答:

DynamoDB Streamsを有効化する必要がある。

解説:

設問11:

次のうちDynamoDB Streamsについて間違っている内容を選択してください。

回答:

シリアライズされた順番通りに必ず実行される

解説:

  • 特定のハッシュキーに基づいた変更は正しい順番で保存
  • ハッシュキーが異なる場合は受信した順番が前後する可能性あり

設問12:

DynamoDBにおいてデータにインデックスを付けたいケースにおいて、
次のうち正しい内容を選択してください。

回答:

GSIはハッシュキーテーブルおよび複合キーテーブルのどちらにも設定可能である。

解説:

  • GSIはハッシュキーテーブルおよび複合キーテーブルのどちらでも設定可能

設問13:

DynamoDBの設定手順として正しい内容を選択してください。

回答:

テーブル作成→項目→属性の順に設定する。

解説:

  • テーブル作成→項目→属性と設定

設問14:

DynamoDB Accelerator(DAX)について正しい内容を選択してください。

回答:

マルチAZのDAXクラスターは1秒間に数百万件のリクエストを処理できる。

解説:

  • インメモリ型のキャッシュ高速化を実現
  • DAXクラスターは1秒間に数百万件のリクエストを処理可能

設問15:

次のうちAuroraについて正しい内容を選択してください。

回答:

マルチAZに跨って仮想ボリュームを構成している

解説:

  • Auroraは標準的な構成でマルチAZに跨って仮想ボリュームを構成

設問16:

次のうちAuroraの特徴について間違っている内容を選択してください。

回答:

最大5台のリードレプリカを利用した高速読込が可能

解説:

  • 最大15台のリードレプリカを利用した高速読込が可能

設問17:

次のうちAuroraの特徴について間違っている内容を選択してください。

回答:

レプリカはマルチAZに読込専用のみを作成

解説:

  • マルチマスター機能によって別AZにWriteのレプリカを生成

設問18:

EFSについて間違っているものを選択してください。

回答:

EFSへのEC2インスタンスからのアクセス制御はマウントターゲットによって設定

解説:

  • EFSへのEC2インスタンスからマウントターゲットを通ってアクセス
  • アクセス制御はSGによって実施

設問19:

次のうちKinesisの特徴として間違っている内容を選択してください。

回答:

Amazon Kinesis Data Firehoseはストリームデータを蓄積

解説:

  • Amazon Kinesis Data Firehoseはデータ蓄積に向けてS3などに対しデータ変換や配信を行う

設問20:

Amazon Kinesis Data Analyticsの利用方法について間違っている内容を選択してください。

回答:

東京リージョンで利用不可

解説:

  • 2019年5月より東京リージョンでも利用可能

今回のテーマは以上です。

SAA学習-データベース-Kinesisの概要

今回のテーマ:Kinesisの概要

主要サービスの公式資料

Amazon Kinesis Data Streams : docs.aws.amazon.com

Amazon Kinesis Data Firehose: docs.aws.amazon.com

Amazon Kinesis Data Analytics: docs.aws.amazon.com

概要

Kinesisはストリームデータを収集・処理するためのフルマネージドサービスで主に3つのサービスで構成されます。

Amazon Kinesis Data Streams

ストリームデータを処理するアプリケーションを構築するサービスとなります。
概略図は以下のようになります。

f:id:In-houseSE:20210814074645p:plain

ストリーミング処理はシャードという単位で分散させ実行するため高速処理が可能となります。
また、shardにインスタンスを割りあえてを行い処理を実行させます。
概略図は以下のようになります。

f:id:In-houseSE:20210814075241p:plain

Kinesis Streamsのデータ提供側(プロデゥーサー)とデータ利用側(コンシューマー)に様々なサービスが利用可能となります。 概略図は以下のようになります。

f:id:In-houseSE:20210814080041p:plain

Kinesis Streamsは以下の関連機能を活用しストリーミング処理アプリケーションを構築します。

サービス名 概要
Amazon Kinesis Agent Kinesisサービスにデータを収集し取り込むOSSスタンドアロンJavaアプリケーション
Amazon Kinesis Producer Library(KPL) Kinesis Streamsにデータを送信するOSSの補助ライブラリ
Fluent plugin for Amazon Kinesis Kinesis StreamsとKinesis Firehoseにイベントを送信するOSSのFluentd出力プラグインでログ収集を実施する
Amazon Kinesis Data Generator(KDG) Kinesis Data Generator(KDG)を利用しKinesis StreamsまたはKinesis Firehoseにテストデータを送信する
Amazon Kinesis Client Library(KCL) KCLを利用しKinesisアプリケーションを作成する。OSSのクライアントライブラリで、EC2インスタンスなどにデプロイし利用する。

Amazon Kinesis Data Firehose

ストリームデータをS3やRedshiftなどへ簡単に配信します。
また、各種DBに配信・蓄積するための処理を実施し、Lambdaと連携するとETLとしても機能します。
概略図は以下のようになります。

f:id:In-houseSE:20210814082030p:plain

Amazon Kinesis Data Analytics

ストリームデータを標準的なSQLクエリでリアルタイムに可視化・分析します。 概略図は以下のようになります。

f:id:In-houseSE:20210814082628p:plain

今回のテーマは以上です。

SAA学習-データベース-増大するデータ量への対応

今回のテーマ:増大するデータ量への対応

概要

ベストプラクティスの「⑦増大するデータ量の対応」で、
IoT/ビックデータが絶えず増加するデータの保持を効率的に実施する概念をおさらいとなります。

増大するデータ

WEBの発展によりビックデータ蓄積とIoTの発展によるIoTデータ蓄積によりデータ量が大きく増大しています。
事例は以下のようなものがあります。

  • WEBの発展によるデータ蓄積:ECサイト
  • IoTの発展によるデータ蓄積:Suica

データ量への対応

効率的なデータ蓄積とIoTなどの大量ストリームデータ処理や解析方法等が必要不可欠となります。
以下の図はAWSマネージドサービスの概要図となります。

f:id:In-houseSE:20210810072733p:plain

ビックデータに必要な技術

ビックデータに対応したデータ蓄積・処理技術が必要不可欠となります。
特徴は以下の項目があります。

Volume:大量データ

大量のデータを効率的に蓄積可能なデータベース技術

Variety:多様なデータ

多様な形式のデータを蓄積可能なデータベース技術

Velocity:速い速度

高速処理が可能なデータ処理ソフトウェア/ハードウェア

データレイクの活用

ビックデート活用の中心はデータレイク型のデータベースを採用されます。
以下はDWHとデータレイクの項目についておさらいします。

  • データウェアハウス中心:利用用途に応じてデータを貯めて活用。貯める前に変換を実施。
  • データレイク:できる限り生データをほぼ全データ保存する際に活用。貯めた後に変換を実施。

以下はDWH中心とデータレイク中心の比較表となります。

項目 データウェアハウス中心 データレイク中心
データ収集 ・目的別データ
→必要なデータのみ抽出/収集
・構造化データ中心
・生データ+目的別データ
・構造化/半構造化/非構造化データ
蓄積 ・必要なデータのみを抽出/蓄積 ・変換しないで生データ形式で保存
・エッジ処理したデータを保存
処理/加工 ・関連するデータ構造(スキーマ)に変換
SQLによる操作
・事前にスキーマ(データ構造)を定義しない
SQL/SAS/MapReduce/R/NoSQLなどで操作
可視化分析 ・利用者がデータ分析/レポート内容などで利用目的を事前に特定し構築 ・事前に目的を定義せず、ユーザーがデータ群から新たな価値を抽出しデータを解釈・活用

データウェアハウス型とデータレイク型のデータ処理基盤の概略図は以下のようになります。

  • データウェアハウス型のデータ処理基盤

f:id:In-houseSE:20210813151334p:plain

  • データレイク型のデータ処理基盤

f:id:In-houseSE:20210813153130p:plain

Apacheシリーズ

ビックデータ処理向けの2種があります。

  • ApatchHadoop:大量データバッチ向け
  • ApatchSpark:ストリーミング処理向け

AWSのデータレイク構造

AWSマネージドサービスをデータレイク型のデータ処理基盤に埋め込むと以下のような相関図となります。

f:id:In-houseSE:20210813153858p:plain

今回のテーマは以上です。

SAA学習-データベース-Redshiftの概要

今回のテーマ:Redshiftの概要

主要サービスの公式資料

Amazon Redshift: docs.aws.amazon.com

概要

Redshiftは高速でスケーラブルな費用対効果の高いマネージド型DWH/データレイク分析サービスとなります。
要点は以下の項目があります。

  • 数百ギガバイトのデータから開始し、ペタバイト以上まで拡張可能
  • 1テラバイトあたり年間1000USD以下で利用可能
  • 自動ワークロード管理や自動テーブルメンテナンス等が多くメンテナンスタスクやデータ配置が自動化されるフルマネージド型
  • PostgreSQL互換の列指向データモデル
  • 複数ノードをまとめたクラスター構成で単一AZで起動し、マルチAZ構成は不可
  • RA3インスタンスが最大。他のクラウドデータウェアハウスの3倍に達するパフォーマンス
  • AQUA(Advanced Query Accelerator)による分散キャッシュで、Redshiftが他のクラウドデータウェアハウスに比べて最大10倍の速度で動作

データウェアハウス(DWH)

データウェアハウス(DWH)は、構造化データを利用した経営思考分析型のデータベースになります。

概要

  • データの抽出・集約に特化したBIデータ分析用データベース
  • 読み込むデータ構造を予め設計し、加工してから利用分のデータを蓄積
  • レスポンス重視でデータ抽出・集計が速いが、更新トランザクションは遅い

アーキテクチャ

  • データをパーティショニングし複数ディスクから読み込む
  • 列指向でデータを格納

利用ケース

  • 会計データなどの業務系の構造化データを分析用に加工しBIで利用
  • KPI測定/競合分析/アクセス分析など

インスタンスタイプ

利用するデータサイズと増加予測に応じて2つのインスタンスタイプから選択します。

RA3インスタンス

  • コンピューティング性能とマネージドストレージのスケーリングと支払いを独立することで、DWHを最適化
  • データ量の増大が予想される場合はRA3ノードの利用が推奨
  • 最低2ノード必要
  • 1時間の1ノード当たり、最安で約4UDS(3.836USD)

DC2インスタンス

  • 固定ローカルSSDストレージを使用したDWH
  • データサイズ増加に対しノードを追加しクラスターのストレージ容量増強
  • 未圧縮で1TB未満のデータセットならばDC2ノードタイプの利用が推奨
  • 最低1ノード必要
  • 1時間の1ノード当たり、約0.3UDS(0.314USD)

Redshiftの構成

クラスターというグループ単位で、複数ノードによってデータ処理を実行する構成となります。
概要図は以下になります。

f:id:In-houseSE:20210808150218p:plain

Redshiftの特徴的な機能など

Redshiftは列指向型のRDBであり、データを分散・高速処理が可能な仕組みとなります。
主な特徴としては以下のものがあげられます。

列指向型RDB

  • 列指向型ストレージにデータを格納するRDBのデータモデルを採用
  • 大容量のデータアクセスを容易にしディスクI/O効率化

データ圧縮

  • データ圧縮により一度に読み込めるデータ量が多くなることで処理を高速化
  • 分析ワークロードでブロック単位でデータを格納しディスクI/O効率化

ソート

  • データが格納されるブロックに対しメタデータを付与して検索値とする
  • リーダーノードのインメモリ上にメタデータを格納
  • データのソート順をテーブルごとにソートキーとして指定

データ分散

  • データ量とクエリ内容に応じてノードに対する分散処理を調整し効率的で高速な処理を実現
  • キャッシュによる高速化を実現

マテアライズドビュー

  • 頻繁に実行するクエリパターンを結合・フィルタ・集計・射影によって高速化する機能 公式資料は以下になります。

docs.aws.amazon.com

運用の自動化

自動的なメンテナンス機能と詳細モニタリングによる簡易な運用が可能です。
基本的にはRDSのメンテナンスと同一の対応となります。
項目して以下のものがあります。

CloudWatchとの連携

  • 初期設定でCloudWatchメトリクス取得が自動で実施されRedshiftコンソールないで確認可能

自動バックアップ

  • 自動でバックアップを定期取得可能
  • メンテナンスウィンドウでバックアップ実施時間を指定可能
  • スナップショットを手動で取得することも可能

自動メンテナンス

  • パッチ適用も自動で実施
  • メンテナンスウィンドウでパッチ適用時間を指定可能

スケジューリング機能

機械学習によるクエリ効率化

機械学習によりクエリ実行を調整し効率的な自動実行を補助機能があります。
以下は効率化の概要になります。

テーブルメンテナンスの自動化

  • テーブルの分散スタイルの自動最適化
  • 統計情報の自動更新
  • データの再編成の自動実行

自動ワークロード管理

  • 複数クエリの実行をワークロード管理で設定する際に、機械学習でクエリ実行の優先順位を決め自動化

ショートアクセルレーション

  • 機械学習アルゴリズムを使用し対象クエリを1つ1つ分析し、クエリの実行時間を予測し、実行時間の短いクエリを実行時間の長いクエリよりも優先し実行
  • WLMキューを削減可能

cf)WLM:手動ワークロードで使用する管理

docs.aws.amazon.com

設定のレコメンデーション

  • 自動でクラスターパフォーマンスなどを分析し、最適化やコスト削減に対するレコメンデーションを実施

ワークロード管理(WLM)

ワークロードに応じて複数のキューを設定し、クエリ割り当てルールに基づいてキューを設定後、優先順位を設定することが可能です。
ロングやショートは機械学習で実装します。
概略図は以下のようになります。

f:id:In-houseSE:20210808154837p:plain

クエリエディタ

マネージメントコンソール画面よりRedshiftのデータベースに接続しクエリ実行が可能です。

スケーリング

Redshiftのノードタイプ変更・追加とクラスターの追加によってスケーリングが可能です。

  • ノード追加
    コンピューティングノードを追加することでパフォーマンスを向上させます

  • クラスターの追加
    Concurrency Scalingにより急な同時実行リクエストに対応するため、一時的にクラスタを自動的に数秒で追加し高速なパフォーマンスを発揮させます。(追加クラスターは1~10個までとなります)

Redshift Spectrum

Redshift Spectrumはデータレイクを分析する際に使用されます。
また、ユーザーが管理するS3バケットに対し直接データ解析を実行が可能となります。
概略図は以下のようになります。

f:id:In-houseSE:20210808155913p:plain

Redshiftへデータ連携

Redshiftへデータを移動させることで、DWHとして解析基盤の集約化をすることが重要となります。
以下はRedshiftへ連携するAWSサービスと概要になります。

S3

  • 最も頻繁に使用されるデータ連携先
  • S3からデータを取得しRedshiftで解析することが可能
  • S3内部データ解析を直接実行も可能

Kinesis

  • Kinesis data Firehoseを利用しストリーミングデータの格納先
  • 解析に利用することが可能

RDS

  • AWS Data PipelineやDMSを利用しデータの移行が可能

DynamoDB

  • DynamoDBからRedshiftへデータコピーが可能

Amazon EMR

  • EMRからRedshiftへデータコピーが可能

Redshiftからデータ連携

RedshiftからQuickSightを利用したデータ可視化に加えてS3とデータ抽出が可能です。 以下はRedshiftから連携するAWSサービスと概要になります。

Amazon QuickSight(BIツール)

  • Redshiftに接続しデータの可視化を実行可能

S3

  • UNLOADコマンドを実行し、RedshiftからS3にデータ抽出することが可能

Amazon Machine Learning

  • Redshiftを機械学習の学習データとして設定し利用可能

RDS

  • PostgreSQLの機能を利用しデータをRedshiftからRDSへ連携可能

Amazon QuickSight(BIツール)

AWSでBIツールを導入する際に使用します。
QuickSightはデータを可視化・解析するためのBIツールとなります。
また、Redshiftデータを開始可能となります。

AWS Glue

AWS Glueは、データを抽出、変換、ロード(ETL)を行う完全マネージド型サービスとなります。

AWS Lake Formation

AWS Lake Formationは、複雑な設定が必要なデータレイクの構成を簡単に素早く実現するサービスとなります。

AWS EMR

AWS EMRは、Apache Spark、Apache Hiveなどブックデータフレームワークを使用し、大量データを処理・分析します。

今回のテーマは以上です。