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
840
0
Share
開発のアジリティ向上のためのシステムリプレイス ~DMM GAMESの事例~
「DMM meetup #39 ~開発生産性を熱く語る会~」 の登壇資料です
https://dmm.connpass.com/event/301567/
Kentaro Matsushita
December 13, 2023
More Decks by Kentaro Matsushita
See All by Kentaro Matsushita
Denoで簡単なCLIツールを作ってみる / Try to make a simple CLI tool with Deno
kentarom
0
1.1k
GatsbyJSで作った個人ブログの構成を色々見直してみた / Improve my personal blog made with GatsbyJS
kentarom
1
460
Webサイトパフォーマンスを継続的に計測したい!!! / I want to continuously measure my website performance!!!
kentarom
2
610
Actions ToolkitではじめるGitHub Action開発 / Getting started creating a GitHub Action with Actions Toolkit
kentarom
2
2k
GitHub Gistを使って、アクティビティを可視化しよう / Let's try visualizing your activity using the GitHub Gist
kentarom
1
900
OGP画像を生成するNode.jsのライブラリを作ってみた / Create a Node.js module for generating Open Graph image
kentarom
1
7.6k
チームをよしなにする立場を経験して学んだこと / Things I have learned in leading the team
kentarom
0
830
AWSの既存サービスを活用して、 障害検知・復旧を迅速化するカラクリ / JAWS-UG Kanazawa x OpsJAWS
kentarom
2
4.8k
DMM.comの認証基盤を支えるエラー通知の仕組み / AWS Dev Day Tokyo 2018 Lightning Talk
kentarom
2
14k
Other Decks in Technology
See All in Technology
ハーネスエンジニアリングの概要と設計思想
sergicalsix
9
5.1k
AWS Agent Registry の基礎・概要を理解する/aws-agent-registry-intro
ren8k
3
390
Hacobu Tech Deck
hacobu
PRO
0
120
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
240
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
4
1.8k
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
140
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
170
Revisiting [CLS] and Patch Token Interaction in Vision Transformers
yu4u
0
380
Route 53 Global Resolver で高額課金発生!
otanikohei2023
0
110
ARIA Notifyについて
ryokatsuse
1
120
AI와 협업하는 조직으로의 여정
arawn
0
490
AIコーディング時代における、ソフトウェアサプライチェーン攻撃に対する防衛術(簡易版)
soysoysoyb
0
110
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.4k
WCS-LA-2024
lcolladotor
0
540
The Invisible Side of Design
smashingmag
303
52k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
150
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
170
Odyssey Design
rkendrick25
PRO
2
580
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
490
Documentation Writing (for coders)
carmenintech
77
5.3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
680
YesSQL, Process and Tooling at Scale
rocio
174
15k
The agentic SEO stack - context over prompts
schlessera
0
750
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
260
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コードから採用ページをご参照ください。 システムリプレイスにご興味がある方がいれば、懇親会でお話ししましょう。