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
開発のアジリティ向上のためのシステムリプレイス ~DMM GAMESの事例~
Search
Kentaro Matsushita
December 13, 2023
Technology
0
760
開発のアジリティ向上のためのシステムリプレイス ~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
1k
GatsbyJSで作った個人ブログの構成を色々見直してみた / Improve my personal blog made with GatsbyJS
kentarom
1
390
Webサイトパフォーマンスを継続的に計測したい!!! / I want to continuously measure my website performance!!!
kentarom
2
540
Actions ToolkitではじめるGitHub Action開発 / Getting started creating a GitHub Action with Actions Toolkit
kentarom
2
1.9k
GitHub Gistを使って、アクティビティを可視化しよう / Let's try visualizing your activity using the GitHub Gist
kentarom
1
820
OGP画像を生成するNode.jsのライブラリを作ってみた / Create a Node.js module for generating Open Graph image
kentarom
1
7.4k
チームをよしなにする立場を経験して学んだこと / Things I have learned in leading the team
kentarom
0
750
AWSの既存サービスを活用して、 障害検知・復旧を迅速化するカラクリ / JAWS-UG Kanazawa x OpsJAWS
kentarom
2
4.7k
DMM.comの認証基盤を支えるエラー通知の仕組み / AWS Dev Day Tokyo 2018 Lightning Talk
kentarom
2
14k
Other Decks in Technology
See All in Technology
「それはhowなんよ〜」のガイドライン #orestudy
77web
9
2.4k
食べログが挑む!飲食店ネット予約システムで自動テスト無双して手動テストゼロを実現する戦略
hagevvashi
1
160
【日本Zabbixユーザー会】LLDを理解するときの勘所 〜LLDのある世界を楽しもう!〜
yoshitake945
0
120
AWSのマルチアカウント管理 ベストプラクティス最新版 2025 / Multi-Account management on AWS best practice 2025
ohmura
4
200
MCP Documentation Server @AI Coding Meetup #1
yyoshiki41
2
2.6k
自分の軸足を見つけろ
tsuemura
2
590
Beyond {shiny}: The Future of Mobile Apps with R
colinfay
1
370
やさしいMCP入門
minorun365
PRO
147
95k
バックオフィス向け toB SaaS バクラクにおけるレコメンド技術活用 / recommender-systems-in-layerx-bakuraku
yuya4
2
280
7,000名規模の 人材サービス企業における プロダクト戦略・戦術と課題 / Product strategy, tactics and challenges for a 7,000-employee staffing company
techtekt
0
260
LangChainとLangGiraphによるRAG・AIエージェント実践入門「10章 要件定義書生成Alエージェントの開発」輪読会スライド
takaakiinada
0
130
AI Agentを「期待通り」に動かすために:設計アプローチの模索と現在地
kworkdev
PRO
2
390
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
462
33k
A designer walks into a library…
pauljervisheath
205
24k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
It's Worth the Effort
3n
184
28k
Documentation Writing (for coders)
carmenintech
69
4.7k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Speed Design
sergeychernyshev
29
880
Making Projects Easy
brettharned
116
6.1k
Designing for humans not robots
tammielis
252
25k
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コードから採用ページをご参照ください。 システムリプレイスにご興味がある方がいれば、懇親会でお話ししましょう。