« 【開催報告】AWSハンズオン at はてなサマーインターン2016 | メイン | AWS Black Belt Online Seminar「AWS上でのファイルサーバ構築」の資料およびQA公開 »

AWS Black Belt Online Seminar「Amazon Kinesis」ならびに「Amazon ElastiCache」の資料およびQA公開

こんにちは、ソリューションアーキテクト小川です。

先日開催したBlackBeltオンラインセミナー、「Amazon Kinesis」と「Amazon ElastiCache」の資料と、当日みなさまから頂いたQAの回答の公開準備が整いました。下記にご紹介させて頂きます。

【Amazon Kinesis】

【Q&A】
Q1. kinesis analyticsを利用したいです。利用方法を教えて下さい。
A1. 現在、バージニア北部・オレゴン・アイルランドリージョンにてご利用頂けます。

Q2. KPLで複数メッセージをまとめた場合、クライアント側のメッセージ復号方法は?
A2. KCL 1.4.0 以降をご利用頂いている場合には、メッセージの集約解除は自動的に行われます。また、GetRecords API を呼び出してレコードを取得した後、com.amazonaws.services.kinesis.clientlibrary.types.UserRecord クラスの deaggregate() メソッドを呼び出すことでも集約解除が可能です。
コンシューマーとして AWS Lambda ファンクションを実装頂く場合には、Kinesis Record Aggregation & Deaggregation Modules for AWS Lambda ライブラリーをご利用頂けます。
https://github.com/awslabs/kinesis-aggregation

Q3. シャードの結合での待機時間はどのくらいになりますでしょうか。また時間帯によりシャードを変更しようと考えておりましたが、運用として推奨はしておりませんでしょうか。
A3.シャード結合での待機時間はお客様のご利用状況に依存しますので、実際の環境にてベンチマークを取得して頂きますようお願い申し上げます。なお、MergeShards API はアカウントごとに毎秒 5 回までの呼び出し制限がございます。また、API の呼び出し後は、ストリームの状態が ACTIVE に変化するまで待機して頂く必要がございますので、ご注意下さい。時間帯に応じてシャード数を変更する運用につきましては、問題ありません。
 
【Amazon ElastiCache】

【Q&A】
Q1. ElastiCacheの読み方は、エラスィキャッシュですか?そのように聞こえたので、エラスティキャッシュと思っていました
A1. 「エラスティキャッシュ」です
 
Q2. ElastiCacheを一度上のインスタンスタイプにしてから、下のインスタンスタイプに変更する場合、選択項目として出ないようですが、一度スナップショットを取得してから、取得したスナップショットを元に作り直す事になるでしょうか?
A2. その認識で間違いありません。スケールダウンに関しては入りきらずにシステム断という可能性からもそのような手順をとっていただくのが良いかと思います。
 
Q3. DynamoDBとの使い分けはどのように考えればよいでしょうか?
A3. 「Redis/DynamoDB特有の機能を使うかどうか」や、「データの永続性」、「データ容量」、「必要なスループット」などが選定の条件になると思います。
 
Q4. Redisの最大CPU使用率は、100% / 各ノードにおけるコア数となる、ということでしょうか?
A4. その通りです。
 
Q5. アプリケーションキャッシュは、いわゆるDBのリードレプリカとどのように異なるのでしょうか?使い分けるユースケースなどをご説明いただけると幸いです。
A5. データベースのRRで読み込みの負荷分散をする方法ももちろん考えられます。しかしその場合にはRDBサーバの処理速度を倍していく単位でのにスケールアウトとなります。例えば読み込みに非常に比重の高いシステムでしかもピーク帯にはそれよりも数倍の読み込みが行われるようなWebのシステム(ニュースサイトや、ユースケースによってはゲーム等が考えられます)の場合にはDBのリードレプリカだけでは処理が追いつかない場合もあり、それを追いつかせようとするとそれだけのためにRRを際限なく増やさないといけなくなります。オートスケールなどでも処理させることは可能ですが、コスト増や運用負荷増、SPOFを生むことににもなりかねません。そこでアプリケーションキャッシュを持たせることでメモリベースの速度まで読み込みをスケールさせる事が可能になり、上手くアプリケーションキャッシュを使用することでDBの台数を増強することなく数倍、場合によっては数十倍の負荷を処理することができるようになります。

Q6. ElastiCache for redisをジョブキューとして使っていますが、ユースケースとしてはあまり好ましくないのでしょうか?
A6. resque sidekiq 等でRedis使うパターンなども含めて、メッセージロストしてもよいようなカジュアルな非同期処理が行いたいユースケールのものであれば問題ありません。クリティカルな案件、その処理内容によってはSQSをおすすめしております。
 
Q7. Redisは再起動時にデータは喪失するのでしょうか?
A7. RedisはMySQLにおける準同期レプリケーションのようなデータの整合性が保たれるようなレプリケーションではないため、インスタンスの急なダウン等の場合はレプリケーションデータがリードレプリカに行き渡らずに(ほんの微量のデータですが)失われる可能性があります。
 
Q8: 自動検出クライアントを使わずに、Configuration Endpointにリクエストした場合、どのノードにいくかは完全にランダムですか?
A8. その通りです。
 
Q9. AWSにおいて、Elasticacheを使わずに、あえてEC2でMemcache/Redis を起動したほうが良いケースはありますか?
Q9. 現在ElastiCacheで使えないインスタンスタイプ(X1等)が使いたい場合等はEC2上で立ち上げないと行けないパターンはあるかと思いますが、基本的にはそのようなユースケースは一部となります。
 
Q10. PHPアプリケーションのセッション管理にAWS ElastiCache(memchached)を利用していて、モニタリングデータを見ると、ヒット率の「Miss」が高く、チューニングをしたいと思ってますけど、ElastiCacheで何か設定を変更してチューニングすることはできましたか?アプリ側でチューニングすることしかない認識ですけど、正しいでしょうか?
A10. キャッシュミスが起きるパターンの殆どは、「何をキャッシュすればいいのか」「どのようにキャッシュすれば良いのか」が懸案事項になりますのでキャッシュを効率的に行いたい場合に関しては、アクセスパターンの現状把握とアプリケーションロジックの変更というのが主な戦略になります。その場合はRedis等で行えるのは、キャッシュメモリ領域を増やすというのがメインの対応になるかと思います。
 
Q11. redis3系のredis cluster機能をサポートする予定はありますか?
A11. 現在のところは予定はありません。 AWSはお客様の要望が多いものを優先していく文化ですので、ドンドン要望をあげていただけるとその分早く実現されると思います。

その他、過去開催分の資料はこちらに掲載されております。BlackBeltオンラインセミナーの今後の予定はこちらを参照下さい。

コメント

Twitter, Facebook

このブログの最新情報はTwitterFacebookでもお知らせしています。お気軽にフォローください。

2018年4 月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30