大規模スマートフォンサービス開発の世界 ?無料通話アプリcommの現場から?1. ?大规模スマートフォンサービス开発の世界
無料通話アプリcommの現場から
February
?15,
?2013
?
Ichito
?Nagata
?
DeNA
?Co.,
?Ltd.
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
7. ?大规模であるということ
7
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
8. ユーザーベースの?大規模化
n?? スマートフォンアプリ市場の成熟
n?? AppStore:400億DL
n?? Google Play:250億DL
n?? B2C型Webサービスの主戦場のひとつへ
8
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
11. 开発体制
11
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
12. 1 5 15 60
12
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
14. 問題その1
?
?
15?人…?
?
14
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
16. ?
問題その2
?
POが瀕死
?
16
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
18. ?
問題その2
?
SMも瀕死
?
18
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
20. リリース
?
そして怒涛の
?人員追加
?
20
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
21. ?
対応その1
?
SCRUM
?OF
?SCRUM
の導?入
?
21
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
22. SCRUM
?OF
?SCRUM
?の導?入
n?? ファンクションごとの4つのスクラムに分割
CHIEF SM
SM
PO
PO PO PO PO
TEAM TEAM TEAM TEAM
22
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
23. ?
対応その2
?
専任スクラムマスター
の導?入
?
23
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
25. インフラ
25
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
26. サービス规模
?
×
?
複雑性
26
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
31. Topic:
?Data
?Store
n?? MySQLを使い倒す
n?? Master/Slave/Backup構成
n?? Shardingが前提
n?? 箇所箇所でHandlerSocketを利?用
n?? DNSもMyDNS、Job queueもQ4M
n?? ?一部のIOが激しい箇所でRedisも導?入(作業中)
31
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
32. Topic:
?DNS
n?? 名前解決であらゆる向き先を分散
n?? DB
n?? KVS
n?? メールサーバー
n?? etc
n?? MyDNSの負荷が?馬?鹿鹿にならない
n?? Consistent hashingでDNSをローカルキャッシュ
32
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
33. Topic:
?Voice
?Talk
n?? ?日?米間だと転送遅延が最低でも150msec程度発?生
n?? 海外ユーザーの?音声通話にはEC2を使?用
n?? ユーザーの最近傍のリージョンを?自動的に選択
n?? 作りがシンプルなのでいくらでもスケールアウトで
きる
33
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
34. テスト
34
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
35. リリース前后のテスト健康状态
サーバー クライアント
単体テスト
結合テスト
35
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
36. 問題その1
?
?
サーバーの結合テストが
?
書きづらい
?
36
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
38. ?
問題その2
?
クライアントの結合テストが
?
?大変
?
38
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
39. クライアントの結合テストが?大変
n?? テスターが頑張って?手作業
n?? QA?工数の圧迫
n?? 気軽にリグレッションを回せない
n?? かといって?自動化も?大変
n?? 環境構築の時点ですでに?大変
n?? Test Doubleも全部書かなきゃ
39
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
40. 上がらないカバレッジ
?
?
QA?工数の継続的増加
?
40
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
41. リリース后のテスト?方针
サーバー クライアント
単体テスト がんばる
結合テスト Integrated
?UI
?AutomaIon
?Test
41
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
42. Integrated
?UI
?AutomaRon
?Test
n?? Calabash/Cucumberを?用いたUI?自動化テスト
n?? 専?用サーバー環境を準備
n?? サーバーの最新のコードとも繋ぎこんで?一緒にテスト
42
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
45. 運?用
n?? Jenkins
n?? ミッドナイト?ヘッドレステスト
n?? Failするとメールでお叱り
n?? 専任テストエンジニア
n?? テストスクリプト作成
n?? 環境全般のメンテナンス
n?? 現状ではリグレッション?用途が主
n?? 開発中は仕様変わるので?手作業で試験
n?? 今後はなるべく開発中から?自動化してゆきたい
45
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
47. 限界
n?? フレームワークの限界
n?? アプリをまたぐ処理
n?? IMEまわり
n?? 動きのあるもの
n?? サーバーの完全な結合試験は無理
n?? あくまで補完的な役割でしかない
n?? しかし無いより全然マシ
n?? マニュアルテストやサーバー単独の結合テストも必須
47
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
49. QA
49
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
51. 問題その1
?
?
コミュニケーション不全
?
51
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
52. コミュニケーション不全
n?? チームとテスターとの認識ずれ
n?? 試験項?目
n?? 優先順位
n?? スケジュール感
n?? ようわからん感
n?? いま誰が何を試験しているのか
n?? 全体としてどういう状況なのか
n?? 不安、とにかく不安
52
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
53. ?
問題その2
?
やらされてる感
?
53
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
55. 問題その3
?
?
バグ管理の破綻
?
55
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
56. バグ管理の破綻
n?? エンジニアが?自主的にバグ管理
n?? 常にブレ続けた管理?方針
n?? フランクに放置されるブロッカー
n?? JIRAが廃墟化
n?? そして誰もいなくなった
JIRA イメージ図
56
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
57. コミュニケーション不全
?
?
やらされてる感
?
?
バグ管理の破綻
?
57
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
58. 対応その1
?
?
テスターの
?
チーム張り付き制の
?
導?入
?
58
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
60. 対応その2
?
?
専任ゲートキーパーの
?
参加
?
60
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
61. 専任ゲートキーパーの参加
n?? 藤?田さん
n?? 破綻していたJIRAを完璧にお掃除
n?? JIRA管理運?用?方針をゼロから再構築
n?? バグ放置してると毎朝メールが来る
藤?田明?子
(35)
61
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
63. 補記:Global
?QAの難しさ
n?? 電波法の問題
n?? 海外端末を国内のWi?に繋げない
n?? DeviceAnywhereでリモートデバッグ
n?? ?言語の問題
n?? バイリンガルテスターの採?用
n?? 翻訳や現地テスターとのやり取りをお願い
63
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
64. 集计/分析
64
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
66. 何が起きているのか
?
わからない
?
わからない
66
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
67. 対応その1
?
?
クライアントログ収集
?
67
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
68. クライアントログ収集
n?? クライアント側でログを吐く
n?? 各種性能指標
n?? アクティビティ
n?? 端末にバッファリングして定期的にサーバーに送信
n?? サーバーログと同じ形式でHadoop上に保存
n?? トークや通話等、個?人情報や通信に関わる部分は除外
68
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
69. 対応その2
?
?
アクティビティの可視化
?
69
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
72. 颁翱惭惭はどこへ?行行くのか
72
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
73. commはどこへ?行行くのか
n?? 実名制、リアルアイデンティティを軸とした
クローズド?コミュニケーションのプラットフォームへ
n?? 春ごろに?大きな改修を予定
アイデンティティ
実名
Face
book
(
(
限 非
定 限
定
多
ー
ー
ー
れ
数
知 知
対 人 人
)
象 LINE mixi
)
ニックネーム
73
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
75. ACTION
75
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?
76. ?大规模たれ
76
?
Copyright
?(C)
?2013
?DeNA
?Co.,Ltd.
?All
?Rights
?Reserved.
?