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
海外から快適に使ってもらうためにしてきたこと / the battle with networ...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
fanglang
September 05, 2018
Programming
0
5k
海外から快適に使ってもらうためにしてきたこと / the battle with network latency
fanglang
September 05, 2018
Tweet
Share
More Decks by fanglang
See All by fanglang
「家族アルバム みてね」を支えるS3ライフサイクル戦略
fanglang
29
36k
マルチCPUアーキテクチャ構成の実現に向けて
fanglang
1
780
Other Decks in Programming
See All in Programming
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
1
180
Metaprogramming isn't real, it can't hurt you
okuramasafumi
0
110
AI時代の認知負荷との向き合い方
optfit
0
180
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
22
7.7k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
300
並行開発のためのコードレビュー
miyukiw
2
1.7k
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
120
今から始めるClaude Code超入門
448jp
8
9.3k
CSC307 Lecture 10
javiergs
PRO
1
680
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
140
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.8k
Oxlintはいいぞ
yug1224
5
1.4k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
The agentic SEO stack - context over prompts
schlessera
0
650
sira's awesome portfolio website redesign presentation
elsirapls
0
160
Color Theory Basics | Prateek | Gurzu
gurzu
0
210
How to Think Like a Performance Engineer
csswizardry
28
2.5k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
150
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
88
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
180
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
65
Transcript
海外から快適に使ってもらう ためにしてきたこと みてねのMeetup #2 for サーバーサイド/SRE 2018/09/05 おぜきよしろう
自己紹介 • 尾関芳郎 • みてねがすき • ポーカーがすき • ロックフェスがすき
「家族アルバム みてね」について
• URL: https://mitene.us/ • 2015年4月 サービス開始 • 2017年7月 英語版提供開始 ◦
ここを伸ばしていくために頑張ってます • 2018年7月 ユーザー数 300万人突破 • 2018年8月 写真・動画のアップロード総数10億枚突破 「家族アルバム みてね」について
課題の整理
課題の整理 • 海外における課題 ◦ 日本よりもアプリの動作が遅い ◦ 海外で成功するためにはまずここをなんとかせねば!
課題の整理 • そもそも「遅い」って、何が遅いの? • 何を速くすれば快適になるの?
アプリケーションの特徴 • 家族間で画像・動画をシェア ◦ 大量の画像・動画がアップされるため、大量のストレージが必要 ◦ それぞれ少数人からのアクセスしかないため、 CDNキャッシュ効率が悪い • 海外展開
◦ 日本のリージョンに構築しているため、ネットワークレイテンシが大きい ◦ ピークタイムが国によって違う (とはいえ、今はほとんどが日本からのアクセス )
アプリケーションの特徴 • 家族間で画像・動画をシェア ◦ 大量の画像・動画がアップされるため、大量のストレージが必要 ◦ それぞれ少数人からのアクセスしかないため、 CDNキャッシュ効率が悪い • 海外展開
◦ 日本のリージョンに構築しているため、 ネットワークレイテンシが大きい ◦ ピークタイムが国によって違う (とはいえ、今はほとんどが日本からのアクセス )
アプリケーションの特徴 • 家族間で画像・動画をシェア ◦ 大量の画像・動画がアップされるため、大量のストレージが必要 ◦ それぞれ少数人からのアクセスしかないため、 CDNキャッシュ効率が悪い • 海外展開
◦ 日本のリージョンに構築しているため、 ネットワークレイテンシが大きい ◦ ピークタイムが国によって違う (とはいえ、今はほとんどが日本からのアクセス ) • 今日は、AWSが提供する機能で解決してきたことを共有します ◦ (AWS使ってない人すみません ) ◦ それ以外もいろいろやってますが、 AWSの話なら自社に取り入れやすいですよね
何をやったか?
何をやったか? 1. 写真・動画ダウンロードの高速化 2. 写真・動画アップロードの高速化 3. APIアクセス全体の高速化
1. 写真・動画ダウンロードの高速化 • みてねの画像・動画DL時のフロー(変更前) ◦ 全画像に対して、一度 APIにアクセスしてCloudFrontの署名付きURLを発行している ▪ これが遅い
1. 写真・動画ダウンロードの高速化 • 署名付きURLはまとめて発行するようにAPIの仕様を変更 ◦ 且つ署名はワイルドカードを使用 ◦ APIへのアクセスを大幅に減らすことができた!
1. 写真・動画ダウンロードの高速化 • ここを掘り下げたものが弊社酒井がiOSDCで発表しています ◦ https://speakerdeck.com/_atsushisakai/image-distribution-for-overseas ▪ こちらの資料もご確認ください。
2. 写真・動画アップロードの高速化 • 海外版リリース時のアップロードフロー ◦ US在住の場合、us-east(またはus-west)のバケットにアップロード ▪ us-east(またはus-west)から ap-northeast にレプリケーション
▪ US以外は ap-northeast に直接アップロード ◦ ap-northeast のバケットに反映されないと、家族に共有されない
2. 写真・動画アップロードの高速化 • Cross-Region Replication ◦ https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/crr.html ◦ もともとこれによって高速化されることを期待 ◦
ただし、レプリケーションされるまでにタイムラグがある ▪ 体感で、遅い時は数十秒
2. 写真・動画アップロードの高速化 • Amazon S3 Transfer Acceleration を導入 ◦ https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/transfer-acceleration.html
▪ Amazon S3 Transfer Acceleration を使用すると、クライアントと S3 バケットとの間で、長距 離にわたるファイル転送を高速、簡単、安全に行えるようになります。 Transfer Acceleration では、Amazon CloudFront の世界中に分散したエッジロケーションが利用されています。 エッジロケーションに到着したデータは、最適化されたネットワークパスで Amazon S3 に ルーティングされます。
2. 写真・動画アップロードの高速化 • Amazon S3 Transfer Acceleration を導入 ◦ ap-northeastへのアップロードは平均
0.5秒以上速くなった ▪ とは言え、大きいファイルのアップロードは時間がかかるものなので、ユーザーの体感的には あまり変わらないかも
2. 写真・動画アップロードの高速化 • この時点でうすうす気づいていた ◦ 「あれ、Cross-Region Replicationいらなくね?」
2. 写真・動画アップロードの高速化 • アメリカ出張時に現地から計測 ◦ サムネイル作成完了まで S3 Transfer Accelerationの方が最大40秒ほど速かった ◦
やはりレプリケーションは結構遅いことを実感 ◦ Transfer Accelerationは十分速い • 全てap-northeastのバケットに置くように変更した
2. 写真・動画アップロードの高速化 • はじめからこうすればよかった! ◦ (けどしょうがない)
3. APIアクセス全体の高速化 • シンプルなアプリケーション(略図)
3. APIアクセス全体の高速化 • フロントにCloudFrontを入れる
3. APIアクセス全体の高速化 • CloudFrontを入れるメリット ◦ ユーザーからCloudFrontのエッジロケーションまでの物理的な距離が近い ▪ SSL/TLS の接続確立が速くなる ◦
エッジから日本のリージョンまでの通信経路が最適化される ▪ Transfer Accelerationと同じ原理 • 実際に速くなった ◦ UKからだと平均700msほど速くなった
3. APIアクセス全体の高速化 before after
3. APIアクセス全体の高速化 before after 1,120ms → 321ms !!!!
3. APIアクセス全体の高速化 • リソースを一つのAZに集約 ◦ フロントのEC2, RDS, ElastiCacheのマスターを同じAZに集約 ◦ 10msほど速くなった(海外だからというのはあまり関係ない
) ◦ ※もちろんAZ障害が起きた際の復旧手順は用意している ◦ ※アンチパターンなのであまりおすすめはしない
今後の改善案
今後の改善案 • 端末側で画像の先読み&キャッシュ ◦ 現在開発中 • マルチリージョンAPI ◦ まだかなり先になりそう
まとめ
まとめ • 海外向けアプリはネットワークレイテンシとの戦い • AWSの機能だけである程度解決できる