$30 off During Our Annual Pro Sale. View Details »
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
430
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.1k
経営・意思・エンジニアリング
ymatsuwitter
23
21k
LLM in 2023 and 2024
ymatsuwitter
8
6k
Turbulent Technological Changes and Career Strategies
ymatsuwitter
2
3k
LLM in toB Service and Its UX
ymatsuwitter
7
11k
Agent and small LLM validation
ymatsuwitter
7
3k
Information management for a culture of speed: The story of Notion and LayerX
ymatsuwitter
4
11k
Monorepo on AWS
ymatsuwitter
0
340
Other Decks in Programming
See All in Programming
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
430
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
310
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
330
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
310
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
460
AIコーディングエージェント(Gemini)
kondai24
0
220
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.7k
エディターってAIで操作できるんだぜ
kis9a
0
720
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
4
860
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
470
開発に寄りそう自動テストの実現
goyoki
2
950
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
6
2.2k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Navigating Team Friction
lara
191
16k
Practical Orchestrator
shlominoach
190
11k
Six Lessons from altMBA
skipperchong
29
4.1k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
730
How STYLIGHT went responsive
nonsquared
100
6k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
How to train your dragon (web standard)
notwaldorf
97
6.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
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では、より新しい技術に挑戦しつつ ビジネス成果を上げたい! そんなエンジニアを募集しています!