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
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
2024年にチャレンジしたことを振り返るぞ
mitchan
0
140
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
290
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
540
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
160
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
490
KubeCon NA 2024 Recap: How to Move from Ingress to Gateway API with Minimal Hassle
ysakotch
0
210
生成AIのガバナンスの全体像と現実解
fnifni
1
190
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.3k
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
270
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
230
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
170
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Become a Pro
speakerdeck
PRO
26
5k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
What's in a price? How to price your products and services
michaelherold
243
12k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
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コードから採用ページをご参照ください。 システムリプレイスにご興味がある方がいれば、懇親会でお話ししましょう。