予期せぬアクセス急増、その謎に迫る :私たちの対応と解決策
by
LINE Developers
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
༧ظͤ͵ΞΫηεٸ૿ɺͦͷಾʹഭΔ ɿࢲͨͪͷରԠͱղܾࡦ Ճ౻ढ़ !NBSVMPPQ -*/&גࣜձࣾ$PNNVOJDBUJPO4FSWJDFJOUFHSBUJPOࣨ43& 5FDI-FBET -*/&ελϯϓண͔ͤ͑ֆจࣈΥϨοτλϒϗʔϜλϒ
Slide 2
Slide 2 text
「なにもしてないのにアクセスが急に増えた」経験、 ありますか?
Slide 3
Slide 3 text
LINEアプリの着せかえでの事例
Slide 4
Slide 4 text
着せかえ機能とは? LINEアプリには、テーマを設定できる「着せかえ」機能があります。 様々なキャラクターなどをモチーフにしたテーマが販売されているため、 LINEアプリを自分好みのデザインにして使えます。
Slide 5
Slide 5 text
「着せかえ」のテーマ切り替え ある日の夜8時、 突然のDB Connection Errorのアラートが発生。 原因は、どうやら「着せかえ」のテーマ切り替えAPIの一時的なアクセス急増。
Slide 6
Slide 6 text
原因調査を開始するが・・・ 「ブラック」 x 「ANDROID」 x 「アプリバージョンに依らない」 = ??? 調査項目 結果 ユーザーIDの偏り 偏っていない クライアントOSの偏り アクセスのほぼすべてがAndroid アプリバージョンの偏り 偏ってない(古いアプリからもアクセスがある) 着せかえ先の偏り ほぼすべて「ブラック」
Slide 7
Slide 7 text
Android11, Darkテーマのスケジュール機能 • LINE(Android版)では、ダークモードは着せかえ機能によって実現されている • Android11から、ダークモードに時刻で切り替えられるようになった
Slide 8
Slide 8 text
Android11, Darkテーマのスケジュール機能 • LINE(Android版)では、ダークモードは着せかえ機能によって実現されている • Android11から、ダークモードに時刻で切り替えられるようになった 日本中のダークモード利用ユーザーが 同時にテーマ切り替えAPIにアクセスするようになった
Slide 9
Slide 9 text
対処の方針検討 着せかえをダークモードに使わない • サーバーアクセス自体が不要になる • クライアントチームだけで対応可能 • アプリの影響範囲が大きい • 古いアプリからのアクセスは続く DBインスタンスを増やし、処理性能をあげる • お金で解決する • 一時的なアクセス急増のためには効率が悪い Redisキャッシュを利用し、DBアクセスを減らす • サーバーチームだけで対応可能 • 古いアプリにも効く
Slide 10
Slide 10 text
Redisキャッシュを利用し、DBアクセスを減らす 一見、完璧な対応に見えるが、そもそもなぜ、キャッシュしてなかったのか?
Slide 11
Slide 11 text
Redisキャッシュを利用し、DBアクセスを減らす 一見、完璧な対応に見えるが、そもそもなぜ、キャッシュしてなかったのか? 1. 着せかえテーマ切り替え時に、ユーザーの所有権を確認したい
Slide 12
Slide 12 text
Redisキャッシュを利用し、DBアクセスを減らす 一見、完璧な対応に見えるが、そもそもなぜ、キャッシュしてなかったのか? 1. 着せかえテーマ切り替え時に、ユーザーの所有権を確認したい 2. ユーザーの所有権確認は、基本的にキャッシュしたくない • 購入直後に適用できないなどのトラブル防止
Slide 13
Slide 13 text
Redisキャッシュを利用し、DBアクセスを減らす 一見、完璧な対応に見えるが、そもそもなぜ、キャッシュしてなかったのか? 1. 着せかえテーマ切り替え時に、ユーザーの所有権を確認したい 2. ユーザーの所有権確認は、基本的にキャッシュしたくない • 購入直後に適用できないなどのトラブル防止 3. 無理にキャッシュしても、ユーザーごとのキャッシュは効率が悪い どう解決するか?
Slide 14
Slide 14 text
所有権の確認タイミング 着せかえの新規ダウンロード時 着せかえの切り替え時 バックグラウンドで実施されている日次同期
Slide 15
Slide 15 text
リスク受容:切り替え時には所有権確認しなければいいじゃない 着せかえの新規ダウンロード時 着せかえの切り替え時 バックグラウンドで実施されている日次同期
Slide 16
Slide 16 text
最終的に実施したこと 1. 原因の調査と対応方針の検討 2. 企画担当者に、着せかえ切り替え時の所有権確認の削除を提案 3. 所有権を含まずキャッシュできる、着せかえ切り替え用のAPIを新規作る 4. クライアント側でそのAPIに呼び変え、アプリリリース すべての着せかえ切り替えリクエストが改善し、DBアクセスが1/3に。
Slide 17
Slide 17 text
まとめ • 突然のアクセス急増に、プロダクトのSREとして対応した • DBA、サーバーサイド、クライアントサイド、企画サイドを巻き込んで対応 • 最終的にリスクを受容しつつ、効率の良い解決策に落ち着いた Thank you! アクセスが減り、サーバーコストを削減できた エラーが減り、より安定した ダウンロード時・日次同期時の所有権確認があるため、悪用も増えず