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
140
1
Share
アプリの復旧を早くしたい!
mitohato14
March 14, 2025
More Decks by mitohato14
See All by mitohato14
Androidアプリ開発にもCursorという選択肢を
mitohato14
0
570
兎に角、コードレビュー
mitohato14
2
400
CodeRabbitと過ごした1ヶ月 ─ AIコードレビュー導入で実感したチーム開発の進化
mitohato14
4
4k
事業開発とコミュニティ活動
mitohato14
0
68
プレビューファーストUI開発
mitohato14
1
500
新米テックリードの試行錯誤.pdf
mitohato14
1
560
JetpackCompose Slot APIs
mitohato14
0
1.1k
Start Jetpack Compose.pdf
mitohato14
0
420
Other Decks in Programming
See All in Programming
RTSPクライアントを自作してみた話
simotin13
0
430
inferと仲良くなる10分間
ryokatsuse
1
350
Oxlintのカスタムルールの現況
syumai
5
980
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
2
410
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.5k
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
5
1k
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.4k
TSKaigi 2026 TypeScriptバックエンドのオブザーバビリティ戦略 — Datadog × NestJSの実践
taiseiyamamotoan
1
220
GitHub Copilot CLIのいいところ
htkym
2
1.2k
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
220
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
430
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
120
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
720
Exploring anti-patterns in Rails
aemeredith
3
380
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
180
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Navigating Weather and Climate Data
rabernat
0
210
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
The browser strikes back
jonoalderson
0
1.1k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.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