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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
y_matsuwitter
April 25, 2016
Programming
0
440
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
Building Products in the LLM Era
ymatsuwitter
11
12k
Product Utilization of Large Language Models Starting Today
ymatsuwitter
3
3.3k
経営・意思・エンジニアリング
ymatsuwitter
23
21k
LLM in 2023 and 2024
ymatsuwitter
8
6.1k
Turbulent Technological Changes and Career Strategies
ymatsuwitter
2
3.1k
LLM in toB Service and Its UX
ymatsuwitter
7
11k
Agent and small LLM validation
ymatsuwitter
7
3.1k
Information management for a culture of speed: The story of Notion and LayerX
ymatsuwitter
4
11k
Monorepo on AWS
ymatsuwitter
0
360
Other Decks in Programming
See All in Programming
TipKitTips
ktcryomm
0
170
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
350
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
390
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
1.5k
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
470
AI活用のコスパを最大化する方法
ochtum
0
140
The free-lunch guide to idea circularity
hollycummins
0
270
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
580
Understanding Apache Lucene - More than just full-text search
spinscale
0
130
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
110
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
130
CSC307 Lecture 14
javiergs
PRO
0
470
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Visualization
eitanlees
150
17k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
180
We Have a Design System, Now What?
morganepeng
55
8k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
140
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
290
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
Chasing Engaging Ingredients in Design
codingconduct
0
140
How STYLIGHT went responsive
nonsquared
100
6k
Prompt Engineering for Job Search
mfonobong
0
190
The SEO Collaboration Effect
kristinabergwall1
0
400
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
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では、より新しい技術に挑戦しつつ ビジネス成果を上げたい! そんなエンジニアを募集しています!