うちのいぬ Tech Blog

Tech Blog of Uchinoinu/My dog

3Dアプリの行動履歴ログを獲得する為に参考にした資料の備忘録

qiita.com

経緯

とあるサービスでユーザーの行動解析を行う際に、ログデータを受け取ってなるべくリアルタイムに加工して出力するシステムが必要になったので、どう構築していくか調査することになりました。 その際にとても有用だと感じた資料を残しておきます。備忘録です。

概要

ログ管理のベストプラクティス

AWS Japanのソリューションアーキテクトの方の資料です。AWSを使う場合にはたくさんの定石を知ることができて役立ちました。

秒間数万のログをいい感じにするアーキテクチャ

  • Cookpadのログへの考え方からシステムの変遷まで書かれていて、ログというものへの全体像を実感するのにとても役立ちました

AWS summit 2016 Tokyo 発表内容】タウンワークにおけるサーバーレスアーキテクチャデザイン

サーバーレスアーキテクチャのパターン別ユースケース

各要素

Kinesis

データの一時受けに便利です。KinesisはStreamsとFirehoseとAnalyticsの3つのサービスにわかれています

Kinesis Streams

Kinesis Streamsの公式ページで、結局ここが一番わかり易いです。 diagram-kinesis-streams-how-it-works.png

Kinesis Firehose

Kinesis Firehoseの公式ページがとてもわかり易いです。 diagram-kinesis-firehose-s3-redshift-elasticsearch_v2.png

Amazon Kinesis StreamsとAmazon Kinesis Firehoseは何が違うのか

Amazon Kinesis StreamとAmazon Kinesis FirehoseのAPIを比較する #reinvent

AWS Kinesis Firehoseを動かして見る

KafkaとAWS Kinesisの比較

AWS以外のサービスとの比較、AWSにとらわれないシステム構成などを学ぶことができました

fluent-plugin-kinesisでKinesis Streamsにログを送信する

実用例としてとても参考になりました。

fluent-plugin-kinesis-firehoseでAmazon Kinesis Firehoseにログを転送する

のfirehose版で、こちらも参考になりました。

結合例

ストリーム型(kinesis stream)のAWS Lambdaの同時起動数とデータの取り方を整理

Kinesis Streams と Lambda との組み合わせ方について勉強になりました

Fluentd&Kinesis&Lambdaによる柔軟で高可用性なログ収集基盤の構築

  • Fluentd -> Kinesis -> Lambda -> [S3, DynamoDB...] などの流れが明快にわかってとても参考になります

API Gateway / Lambda / Kinesis を使ったストリーミングなバッチ実行基盤の実装

考察が乗っていてとてもわかりやすいです

Kinesis Producer Library(KPL)とfluentdとLambdaを連携してKinesisのスループットを上げる

2つ目の記事に関して解説が追加された記事になります。わかりやすい。

Data Storage

Amazon DynamoDB

公式ですので、とりあえず目を通します

API Gateway

とりあえずAPI Gatewayはとっても便利という印象でした。 EC2がいいのか、API Gateway + Lambdaがいいのかとか色々悩みましたが、そもそもいろんな使い方があることが勉強になります。

以下、入門編という感じで資料です。

API ホスト名としてのカスタムドメイン名の設定 - Amazon API Gateway

【新機能】Amazon API GatewayがACM (AWS Certificate Manager)に対応。簡単に独自ドメインAPIがSSL化。 | Developers.IO

API Gateway リソースの CORS を有効にする - Amazon API Gateway

API Gateway API のリクエストパラメータをマッピングする - Amazon API Gateway

Amazon API GatewayからAWS Lambdaにパラメータを渡す方法 - Qiita

EC2からLambdaへの移行

AWS 謹製 aws-serverless-express を使って APIGateway + Lambda + Node + Express で RESTful サービスの雛形を最速で作る - Qiita

expressでEC2に構築済のサービスをLambdaに移行していきたかったので、役立ちました

AWS LambdaからIAM RoleのCredential情報を取得し、RedshiftのCOPY処理に利用する

結局毎回権限周りであれこれチグハグするので、こうした記事は大変助かります