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
98
アプリの復旧を早くしたい!
mitohato14
March 14, 2025
Tweet
Share
More Decks by mitohato14
See All by mitohato14
CodeRabbitと過ごした1ヶ月 ─ AIコードレビュー導入で実感したチーム開発の進化
mitohato14
2
810
事業開発とコミュニティ活動
mitohato14
0
46
プレビューファーストUI開発
mitohato14
1
460
新米テックリードの試行錯誤.pdf
mitohato14
0
490
JetpackCompose Slot APIs
mitohato14
0
830
Start Jetpack Compose.pdf
mitohato14
0
370
Other Decks in Programming
See All in Programming
SODA - FACT BOOK
sodainc
1
940
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
0
300
WindowInsetsだってテストしたい
ryunen344
1
170
ReadMoreTextView
fornewid
1
430
FormFlow - Build Stunning Multistep Forms
yceruto
1
170
関数型まつりレポート for JuliaTokai #22
antimon2
0
110
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
510
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
230
複数アプリケーションを育てていくための共通化戦略
irof
10
3.9k
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
1.4k
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
220
イベントストーミングから始めるドメイン駆動設計
jgeem
4
850
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
430
65k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
480
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Code Reviewing Like a Champion
maltzj
524
40k
Building an army of robots
kneath
306
45k
Writing Fast Ruby
sferik
628
61k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Producing Creativity
orderedlist
PRO
346
40k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
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