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
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
10k
Product Utilization of Large Language Models Starting Today
ymatsuwitter
3
2.9k
経営・意思・エンジニアリング
ymatsuwitter
23
20k
LLM in 2023 and 2024
ymatsuwitter
8
5.9k
Turbulent Technological Changes and Career Strategies
ymatsuwitter
2
2.9k
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
330
Other Decks in Programming
See All in Programming
Navigating Dependency Injection with Metro
zacsweers
3
2.5k
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
190
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
mkeeda
2
1.8k
アセットのコンパイルについて
ojun9
0
130
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
2
210
Improving my own Ruby thereafter
sisshiki1969
1
160
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
230
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
610
ProxyによるWindow間RPC機構の構築
syumai
3
1.2k
AIコーディングAgentとの向き合い方
eycjur
0
280
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
個人軟體時代
ethanhuang13
0
330
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
RailsConf 2023
tenderlove
30
1.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
BBQ
matthewcrist
89
9.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Statistics for Hackers
jakevdp
799
220k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Faster Mobile Websites
deanohume
309
31k
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では、より新しい技術に挑戦しつつ ビジネス成果を上げたい! そんなエンジニアを募集しています!