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
アプリの復旧を早くしたい!
Search
mitohato14
March 14, 2025
Programming
0
95
アプリの復旧を早くしたい!
mitohato14
March 14, 2025
Tweet
Share
More Decks by mitohato14
See All by mitohato14
CodeRabbitと過ごした1ヶ月 ─ AIコードレビュー導入で実感したチーム開発の進化
mitohato14
1
330
事業開発とコミュニティ活動
mitohato14
0
43
プレビューファーストUI開発
mitohato14
1
450
新米テックリードの試行錯誤.pdf
mitohato14
0
490
JetpackCompose Slot APIs
mitohato14
0
810
Start Jetpack Compose.pdf
mitohato14
0
370
Other Decks in Programming
See All in Programming
人には人それぞれのサービス層がある
shimabox
3
380
ユーザーにサブドメインの ECサイトを提供したい (あるいは) 2026年函館で一番熱くなるかもしれない言語の話
uvb_76
0
160
當開發遇上包裝:AI 如何讓產品從想法變成商品
clonn
0
290
TypeScript だけを書いて Tauri でデスクトップアプリを作ろう / Tauri with only TypeScript
tris5572
2
480
「MCPを使ってる人」が より詳しくなるための解説
yamaguchidesu
0
290
Building an Application with TDD, DDD and Hexagonal Architecture - Isn't it a bit too much?
mufrid
0
370
バリデーションライブラリ徹底比較
nayuta999999
1
220
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
0
220
ドメイン駆動設計とXPで支える子どもの未来 / Domain-Driven Design and XP Supporting Children's Future
nrslib
0
350
What Spring Developers Should Know About Jakarta EE
ivargrimstad
1
420
衛星の軌道をWeb地図上に表示する
sankichi92
0
230
TypeScript Language Service Plugin で CSS Modules の開発体験を改善する
mizdra
PRO
3
2.1k
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Site-Speed That Sticks
csswizardry
6
580
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
830
Thoughts on Productivity
jonyablonski
69
4.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
Scaling GitHub
holman
459
140k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
Transcript
© DMM © DMM CONFIDENTIAL アプリの復旧を早くしたい! DroidKaigi.collect { #17@Tokyo }
mitohato14 2024/03/14
© DMM 自己紹介 名前 mitohato14(Miyazato Hayato) 最近の趣味 Monster Hunter Wilds ぶいすぽっ!
ランダムダンスを見る 2
© DMM 今日話すこと アプリの復旧を早くするための取り組み 問題のあるアプリをロールバックする 3
© DMM サービスの紹介
サービス LP:https://lp.pointclub.dmm.com/ DMMポイントをお 得に貯めて 賢く管理 ! カジュアルゲームで 効率的に ポイントを稼げる !
FEATURE FEATURE DMMの お得な情報が 届く! FEATURE 3 サービスコンセプト
会員数 MAU 機能 DAU で手に入れよう モバイルアプリ版 6 万 カジュアル ゲーム
ポイント 管理 万 (会員IDベース(Web含む)) 10〜 13 万 5〜 6 通知 送客 広告 59
© DMM 本題
© DMM アプリを早く復旧したい!
© DMM なぜ?
© DMM アプリのリリース リリース前のストア審査が必須 ストア審査にかかる時間はマチマチ 10
© DMM ポイントクラブのストア審査 以前:数時間レベル 現在:1日以上 11
© DMM ストア審査時間 12 https://support.google.com/googleplay/android-developer/answer/9859654?hl=ja
© DMM 審査時間が長いことによる影響
© DMM 例えば 問題発生 14
© DMM 例えば 問題発生 ロール バック 15
© DMM 例えば 問題発生 ロール バック ストア 審査 16
© DMM 例えば 問題発生 ロール バック ストア 審査 リリース 17
© DMM 例えば 問題発生 問題収束 ロール バック ストア 審査 リリース
18
© DMM 例えば 問題発生 問題収束 ロール バック ストア 審査 リリース
0.5日 1日 0.5日 19
© DMM 例えば 問題発生 問題収束 ロール バック ストア 審査 リリース
0.5日 1日 0.5日 2日 20
© DMM 時間がかかる 😇
© DMM ちなみに
© DMM iOS 特急審査という概念 アプリレビューの優先処理をリクエストできる 23
© DMM iOS 特急審査という概念 アプリレビューの優先処理をリクエストできる Androidにも欲しい。。。 24
© DMM 閑話休題
© DMM ポイントクラブのストア審査 以前:数時間レベル 現在:1日以上 26
© DMM 審査に時間がかかるようになっている中。。。
© DMM クラッシュスパイク発生
© DMM クラッシュスパイク 2024年最後のリリース(12月23日) 大量のクラッシュ発生 29 https://x.com/DMM_POINTCLUB/status/1871433715488043259?s=19
© DMM 😇
© DMM クラッシュスパイク 12月23日夕方頃 リリース 12月24日昼頃 問題検知・ロールバック 12月25日夕方頃 審査通過・リリース 31
© DMM ユーザーをかなり待たせてしまった
© DMM 早く復旧したい
© DMM 早く復旧できる仕組みを考える
© DMM 早い復旧を考える 問題発生 問題収束 ロール バック ストア 審査 リリース
0.5日 1日 0.5日 2日 35
© DMM 早い復旧を考える 審査時間は操作不能変数 操作可能変数部分に注力 36
© DMM 操作可能変数 問題発生 問題収束 ロール バック ストア 審査 リリース
0.5日 1日 0.5日 37
© DMM 操作可能変数 問題発生 問題収束 ロール バック ストア 審査 リリース
0.5日 1日 0.5日 38
© DMM 操作可能変数 問題発生 問題収束 ロール バック ストア 審査 リリース
0.5日 1日 0.5日 39
© DMM 早く復旧するには
© DMM ロールバックの仕組み
© DMM ロールバックの仕組みを考える • Feature Flag • ロールバック用アプリの事前用意 42
© DMM Feature Flag 導入・運用コストの懸念 43
© DMM ロールバック用アプリの事前用意に決定
© DMM リリースフローに導入
© DMM これまでのリリースフロー 1. GitタグのpushでCI発火 a. リリース用アプリのビルド b. Play Consoleにアップロード
2. 内部テスト配信 3. ストア審査提出 4. GitHub Release公開 46
© DMM 仕組みを導入する
© DMM 仕組み概要 1. 以前リリースしたバージョンを復元 2. 次のバージョンに更新 3. アプリビルド 4.
Play Consoleにアップロード 48
© DMM ロールバックスクリプト 1. 今回のリリースバージョン取得 2. アプリのバージョンをインクリメント 3. 以前のリリースタグ取得 a.
GitHub Release経由 4. git switch -d “以前のリリースタグ名” 5. 新しいバージョンを反映 49
© DMM 50
© DMM ロールバックスクリプト 1. 今回のリリースバージョン取得 2. アプリのバージョンをインクリメント 3. 以前のリリースタグ取得 a.
GitHub Release経由 4. git switch -d “以前のリリースタグ名” 5. 新しいバージョンを反映 51
© DMM 52
© DMM
© DMM ロールバックスクリプト 1. 今回のリリースバージョン取得 2. アプリのバージョンをインクリメント 3. 以前のリリースタグ取得 a.
GitHub Release経由 4. git switch -d “以前のリリースタグ名” 5. 新しいバージョンを反映 54
© DMM
© DMM ロールバックスクリプト 1. 今回のリリースバージョン取得 2. アプリのバージョンをインクリメント 3. 以前のリリースタグ取得 a.
GitHub Release経由 4. git switch -d “以前のリリースタグ名 ” 5. 新しいバージョンを反映 56
© DMM
© DMM ロールバックスクリプト 1. 今回のリリースバージョン取得 2. アプリのバージョンをインクリメント 3. 以前のリリースタグ取得 a.
GitHub Release経由 4. git switch -d “以前のリリースタグ名” 5. 新しいバージョンを反映 58
© DMM
© DMM CI 60 リリースビルド アップロード 以前のバージョン復元 リリースビルド アップロード
© DMM 新しいリリースフロー
© DMM リリースフロー 1. GitタグのpushでCI発火 a. リリース用アプリのビルド b. Play Consoleにアップロード
c. ロールバック用アプリのビルド d. Play Consoleにアップロード 2. リリース用アプリの内部テスト配信 3. リリース用アプリのストア審査提出 4. GitHub Release公開 5. ロールバック用アプリのストア審査提出 62
© DMM 期待する効果
© DMM 期待する効果 ロールバックするまでの時間が短くなる ユーザー影響を少なくできる 64
© DMM 導入結果
© DMM 実際の効果 時間短縮効果はまだ分からない 66
© DMM 実際の効果 時間短縮効果はまだ分からない 安心感はある ロールバック用の作業工数削減 67
© DMM 工数削減 1. リバート 2. 動作確認 3. PR作成 4.
CIビルド 5. バージョン更新 6. PR作成 7. CIビルド 8. 審査提出 68
© DMM 工数削減 1. リバート 2. 動作確認 3. PR作成 4.
CIビルド 5. バージョン更新 6. PR作成 7. CIビルド 8. 審査提出 1. 動作確認 2. 審査提出 69
© DMM 意識していなかった効果も得られた
© DMM めでたしめでたし
© DMM まだ
© DMM 残った課題 審査時間はやっぱり長い。。。 もっと復旧までの時間を短縮できる予定ではあった 73
© DMM 残った課題 リリース用アプリとロールバック用アプリは同時に審査できない リリースした後に審査提出する必要がある 74
© DMM どうするか
© DMM 今後の話 もっと早くしたい Feature Flagを導入するしかなさそう 76
© DMM ロールバック以外だと
© DMM 段階的リリース 影響あるユーザー数を抑える ロールバックの仕組みと組み合わせる 78
© DMM みなさんの取り組みを聞きたい
© DMM Xや懇親会で教えてください!
© DMM まとめ • リリース時にロールバック用アプリも用意しておく • ロールバック用の作業時間を短縮できた • 安心感を生むこともできる •
アプリにもロールバックの仕組みを! 81