【SAA試験対策】AWS認定ソリューションアーキテクト-アソシエイトの暗記用語のまとめ 〜 Kinesisシリーズ編
目次
こんにちは。
AWS認定試験の勉強をしています。対策の記事も今回で11本目になりました。
AWSの認定試験で、特にSAA(ソリューションアーキテクト - アソシエイト)試験で出てきそうな重要用語と公式ドキュメントへのリンクをAWSサービスごとにまとめています。
試験概要はこちら:AWS 認定 ソリューションアーキテクト – アソシエイト
本記事は私の勉強メモなので、取り扱う用語は認定試験では出題されない可能性もあります。あくまでも参考程度に御覧ください。
そもそもAWSって何?という方はこちらの記事を御覧ください。
AWS公式ドキュメントでは概念的な言葉でわかりにくい表現がどうしてもあります。このブログではふわっとした言葉を極力なくして、わかりやすく伝えていこうと思います。
AWSの基礎や体系立てた知識の習得には書籍もオススメです。
AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト
今回はKinesisシリーズに関連したサービスについてまとめています。アソシエイトレベルではそんなに深く聞かれないと思うので、さらっと概要をまとめる程度の記事です。
Kinesisシリーズとは
Kinesisシリーズとは以下のAWSサービスのことで、ストリーミングされるビッグデータのデータ収集や分析に特化したサービス群です。
- Kinesis Data Firehose
- Kinesis Data Streams
- Kinesis Data Analytics
- Kinesis Video Streams
4番目のVideo Streamsはカメラデバイスから送信される動画などを対象とした特殊な用途なので本記事では触れません。
SAAで問われる知識の中では特にFirehoseとStreamsとAnalyticsが重要となってきます。名前がややこしいので違いをまとめておきます。
いずれも共通点はサーバレスな完全マネージドサービスであるという点です。要は、ストリームデータ処理のために自分で専用のサーバーをスペック検討して立てたり管理したりせずに、「こういうことがしたい!」という設定指示だけすれば、後はいい感じにAWSが裏でサーバーを立ててその指示した処理が動いてくれます。開発者はアプリケーション構築に注力できるというわけです。
Kinesis Data Firehose
リアルタイム配信の完全マネージドサービスで、S3やRedshiftに簡単にストリームデータを配信できます。
Firehoseは消火ホースの意味で、一本のデータの通り道を意味しています。IoTデバイスや後述のKinesis Data Streamsから1経路でデータを送信するのに使います。
配信先に設定できるのは以下のようなサービスがあります。
- S3
- Amazon Redshift
- Amazon Elasticsearch Service (Amazon ES)
- HTTPエンドポイント
例えばS3への送信の場合、バッファサイズは1~128MiB、バッファ間隔は60~900秒(1~15分)です。したがって、秒単位でリアルタイムに送信したい用途には不向きと言えます。
より速度が必要な場合は後述のData Streamsを使います。
ちなみに配信先に設定できるAmazon Elasticsearch Serviceは、ログの分析とKibanaによる可視化が得意なマネージドサービスです。
参考【AWS公式】: Amazon Kinesis Data Firehoseとは
参考【AWS公式】: 宛先を選択する
Kinesis Data Streams
ストリームアプリケーションの構築ができる完全マネージドサービス。
ストリームをシャードと呼ばれる単位に分散して流し込むため、高速なストリーミング処理が可能です。こちらはFirehoseよりもリアルタイムな処理が可能になります。
プロデューサーにはIoTデバイスだけでなく、Kinesis AgentをインストールしたEC2インスタンスや、CloudWatch、またはFluentdといったサードパーティのソフトも使用できます。
Kinesis Producer Library (KPL)というライブラリを開発環境のPCにインストールして使用することで、プロデューサーの開発を簡素化できます。
コンシューマーとしてデータを受け取って処理できるのは以下のようなソリューションがあります。
- Lambda関数
- Kinesis Data Analytics
- Kinesis Data Firehose
- Kinesis Client Library(KCL)
KCLはKPL同様にKinesisで用意されている開発サポートのライブラリで、シャードの接続やデータ取得といったコンシューマ(クライアント)側の処理タスクを実行してくれます。
参考【AWS公式】: Amazon Kinesis Data Streams とは
参考【AWS公式】: Amazon Kinesis プロデューサーライブラリを使用したプロデューサーの開発
参考【AWS公式】: Kinesis クライアントライブラリの使用
Kinesis Data Analytics
Apache Flinkが動くAWSによる完全マネージドサービスで、ストリームデータを対象にSQLクエリでリアルタイム分析ができます。
Apache FlinkはApache社によるオープンソースのストリーム処理エンジン(ソフトウェア)です。
ストリーミングのソースとしてはKinesis Data StreamsとFirehoseのどちらも選択できます。
Apache Zeppelinノートブックを使用して、SQLだけでなくJavaやPythonによる分析を実行することも可能です。
参考【AWS公式】: Amazon Kinesis Data Analytics
まとめ
というわけで、今回はAWS認定試験のSAA(ソリューションアーキテクト - アソシエイト)で必要となりそうなKinesisシリーズの用語について忘れないようにまとめてみました。
- Firehose
- 1本のホースでS3やRedshiftに配信
- Streams
- 複数のシャードで高速にリアルタイム配信
- KPLとKCLといったライブラリでアプリケーション開発をサポート
- Analytics
- FirehoseとStreamsのストリームデータをSQLやJavaで分析
実は先日実際に認定試験を受けて選択肢にKinesis Streamsが出てきて、よく思い出せなかったので今回改めてまとめてみた次第です。(ノーマークでした...)
とはいえアソシエイトレベルではそんなに深く聞かれるわけではないので、SQSといった似たような分散処理との役割の違いや、StreamsとFirehoseの違いが抑えられていればよさそうな感じでした。(なので今回の記事はかなり軽めです!)
このページも定期的に見直して知識の定着を行っていきたいです。
また別のカテゴリについてもまとめる予定です。
AWSの基礎からの勉強や、体系立てた知識の整理には書籍もオススメです。こちらは2020年の最新試験(SAA-C02)の問題にも対応しています。
(模擬問題付き)改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト − アソシエイト教科書[SAA-C02]対応