Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Client side log collection with AWS Mobile SDK
Search
y_matsuwitter
April 25, 2016
Programming
0
400
Client side log collection with AWS Mobile SDK
Gunosy Beer #4にて
y_matsuwitter
April 25, 2016
Tweet
Share
More Decks by y_matsuwitter
See All by y_matsuwitter
Product Utilization of Large Language Models Starting Today
ymatsuwitter
3
2.1k
経営・意思・エンジニアリング
ymatsuwitter
23
19k
LLM in 2023 and 2024
ymatsuwitter
8
5.2k
Turbulent Technological Changes and Career Strategies
ymatsuwitter
2
2.5k
LLM in toB Service and Its UX
ymatsuwitter
6
9.9k
Agent and small LLM validation
ymatsuwitter
7
2.9k
Information management for a culture of speed: The story of Notion and LayerX
ymatsuwitter
4
9.6k
Monorepo on AWS
ymatsuwitter
0
260
Tech behind LayerX SaaS products
ymatsuwitter
0
3k
Other Decks in Programming
See All in Programming
Quine, Polyglot, 良いコード
qnighy
4
640
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
350
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
4
640
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
860
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
100
ローコードSaaSのUXを向上させるためのTypeScript
taro28
1
610
Jakarta EE meets AI
ivargrimstad
0
620
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
330
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
1.5k
Featured
See All Featured
BBQ
matthewcrist
85
9.3k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Side Projects
sachag
452
42k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Rails Girls Zürich Keynote
gr2m
94
13k
Bash Introduction
62gerente
608
210k
Happy Clients
brianwarren
98
6.7k
Thoughts on Productivity
jonyablonski
67
4.3k
The Invisible Side of Design
smashingmag
298
50k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
AWS Mobile SDKで始めるスケーラブルなログ収集 Gunosy Inc. 2016.04 @y_matsuwitter
2 ©Gunosy Inc. ⾃⼰紹介 n Gunosy Inc. – 開発本部執⾏役員 n
業務 – 開発全般のマネジメント – Go⾔語布教係 – パフォーマンスチューニング – ISUCONとか好きです n 担当 – 右⼿でiOS、左⼿でAndroid – Web – Infrastructure(AWSのみ) n 最近の興味 – ViveとOculus製品版買いました 松本 勇気 @y_matsuwitter
3 ©Gunosy Inc. 今⽇の話 n ⾃⼰紹介 n これまでのログ収集について – 計測ツールの利⽤
– サーバサイドのアクセスログ – 専⽤のfluentdプロキシ n AWS Mobile SDKの紹介 – AWSの認証とCognito – 使えるサービス群 – Kinesisとは n PureeとKinesisでさくさくログ収集 – Pureeを使ってみる – iOSとログ収集 – Androidとログ収集 モバイルアプリでのログ収集のこれまでと、AWS Mobileによるログの収集
4 ©Gunosy Inc. これまでのログ収集の歴史
5 ©Gunosy Inc. よくあるパターン: 計測ツールを使う 仮説検証に対して、ツールが提供できる分析範囲は狭い n ⼀般的なメトリクスは取れる – 画⾯ごとのPV
– ボタンを押した、などのカスタムイベン ト n よく使われるもの – Google Analytics – Reproなど n 難点 – ユーザー単位の細かい分析が難しい – 計測イベント数の上限あり おそらく多くのサービスで計測サービスを利⽤しているのではないでしょうか mixpanel Flurry Google Analytics Repro
6 ©Gunosy Inc. サーバのアクセスログを使う ユーザー⾏動と少々離れてるログが多く、情報が不⾜ n 今のシステムに対して組み込みやすい – Nginxのログをfluentdで収集 –
ユーザー単位でどんな機能利⽤があっ たか、パターンを探ることができる n よく使われるもの – FluentdからRedshift/BigQueryに送 るケースが多いかも – サマリ値をElasticsearchへ n 難点 – 計測イベント ≠ APIアクセス データのやり取りを実⾏するAPIのアクセスからログを集める APIサーバ アクセスログ 通常の APIアクセス
7 ©Gunosy Inc. ログコレクタへのプロキシAPIを作ってみる LGTM、 しかしスケーラビリティが必要 n ログコレクタ⾃体は簡易に作れる – グノシーではGoで任意のログをfluent
dへ送る仕組みを実装 n 求めていたログ収集 – 仮説に対して必要なログが集められる – クライアント側も⾃由にログの追加が できる時代がやってきた n 難点 – ログ送りすぎ問題、各レイヤで詰まる クライアントから任意のログをAPI経由で送れるようにする ログ収集サーバ 各イベントログ 必要なイベント ごとに送付
8 ©Gunosy Inc. AWS Mobile SDKの紹介
9 ©Gunosy Inc. モバイル開発にAWSの⼒を クライアント側だけで多くの機能を作成可能に n 各サービスへの認証系をサポート n サーバサイドの作業を減らす –
データストレージとのやり取りを直接 クライアントから – ユーザー認証など必要な機能もSDKの みで可能 AWSの各サービスへのアクセスをサポートする公式なライブラリ
10 ©Gunosy Inc. 使えるサービス群 ⼀例として、現状これらのサービスをクライアントから直接利⽤している Amazon Kinesis Amazon Cognito Amazon
SNS Cognito AWS SNS Kinesis ユーザーの認証、AWS系のサービスへの認証・認可、設定値のアプリ間同期など。 モバイル通知(APNS、GCM)のトークンを管理し、通知送信などを可能にする。 様々なイベントデータを送信、一定量をKinesisに保持し、ストリーム処理に繋げる。 Amazon Mobile Analy5cs MobileAnalytics AWSが提供するモバイルサービスの分析サービス。
11 ©Gunosy Inc. Kinesisとは サーバ管理不要な⼤規模データストリームの集計・変換サービス n ⼤量のログを受け取り処理するための受け⽫ – 同時処理性能を簡単に増減させられる –
24時間分のログを溜める n 主にStream処理、ログの1次加⼯に利⽤ – Kinesisのログを逐次その他システム で処理する – 例1:ログを加⼯してS3に永続化 – 例2:逐次的にログ集計、短時間でサ ービスに反映する n 何が嬉しいか – ログデータの安定した配送を簡単に実 現できる – Kinesisの関連プロダクトとの連携が 将来⾒込める ・行動ログ ・属性ログ …etc S3に対して ログを保存 EMRからログの分析 LOG LOG LOG LOG LOG LOG
12 ©Gunosy Inc. PureeとKineisisでログを送る
13 ©Gunosy Inc. Pureeとは ログ送信だけでなく、再送設定やバッファリングなど有⽤な機能多い n iOS/Android双⽅のライブラリあり n クライアントサイド向けログコレクタ –
fluentdと似た機構をもち、イベント を適宜バッファリングしつつ⾮同期送信 n ⾃⾝でOutputPluginを書く – Google Analyticsなどツールへの送信 – 指定のログごとに違うストラテジでロ グを送ることが可能 Cookpad社製のクライアント向けログコレクタ 出所: https://github.com/cookpad/puree-ios
14 ©Gunosy Inc. PureeのBufferedOutputとKinesis 複数のログをBufferingし、KinesisへのBatchリクエストとして⼀度で送信
15 ©Gunosy Inc. Androidの場合
16 ©Gunosy Inc. 実際の利⽤に関して ログの性質に応じて送信のパラメタをチューニングする n Swift: Enumを利⽤ n Android:Classを利⽤
n 出来る限り早く送付してほしいデータ – Bufferサイズを⼩さく n 収集頻度が⾼く、リアルタイム性の低いもの – Bufferサイズを⼤きく取り、別なQueu eから送信する ログごとにClassやEnumを定義、Output先を頻度で変更してしている LOG LOG LOG LOG バッファ・サイズを 種類ごとに変更 高頻度ログ 低頻度ログ
17 ©Gunosy Inc. まとめ
18 ©Gunosy Inc. まとめ Kinesis + Pureeで理想的・スケーラブルなログ収集 正しい分析ログを集めるために考えることは多い。 よりよいログ収集とは KinesisとPureeでログ収集
n 仮説に寄り添うログ収集 – システム都合のログではなく、 必要なログを集める仕組み n 容易にログを追加可能 – ログ追加のたびに設定などを要 しないクライアントに優しい仕 組み n スケーラビリティの担保 – ログをいくら投げてもスケール n 任意のデータをKinesisへ – 所定のjsonをKinesisに好きな タイミングで投げる n Pureeで送信を容易に – PureeのBuffredOutputから KinesisへBatchRequestで送信 – 送信失敗に対する対処が容易
19 ©Gunosy Inc. Gunosyでは、より新しい技術に挑戦しつつ ビジネス成果を上げたい! そんなエンジニアを募集しています!