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
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
950
GatsbyJSで作った個人ブログの構成を色々見直してみた / Improve my personal blog made with GatsbyJS
kentarom
1
360
Webサイトパフォーマンスを継続的に計測したい!!! / I want to continuously measure my website performance!!!
kentarom
2
510
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
790
OGP画像を生成するNode.jsのライブラリを作ってみた / Create a Node.js module for generating Open Graph image
kentarom
1
7.3k
チームをよしなにする立場を経験して学んだこと / Things I have learned in leading the team
kentarom
0
710
AWSの既存サービスを活用して、 障害検知・復旧を迅速化するカラクリ / JAWS-UG Kanazawa x OpsJAWS
kentarom
2
4.7k
DMM.comの認証基盤を支えるエラー通知の仕組み / AWS Dev Day Tokyo 2018 Lightning Talk
kentarom
2
13k
Other Decks in Technology
See All in Technology
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
460
podman_update_2024-12
orimanabu
1
260
Wantedly での Datadog 活用事例
bgpat
1
400
5分でわかるDuckDB
chanyou0311
10
3.2k
Kubeshark で Kubernetes の Traffic を眺めてみよう/Let's Look at k8s Traffic with Kubeshark
kota2and3kan
3
370
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
OpenShift Virtualizationのネットワーク構成を真剣に考えてみた/OpenShift Virtualization's Network Configuration
tnk4on
0
130
C++26 エラー性動作
faithandbrave
2
650
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
160
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
190
Featured
See All Featured
The Language of Interfaces
destraynor
154
24k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Code Reviewing Like a Champion
maltzj
520
39k
Fireside Chat
paigeccino
34
3.1k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
440
Why Our Code Smells
bkeepers
PRO
335
57k
Rails Girls Zürich Keynote
gr2m
94
13k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
The Cost Of JavaScript in 2023
addyosmani
45
7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Git: the NoSQL Database
bkeepers
PRO
427
64k
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コードから採用ページをご参照ください。 システムリプレイスにご興味がある方がいれば、懇親会でお話ししましょう。