Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発のアジリティ向上のためのシステムリプレイス ~DMM GAMESの事例~
Search
Kentaro Matsushita
December 13, 2023
Technology
0
710
開発のアジリティ向上のためのシステムリプレイス ~DMM GAMESの事例~
「DMM meetup #39 ~開発生産性を熱く語る会~」 の登壇資料です
https://dmm.connpass.com/event/301567/
Kentaro Matsushita
December 13, 2023
Tweet
Share
More Decks by Kentaro Matsushita
See All by Kentaro Matsushita
Denoで簡単なCLIツールを作ってみる / Try to make a simple CLI tool with Deno
kentarom
0
940
GatsbyJSで作った個人ブログの構成を色々見直してみた / Improve my personal blog made with GatsbyJS
kentarom
1
360
Webサイトパフォーマンスを継続的に計測したい!!! / I want to continuously measure my website performance!!!
kentarom
2
500
Actions ToolkitではじめるGitHub Action開発 / Getting started creating a GitHub Action with Actions Toolkit
kentarom
2
1.8k
GitHub Gistを使って、アクティビティを可視化しよう / Let's try visualizing your activity using the GitHub Gist
kentarom
1
780
OGP画像を生成するNode.jsのライブラリを作ってみた / Create a Node.js module for generating Open Graph image
kentarom
1
7.2k
チームをよしなにする立場を経験して学んだこと / Things I have learned in leading the team
kentarom
0
700
AWSの既存サービスを活用して、 障害検知・復旧を迅速化するカラクリ / JAWS-UG Kanazawa x OpsJAWS
kentarom
2
4.6k
DMM.comの認証基盤を支えるエラー通知の仕組み / AWS Dev Day Tokyo 2018 Lightning Talk
kentarom
2
13k
Other Decks in Technology
See All in Technology
Yahoo! JAPANトップページにおけるマイクロフロントエンド - 大規模組織におけるFE開発を加速させるには
lycorptech_jp
PRO
0
1.7k
AWS re:Invent 2024 予選落ちのBedrockアプデをまとめて解説!
minorun365
PRO
2
230
歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
ayumu838
0
1.7k
Microsoft 365と開発者ツールの素敵な関係
kkamegawa
1
1.3k
ポストモーテムレビューをブレームレスに運営し有効な改善アクションを引き出すために必要だったこと / What is needed to operate postmortem blamelessly and elicit improvement actions
yamaguchitk333
0
130
レガシーシステムへのDatadog APM導入奮闘記
mtakeya4062
0
130
累計2500万着電を支える大規模 電話自動応答サービスのアーキテクチャ / Architecture of a Large-Scale Automated Phone Response Service Supporting 25 Million Cumulative Calls
ymachida
8
4.3k
クラウドネイティブなNewSQLで実現するミッションクリティカルなアプリケーションの運用
yuyu_hf
PRO
1
160
Hyperledger Fabric(再)入門
gakumura
3
6.7k
Kubernetesを知る
logica0419
17
4.4k
GeminiとUnityで実現するインタラクティブアート
hokkey621
0
330
LLMを「速く」「安く」 動かすには / CloudNative Days Winter 2024
pfn
PRO
5
1.2k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
It's Worth the Effort
3n
183
27k
How to Ace a Technical Interview
jacobian
276
23k
How to Think Like a Performance Engineer
csswizardry
20
1.2k
Designing Experiences People Love
moore
138
23k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
A designer walks into a library…
pauljervisheath
204
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
BBQ
matthewcrist
85
9.3k
Bash Introduction
62gerente
608
210k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
27
2.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
760
Transcript
DMM Meetup #39 開発のアジリティ向上のためのシステムリプレイス ~DMM GAMESの事例~ 合同会社EXNOA 松下 健太郎
松下 健太郎 所属: ブラウザプラットフォーム部実行リプレイスチーム 役割: チームリーダー 略歴: DMM.com (2016年新卒) ->
EXNOA (2019/07~) X: @_kentaro_m 石川県金沢市在住 2020年夏よりブラウザゲームプラットフォームのリプレイスプロジェクトに従事。
合同会社EXNOAについて DMM GAMESを運営 サービス開始から12年 会員数は約3400万人 オンラインゲームの配信数は約240本 5つの事業を展開 プラットフォーム事業 他社タイトルを中心に多種多様なゲームを配信する パブリッシング事業
ゲームデベロッパーと協力して新たなゲームの企画開発・配信を行う その他、コンテンツ事業・海外事業・投資事業
プラットフォーム事業について 様々なデバイスでゲームを遊べるプラットフォームを運営 ブラウザゲーム ← 本発表で触れる範囲 艦隊これくしょん-艦これ-、刀剣乱舞ONLINE PCソフトウェア (DMM GAME PLAYER)
Android端末 (DMM GAMESストア)
今日話すこと 開発のアジリティ向上のために取り組んだシステムリプレイスの事例に ついて紹介します
プロダクト開発組織の課題 開発のアジリティが低いため、 エンドユーザーへの価値提供スピードが遅い アジリティ = 素早くかつ効率的に状況の変化に対応していく能力
レガシーシステムがアジリティを低下させていた 変更時の影響範囲が不明瞭 リリース前の十分な検証が必要 システムと組織構造の不一致 開発者の認知負荷が高い 複数チームの開発コンフリクトが発生 ナレッジの共有が不十分 属人化が進む DB モノリシック
X モノリシック Y モノリシック Z
開発のアジリティ低下の解決策 システムリプレイスを実施 「技術戦略」と「運用設計」の両軸から課題解決を目指している
プラットフォームリプレイスでアジリティ向上を狙う リプレイス対象は「エンドユーザー向けに提供している機能」 エンドユーザーへの価値提供を迅速に行える状態を目指す 「複数のモノリス」から「マイクロサービス」へ 変更時の影響範囲を小さくし、開発者の認知負荷を低減 リプレイスを専任チームで進行 「機能追加・強化」>「リプレイス」の状況の改善
エンドユーザー向け機能を順次リプレイス (2020~)
リプレイスシステムの技術戦略 開発のアジリティ向上を実現する仕組みを整備している マイクロサービス デザインシステム 共通インフラ基盤
マイクロサービス コンセプトは「UIとビジネスロジックの分離」 バックエンド フロントエンド バックエンド 1 バックエンド 2 バックエンド 3
バックエンド 4 フロントエンド A フロントエンド B フロントエンド C BFF
マイクロサービス コンセプトは「UIとビジネスロジックの分離」 フロントエンドは機能レベルでアプリケーションを分割 バックエンドはドメインモデリングでマイクロサービスを分割 BFFがフロントエンドとバックエンドの間を取り持つ フロントエンドとバックエンドはそれぞれの責務に注力できる 変更時の影響範囲を小さくして、独立したデプロイを実現 開発者の認知負荷の低減 開発のリードタイムを短縮 デプロイのリスクを低減
BFFの解説 (ブログ記事) DMM GAMESのプラットフォームリプレイスを支えるBFFの裏側
Goの利用事例 (登壇) 大規模プラットフォームにおけるGoの利用例 DMM.go#4
デザインシステム UIスタイルの統一管理とUIの振る舞い (実装) の標準化を目的に誕生
デザインシステム UIスタイルの統一管理とUIの振る舞い (実装) の標準化を目的に誕生 デザイントークンやUIコンポーネント、アイコンが定義されている デザインデータはFigmaで提供、UIコンポーネントはReactで実装 デザイナー・開発者の生産性向上に寄与している デザイナーと開発者の共通言語の確立 UIスタイルの統一管理の実現 UIコンポーネント利用による開発工数削減
共通インフラ基盤 リプレイスシステムを実行するための共通インフラ基盤を整備 コンテナ実行環境としてKubernetesを採用 開発チームとインフラチームの責務が確立 インフラチームがKubernetesクラスター運用を担当 開発チームはアプリケーション実行に責任をもつ k8sマニフェストを作成し、ArgoCDでデプロイ Datadogでログやメトリクスの確認
リプレイスシステムの技術戦略 開発のアジリティ向上を実現する仕組みを整備している マイクロサービス デザインシステム 共通インフラ基盤
リプレイスの運用設計 エンドユーザーへの価値提供に注力するための取り組みを行っている エンハンスチームの開発者がリプレイスシステムを変更して実現 ※ エンハンスチーム = エンドユーザーへの価値提供を責務とするチーム 責務ベースのチームへの移行 プラットフォームコア機能・インフラの一元管理 開発・運用スキルの獲得支援
責務ベースのチームへの移行 マイクロサービス移行により管轄システムの割り当てが可能となった (Before/After) 組織 アーキテクチャ エンハンスチームA エンハンスチームB エンハンスチームC システムX システムY
システムZ 組織 アーキテクチャ エンハンスチームA エンハンスチームB エンハンスチームC システムX システムY システムZ
責務ベースのチームへの移行 マイクロサービス移行により管轄システムの割り当てが可能となった 責務ベースのエンハンスチームを組成した 開発者の認知負荷を低減 改修範囲が明確な案件はスムーズに対応されるようになった チーム横断案件への対処が課題 事業を推進するために一定頻度で発生することが分かってきた
プラットフォームコア機能・インフラの一元管理 特定の機能によらずに利用されるシステムやインフラの一元管理が進行 基盤開発組織 プロダクト開発組織 リプレイス 価値提供 エンハンス開発 共通インフラ基盤提供 会員システム提供 決済システム提供
インフラチーム 会員チーム 決済チーム エンハンスチーム リプレイスチーム エンドユーザー
プラットフォームコア機能・インフラの一元管理 特定の機能によらずに利用されるシステムやインフラの一元管理が進行 プロダクト共通機能 (会員や決済等のシステム) 従来は各モノリスに点在 -> マイクロサービス移行で責務分離を実現 専門チームが開発・運用を担う 共通インフラ基盤 インフラチームが運用を担う
エンハンスチームはエンドユーザーに価値を提供するための作業に注力可能
開発・運用スキルの獲得支援 機能開発や保守をエンハンスチームが独力で行える状態を目指す システム内部品質の担保とエンドユーザーへの素早い価値提供 リプレイスシステムのナレッジ移転が必要 リプレイスチームからエンハンスチームへ プロダクト開発組織 リプレイス コードレビュー 設計相談 エンハンス開発
価値提供 エンハンスチーム リプレイスチーム エンドユーザー
開発・運用スキルの獲得支援 リプレイスチームとエンハンスチームが協力して様々な取り組みを行っている システム設計相談 エンハンス案件のシステム設計の相談に対応 コードレビュー エンハンス案件のコードレビューに参加 ドキュメント リプレイスシステムのナレッジ共有用のドキュメントスペースを整備 情報共有 システム課題について継続的な相談や情報共有を実施
これまでのリプレイスプロジェクトで 様々な取り組みを行ってきました
近年では少しずつ成果が見えてきました
デプロイ頻度やサイクルタイムも良好 ※ 私が所属しているリプレイスチームのスコア (5人のエンジニアで開発を進行)
開発生産性スコアが社内トップクラス ※ 私が所属しているリプレイスチームのスコア
DMM.comがFindy Team+ Award 2023 を受賞 EXNOAのプロダクト開発組織も貢献しています!
まとめ 開発アジリティの向上のためにリプレイスを実施 「技術戦略」と「運用設計」の両軸から課題解決を目指している
今後 プロダクト開発組織の開発生産性可視化 開発プロセスのボトルネックの検出 機能追加・保守のリソース配分の意思決定活用 リプレイスシステムの組織への浸透 エンハンスチームの開発生産性向上への貢献
宣伝 ブラウザプラットフォームを一緒に盛り上げてくれる方を募集中 エンジニア (新卒/中途)、プロジェクトマネージャー (中途) 詳細は上記のQRコードから採用ページをご参照ください。 システムリプレイスにご興味がある方がいれば、懇親会でお話ししましょう。