SlideShare uma empresa Scribd logo
1 de 55
DMMのゲームプラットフォームで利用
している技術やシステム構成、レガ
シーシステムが抱える課題、解決のた
めのシステムリプレイスの進め方
DMM.com Labo オンライゲーム事業部プラットフォーム開発本部 久保田亙
2017/02/07 dots
• 名前:久保田亙
• 会社:DMM.com Labo
• 2015/08 入社
• プログラマー
• 好きなデザインパターン:ゴッドオブジェクト
• 口癖:「テストがないと死ぬ病気にかかっています。」
Copyright © since 1998 DMM All Rights Reserved. 2
自己紹介
Copyright © since 1998 DMM All Rights Reserved. 3
本日みなさんへお伝えする内容
DMM GAMES プラットフォームとは?
DMM GAMES プラットフォームの歴史(変遷)
DMM GAMES プラットフォームのシステム構成
DMM GAMES プラットフォームのシステムリプレイス
Copyright © since 1998 DMM All Rights Reserved. 4
DMM.comは1999年から続く老舗サービ
スサイトです。時代のニーズに合わせた多
彩なコンテンツを、18年間培った独自プ
ラットフォームで安定的に提供しています。
About DMM.com
40以上の幅広いサービスを展開
サービスについて
Copyright © since 1998 DMM All Rights Reserved. 5
DMM.comは1999年から続く老舗サービ
スサイトです。時代のニーズに合わせた多
彩なコンテンツを、18年間培った独自プ
ラットフォームで安定的に提供しています。
About DMM.com
40以上の幅広いサービスを展開
サービスについて
DMM
GAMES
DMM GAMESとは
PCをメインにスマートフォン、フィーチャーフォンの3デバイスにまたがって
みんなで遊べるオンライゲームを提供しています。
Copyright © since 1998 DMM All Rights Reserved. 6
世界中の大人に興奮を!
人気タイトルあります! 様々なデバイス イベント随時開催
DMM GAMES プラットフォームとは
DMM GAMESで様々なゲームを提供するための土台
Copyright © since 1998 DMM All Rights Reserved. 7
全てのゲームを
遊びやすいように、たのしめる
ようにする機能群
->
トップページ、ゲーム一覧など
デバイスの違い
同一アカウントで複数デバイス
のゲームの仕組み
裏では
データ解析、ログ基盤、バッチ
処理
ゲームするための共通機能を提供(プロフィール管理、ポイント、課金など)
海外向けプラットフォームやゲームストア、ゲームプレイヤーも
Copyright © since 1998 DMM All Rights Reserved. 8
DMM GAMESプラットフォームを支える技術
さまざまなツール類を利用
Copyright © since 1998 DMM All Rights Reserved. 9
最初のシステム構成は?(黎明期=5年前)
資料がみつからず伝承を元に表現
OS = Linux
Web = Apache
Application = PHP
DB = MySQL
というオーソドックスなLAMP構成
だったらしい・・・。
Copyright © since 1998 DMM All Rights Reserved. 10
その頃のシステム構成は?(黎明期=5年前)
DMM.comのひとつのコンテンツとしてスタート
もともとDMMの持っていた機能を最初から利用できて便利
ゲーム用のサーバー構成も最小限
Copyright © since 1998 DMM All Rights Reserved. 11
DMM GAMES 会員推移(拡大期)
52
145
360
460
940
1700
0
200
400
600
800
1000
1200
1400
1600
1800
2011 2012 2013 2014 2015 2016/7
会員数推移(単位/万人)
※DMM.comのではなくDMM GAMESの会員数
ヒットタイトルに恵まれ激増
プラットフォームも対応を迫られる
2017年1末時点では1800万人超
Copyright © since 1998 DMM All Rights Reserved. 12
DMM GAMESのサービス増加(拡大期)
多彩なゲームを支えるための機能をどんどん追加
アプリゲーム
ゲームプレイヤー
コミュニティ機能、ミッション機能…その他多数
Copyright © since 1998 DMM All Rights Reserved. 13
会員、サービスの増加に対応(サーバー)
サーバー台数を倍々に増やしていく!
Copyright © since 1998 DMM All Rights Reserved. 14
会員、サービスの増加に対応(システム)
負荷対策
解析対象データ量の増加
キャッシュ導入・増設
データの持ち方を一部RDBからNoSQLへ
Hadoop導入
そして現在
Copyright © since 1998 DMM All Rights Reserved. 15
Copyright © since 1998 DMM All Rights Reserved. 16
現行システム構成 (構成図)
無理やり簡略化した図
でも、実際は・・・
サーバー台数合計約900台
Web/App 500台
DB 150台
memcached 30台
redis 50台
他いろいろ 170台
Copyright © since 1998 DMM All Rights Reserved. 17
DMM.comは1999年から続く老舗サービ
スサイトです。時代のニーズに合わせた多
彩なコンテンツを、18年間培った独自プ
ラットフォームで安定的に提供していま
す。
About DMM.com
40以上の幅広いサービスを展開
サービスについて
DMM
GAMES
• 一日を通して負荷がある
この例だと一番低い時で1600アクセス/秒
• イベント時に負荷が跳ね上がる
• ピーク時で10万アクセス/秒
Copyright © since 1998 DMM All Rights Reserved. 18
現行システム構成(負荷の特徴)
※↑このグラフはアクセス数のグラフではありません
Copyright © since 1998 DMM All Rights Reserved. 19
サービス拡大から現在までの失敗(その1)
ゲームリリース時の負荷に耐えられず、急いでCDN投入
とあるゲームのサービス開始時にそのゲーム用に
準備していたダウンロード用のキャッシュサー
バーとの通信量で40Gbpsが埋まる!
Copyright © since 1998 DMM All Rights Reserved. 20
サービス拡大から現在までの失敗(その1)
ゲームリリース時の負荷に耐えられず、急いでCDN投入
急いでそのゲームだけCDNに切り替えてしのいだ
結果としてはCDN側で125Gbpsとなった!
Copyright © since 1998 DMM All Rights Reserved. 21
サービス拡大から現在までの失敗(その2)
応答性能の限界・・・
DB設計の問題等あり、MySQLへクエリを発行していた
のでは遅すぎる状況
よし、NoSQLだ!
Copyright © since 1998 DMM All Rights Reserved. 22
サービス拡大から現在までの失敗(その2)
応答性能の限界・・・
データ構造や保守性、可用性などを考慮し
Redisを選択
さらにRedis Cluster組めばスケール
アウトもしやすいぞ!
Copyright © since 1998 DMM All Rights Reserved. 23
サービス拡大から現在までの失敗(その2)
応答性能の限界・・・
PHPが古すぎてRedisのドライバー(phpredis)
がRedis Clusterに対応していない…
twemproxyってのを使えばRedis
をCluster構成でつかえるっぽい!
Copyright © since 1998 DMM All Rights Reserved. 24
サービス拡大から現在までの失敗(その2)
応答性能の限界・・・
本番でtwemproxyが詰まる
twemproxyのサーバーをむっちゃ
増やしてしのぐ
負荷試験が足りてなかった・・・
Copyright © since 1998 DMM All Rights Reserved. 25
これまでの苦労・失敗を振り返ってみると
お気づきでしょうか?
• 色々、試行錯誤し創意工夫はしたつもりだが…
• 直近の問題に対応することを優先してきた
• 部署として意識が機能拡充に寄っていた
• 結果的にはサーバー台数を増やして物理で殴るみたい
な方向が多い…
Copyright © since 1998 DMM All Rights Reserved. 26
現行システム構成(課題-その1)
システム構成の根本はそのままにスケールアップ・スケールアウトしてきた
大規模に適したアーキテクチャか?
人気タイトルの影響を他タイトルも受けてしまう
Copyright © since 1998 DMM All Rights Reserved. 27
現行システム構成(課題-その2)
DMM本体との密結合のデメリットが顕著になってきた
DMM本体と影響を与え合ってしまう
変更時の影響範囲が見えづらい
Copyright © since 1998 DMM All Rights Reserved. 28
現行システム構成(課題-その3)
技術的負債がたまりつつある
たぶん使ってないんだよなーっという処理(でも怖くて消せない)
依存関係を整理して分割したい巨大処理(でも怖くて出来ない)
DMM GAMES
プラットフォーム
リプレイス開始!
Copyright © since 1998 DMM All Rights Reserved. 29
Copyright © since 1998 DMM All Rights Reserved. 30
ところでリプレイスするって勇気必要ですよね?
壊して作り直しはソフトウェアエンジニアの悪弊とも言われる
既に、動いているものをリスクを取って作り直す判断に何故至ったか?
Copyright © since 1998 DMM All Rights Reserved. 31
なぜリプレイスするのか?
上記から課題解決の手段として移行(リプレイス)が最適だった
密結合な状態から脱しないと、新しいチャレンジがしづらい状況
現行システムに手を加えるコストとリプレイスのコストの比較検討の結果
既存の課題の原因を分析していくと・・・
DMM.com本体との密結合な状態が根本の問題
Copyright © since 1998 DMM All Rights Reserved. 32
リプレイスに踏み込めた背景
やるべき事をやり始めるまでに時間をかけすぎない文化
とりあえずやってみるが(ある程度)許容される文化
プレゼン、稟議、承認などの手続きの繰り返しの間に機会を逃す方がリスク
調査・検証の間にプロダクトも変わっていく
時間をかけすぎるより、やってみて知見を得て改善する方を選択!
Copyright © since 1998 DMM All Rights Reserved. 33
リプレイス範囲は?
Front
Application
Backend/Data
Copyright © since 1998 DMM All Rights Reserved. 34
リプレイス方針
システムを止めずに移行する
マイクロサービス化
ゲーム・ユーザーに影響を与えない!
現構成の反省を踏まえ疎結合な形へ
Copyright © since 1998 DMM All Rights Reserved. 35
システムを止めずにリプレイスする工夫
機能単位でサブドメイン化
画面単位、ゲームタイトル単位で少しづつ移行
• トップ
• コミュ
ニティ
機能
• 実行ページ
• ゲーム一覧
画面
• 艦これ
• 刀剣
ゲーム
サーバー構成もサブドメイン単位としデプロイ範囲を限定
Copyright © since 1998 DMM All Rights Reserved. 36
リプレイスに際してのアーキテクチャ等
DDDの思想を取り入れたアプリケーション設計
各種環境の最新化
Agile / Scrumの積極的な導入
エンジニアがそれぞれで開発し設計思想がバラバラだった反省を踏まえ、筋の通った
設計思想で統一を図る必要があった
セキュリティ面や性能等様々理由でもともと最新化したかった
すでに部分的に導入しているチームあったがより大々的に
機能単位でリプレイスして早いサイクルでものを作るという進め方に合っていた
Copyright © since 1998 DMM All Rights Reserved. 37
リプレイスに際してのアーキテクチャ等
キャッシュミドルウェアの変更(memcached -> redis)
ユニットテスト
デプロイシステム刷新
プルリク、レビュー
スケールアウトや可用性、既に導入済みの運用面などから総合的に判断
変更時の影響範囲確認や変更スピード、モダンな開発スタイルへ
「ぜんぜんわからない 俺たちは雰囲気でレビューをやっている」
独自デプロイシステムからJenkinsへ(融通がきかなかった)
Copyright © since 1998 DMM All Rights Reserved. 38
DDDを取り入れた設計
我々に合った形でとりいれてみた
• ドメインのあり方…
Copyright © since 1998 DMM All Rights Reserved. 39
DDDを取り入れた設計
外部システムとの差異吸収
• データの持ち方
• エラーハンドリング
Copyright © since 1998 DMM All Rights Reserved. 40
DDDを取り入れた設計
データアクセス部分
• 今後のバックエンドリプレイスを考慮
Copyright © since 1998 DMM All Rights Reserved. 41
リプレイス後(アプリケーション構成)
Copyright © since 1998 DMM All Rights Reserved. 42
システム構成(リプレイス前)
Copyright © since 1998 DMM All Rights Reserved. 43
システム構成(リプレイス中=現在)
Copyright © since 1998 DMM All Rights Reserved. 44
システム構成(リプレイス後)
Copyright © since 1998 DMM All Rights Reserved. 45
リプレイス開発で巻き起こる宗教戦争
ORマッパー派、反ORマッパー派
Joinの数はどこまでOKか?
Query Builder というちょっとORMなもので落ち着く(必要に応じて生SQLもOK)
理由:DBを変えずに現行クエリを移植しているがORMに合わないクエリも多いため
4テーブル以上は要相談という形へ
理由:master,master,関連テーブルの形が多いため
Copyright © since 1998 DMM All Rights Reserved. 46
リプレイス開発で巻き起こる宗教戦争
IDE派、エディタ派
大クラス主義、小クラス主義
お好みで(Vim, Atom, Eclipse, NetBeans, PhpStormが乱立、戦国時代へ)
理由:何で作ろうと本人が生産性高いやり方でやればOKということに
基本的には小クラス主義で
理由:テスト、レビューを考慮するとスコープが広い形では回らないので
Copyright © since 1998 DMM All Rights Reserved. 47
リプレイスの苦労話
既存仕様の確認が大変
テストが大変
コードが仕様書な状態、既存コードを読み解くのは苦痛
1画面と思って軽く考えていたら思わぬ機能がモリモリ
密結合だった機能をテストできる形へ移植する作業
そもそも、テストが無かったのでどうテストする?という意識合わせが大変
Copyright © since 1998 DMM All Rights Reserved. 48
リプレイスの苦労話もっと色々
新、旧両方の環境へ機能追加が必要
開発環境の構築が大変
開発中の機能追加は新旧両方にしなければならない
新旧の連動があるため、両方の環境を整えた
Copyright © since 1998 DMM All Rights Reserved. 49
見えてきたメリット
品質を担保する仕組みを新たに導入できた
仕様、システムの見える化が進んだ
ライブラリ等のバージョンアップが容易になった
新しいチャレンジがしやすくなった!
レビュー、テストというプロセスが定着
リプレイス時に否が応でも棚卸しが必要だったため
疎結合になったため
変更のコストや数々のしがらみから、かなり自由になった
Copyright © since 1998 DMM All Rights Reserved. 50
見えてきたメリット
品質を担保する仕組みを新たに導入できた
仕様、システムの見える化が進んだ
ライブラリ等のバージョンアップが容易になった
新しいチャレンジがしやすくなった!
レビュー、テストというプロセスが定着
リプレイス時に否が応でも棚卸しが必要だったため
疎結合になったため
変更のコストや数々のしがらみから、かなり自由になった
リプレイスはまだまだ進行中!
Copyright © since 1998 DMM All Rights Reserved. 51
リプレイスして良かったこと(個人的)
テストテストテストテスト
ユニットテストが無かった頃 ユニットテストが増えてきた
Copyright © since 1998 DMM All Rights Reserved. 52
本日お話できなかったこと
Laravelで組んでいての困った所やtipsなど
システムを構成する各ツールの細かい所(MySQL,Redis,Nginx, .etc)
続きは懇親会で!
PHPUnitでごりごりテスト書いてるけどうちではこうやってるよという話
Copyright © since 1998 DMM All Rights Reserved. 53
まとめ
「事業が拡大している時こそ先を見据えるべき」という
教訓をリプレイスという機会に生かして、新しい事にど
んどんチャレンジできると私はワクワクしています!
Copyright © since 1998 DMM All Rights Reserved. 54
余談
/:∪::─ニjjニ─ヾ ガクガクブルブル…
/:::li|.:( ○)三 (○)\
(:::||!.:∪::::: (__人__)):::: i| ____
)::::::::::::: |r┬-| li::::/ | |
/::::::::::::::: `ー ‘ ::::::ヽ | |
艦これイベント開始-メンテ明け時の我々の様子
このドキドキを共有してくれる仲間を募集してます!
ご清聴ありがとうございました。
M( _ _ )M

Mais conteúdo relacionado

Mais procurados

SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】DeNA
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue
 
AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介ssuser39314d
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】Unity Technologies Japan K.K.
 
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container ServiceAWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container ServiceAmazon Web Services Japan
 
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
IT エンジニアのための 流し読み Windows - Windows 共有 PC モードIT エンジニアのための 流し読み Windows - Windows 共有 PC モード
IT エンジニアのための 流し読み Windows - Windows 共有 PC モードTAKUYA OHTA
 
2023フライウィール会社紹介_導入事例集.pdf
2023フライウィール会社紹介_導入事例集.pdf2023フライウィール会社紹介_導入事例集.pdf
2023フライウィール会社紹介_導入事例集.pdfFLYWHEEL Inc.
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredisnasa9084
 
他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところSatoshi Takayanagi
 
フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!zaki4649
 
Unityを活用した3Dシミュレーション環境の構築
Unityを活用した3Dシミュレーション環境の構築Unityを活用した3Dシミュレーション環境の構築
Unityを活用した3Dシミュレーション環境の構築UnityTechnologiesJapan002
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方Takeshi Mikami
 
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2Tsunenori Oohara
 
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーション【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーションUnityTechnologiesJapan002
 
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2ndDDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2ndBIGLOBE Inc.
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料Hidetoshi Hirokawa
 
PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料Find Job Startup
 
創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」Find Job Startup
 

Mais procurados (20)

SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
iOSでMVVM入門
iOSでMVVM入門iOSでMVVM入門
iOSでMVVM入門
 
AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
 
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container ServiceAWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
 
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
IT エンジニアのための 流し読み Windows - Windows 共有 PC モードIT エンジニアのための 流し読み Windows - Windows 共有 PC モード
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
 
2023フライウィール会社紹介_導入事例集.pdf
2023フライウィール会社紹介_導入事例集.pdf2023フライウィール会社紹介_導入事例集.pdf
2023フライウィール会社紹介_導入事例集.pdf
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ
 
フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!
 
Unityを活用した3Dシミュレーション環境の構築
Unityを活用した3Dシミュレーション環境の構築Unityを活用した3Dシミュレーション環境の構築
Unityを活用した3Dシミュレーション環境の構築
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
 
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2
 
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーション【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
 
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2ndDDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料
 
PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料
 
創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」
 

Destaque

Aws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステムAws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステムKoteiIto
 
高速開発を支えるDMMプラットフォームの作り方 ~DMM.makeの場合~
高速開発を支えるDMMプラットフォームの作り方 ~DMM.makeの場合~高速開発を支えるDMMプラットフォームの作り方 ~DMM.makeの場合~
高速開発を支えるDMMプラットフォームの作り方 ~DMM.makeの場合~DMM.com
 
from_beginner_to_engineer
from_beginner_to_engineerfrom_beginner_to_engineer
from_beginner_to_engineerYuka Tokuyama
 
cybozu.com のデータバックアップとリストア、それを活用したリハーサル
cybozu.com のデータバックアップとリストア、それを活用したリハーサルcybozu.com のデータバックアップとリストア、それを活用したリハーサル
cybozu.com のデータバックアップとリストア、それを活用したリハーサルtoshi_pp
 
Dmmに入社してみた
Dmmに入社してみたDmmに入社してみた
Dmmに入社してみたDMM.com
 
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)さくらインターネット株式会社
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド崇介 藤井
 
DMM.comにおけるビッグデータ処理のためのSQL活用術
DMM.comにおけるビッグデータ処理のためのSQL活用術DMM.comにおけるビッグデータ処理のためのSQL活用術
DMM.comにおけるビッグデータ処理のためのSQL活用術DMM.com
 
July Tech Festa 2014 大規模エンターテイメントサイトを支える技術
July Tech Festa 2014 大規模エンターテイメントサイトを支える技術July Tech Festa 2014 大規模エンターテイメントサイトを支える技術
July Tech Festa 2014 大規模エンターテイメントサイトを支える技術DMM.comラボ ネットワークチーム
 
サイトパフォーマンスからUXを追求する
サイトパフォーマンスからUXを追求するサイトパフォーマンスからUXを追求する
サイトパフォーマンスからUXを追求するweddingpark
 
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study nightDMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night石橋 啓太
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことYuki Okada
 
Visual Studio Code 入門
Visual Studio Code 入門Visual Studio Code 入門
Visual Studio Code 入門Saki Homma
 
確実に良くするUI/UX設計
確実に良くするUI/UX設計確実に良くするUI/UX設計
確実に良くするUI/UX設計Takayuki Fukatsu
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する増田 亨
 
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumiItsuki Kuroda
 
Google Developer Day 2010 Japan: 「App Engine 開発者コミュニティ「appengine ja night」とフレ...
Google Developer Day 2010 Japan: 「App Engine 開発者コミュニティ「appengine ja night」とフレ...Google Developer Day 2010 Japan: 「App Engine 開発者コミュニティ「appengine ja night」とフレ...
Google Developer Day 2010 Japan: 「App Engine 開発者コミュニティ「appengine ja night」とフレ...Google Developer Relations Team
 

Destaque (20)

Aws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステムAws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
 
高速開発を支えるDMMプラットフォームの作り方 ~DMM.makeの場合~
高速開発を支えるDMMプラットフォームの作り方 ~DMM.makeの場合~高速開発を支えるDMMプラットフォームの作り方 ~DMM.makeの場合~
高速開発を支えるDMMプラットフォームの作り方 ~DMM.makeの場合~
 
from_beginner_to_engineer
from_beginner_to_engineerfrom_beginner_to_engineer
from_beginner_to_engineer
 
cybozu.com のデータバックアップとリストア、それを活用したリハーサル
cybozu.com のデータバックアップとリストア、それを活用したリハーサルcybozu.com のデータバックアップとリストア、それを活用したリハーサル
cybozu.com のデータバックアップとリストア、それを活用したリハーサル
 
Dmmに入社してみた
Dmmに入社してみたDmmに入社してみた
Dmmに入社してみた
 
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
DMM.comにおけるビッグデータ処理のためのSQL活用術
DMM.comにおけるビッグデータ処理のためのSQL活用術DMM.comにおけるビッグデータ処理のためのSQL活用術
DMM.comにおけるビッグデータ処理のためのSQL活用術
 
DMMの闇に触れた話
DMMの闇に触れた話DMMの闇に触れた話
DMMの闇に触れた話
 
July Tech Festa 2014 大規模エンターテイメントサイトを支える技術
July Tech Festa 2014 大規模エンターテイメントサイトを支える技術July Tech Festa 2014 大規模エンターテイメントサイトを支える技術
July Tech Festa 2014 大規模エンターテイメントサイトを支える技術
 
CTOが語るUI/UX
CTOが語るUI/UXCTOが語るUI/UX
CTOが語るUI/UX
 
サイトパフォーマンスからUXを追求する
サイトパフォーマンスからUXを追求するサイトパフォーマンスからUXを追求する
サイトパフォーマンスからUXを追求する
 
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study nightDMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なこと
 
Visual Studio Code 入門
Visual Studio Code 入門Visual Studio Code 入門
Visual Studio Code 入門
 
確実に良くするUI/UX設計
確実に良くするUI/UX設計確実に良くするUI/UX設計
確実に良くするUI/UX設計
 
VIOPS10: DMM.comのインフラのこれから
VIOPS10: DMM.comのインフラのこれからVIOPS10: DMM.comのインフラのこれから
VIOPS10: DMM.comのインフラのこれから
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
 
Google Developer Day 2010 Japan: 「App Engine 開発者コミュニティ「appengine ja night」とフレ...
Google Developer Day 2010 Japan: 「App Engine 開発者コミュニティ「appengine ja night」とフレ...Google Developer Day 2010 Japan: 「App Engine 開発者コミュニティ「appengine ja night」とフレ...
Google Developer Day 2010 Japan: 「App Engine 開発者コミュニティ「appengine ja night」とフレ...
 

Semelhante a DMMのゲームプラットフォームで利用している技術やシステム構成、レガシーシステムが抱える課題、解決のためのシステムリプレイスの進め方

Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKAAmazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKAGame Tools & Middleware Forum
 
DMM.comラボでの日本語全文検索の利用事例紹介
DMM.comラボでの日本語全文検索の利用事例紹介DMM.comラボでの日本語全文検索の利用事例紹介
DMM.comラボでの日本語全文検索の利用事例紹介Hiyou Shinnonome
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”Drecom Co., Ltd.
 
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプラインRYUTARO OSAFUNE
 
デジタルコンテンツの安定配信とコスト削減の両立を実現したシステム刷新
デジタルコンテンツの安定配信とコスト削減の両立を実現したシステム刷新デジタルコンテンツの安定配信とコスト削減の両立を実現したシステム刷新
デジタルコンテンツの安定配信とコスト削減の両立を実現したシステム刷新Nobuhiko Watanabe
 
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 TOKYO
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 TOKYOAmazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 TOKYO
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 TOKYOGame Tools & Middleware Forum
 
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battledrecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battleMitsuki Kenichi
 
Windows 10 Creators Update
Windows 10 Creators UpdateWindows 10 Creators Update
Windows 10 Creators UpdateTomokazu Kizawa
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Web サービス インフラの近未来
Web サービス インフラの近未来Web サービス インフラの近未来
Web サービス インフラの近未来Syuichi Murashima
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議Shinra_Technologies
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜Drecom Co., Ltd.
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...Shoei Takamaru
 
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップクリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップShinra_Technologies
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphonedena_study
 

Semelhante a DMMのゲームプラットフォームで利用している技術やシステム構成、レガシーシステムが抱える課題、解決のためのシステムリプレイスの進め方 (20)

Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKAAmazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 OSAKA
 
DMM.comラボでの日本語全文検索の利用事例紹介
DMM.comラボでの日本語全文検索の利用事例紹介DMM.comラボでの日本語全文検索の利用事例紹介
DMM.comラボでの日本語全文検索の利用事例紹介
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
 
デジタルコンテンツの安定配信とコスト削減の両立を実現したシステム刷新
デジタルコンテンツの安定配信とコスト削減の両立を実現したシステム刷新デジタルコンテンツの安定配信とコスト削減の両立を実現したシステム刷新
デジタルコンテンツの安定配信とコスト削減の両立を実現したシステム刷新
 
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 TOKYO
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 TOKYOAmazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 TOKYO
Amazon Game Tech アマゾンゲームテクノロジー - Amazon Game Tech - GTMF 2018 TOKYO
 
Long hit strategy-gamingtechnight-2
Long hit strategy-gamingtechnight-2Long hit strategy-gamingtechnight-2
Long hit strategy-gamingtechnight-2
 
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battledrecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battle
 
Windows 10 Creators Update
Windows 10 Creators UpdateWindows 10 Creators Update
Windows 10 Creators Update
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Web サービス インフラの近未来
Web サービス インフラの近未来Web サービス インフラの近未来
Web サービス インフラの近未来
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture...
 
オタク×Node.js勉強会
オタク×Node.js勉強会オタク×Node.js勉強会
オタク×Node.js勉強会
 
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップクリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphone
 

DMMのゲームプラットフォームで利用している技術やシステム構成、レガシーシステムが抱える課題、解決のためのシステムリプレイスの進め方

  • 2. • 名前:久保田亙 • 会社:DMM.com Labo • 2015/08 入社 • プログラマー • 好きなデザインパターン:ゴッドオブジェクト • 口癖:「テストがないと死ぬ病気にかかっています。」 Copyright © since 1998 DMM All Rights Reserved. 2 自己紹介
  • 3. Copyright © since 1998 DMM All Rights Reserved. 3 本日みなさんへお伝えする内容 DMM GAMES プラットフォームとは? DMM GAMES プラットフォームの歴史(変遷) DMM GAMES プラットフォームのシステム構成 DMM GAMES プラットフォームのシステムリプレイス
  • 4. Copyright © since 1998 DMM All Rights Reserved. 4 DMM.comは1999年から続く老舗サービ スサイトです。時代のニーズに合わせた多 彩なコンテンツを、18年間培った独自プ ラットフォームで安定的に提供しています。 About DMM.com 40以上の幅広いサービスを展開 サービスについて
  • 5. Copyright © since 1998 DMM All Rights Reserved. 5 DMM.comは1999年から続く老舗サービ スサイトです。時代のニーズに合わせた多 彩なコンテンツを、18年間培った独自プ ラットフォームで安定的に提供しています。 About DMM.com 40以上の幅広いサービスを展開 サービスについて DMM GAMES
  • 6. DMM GAMESとは PCをメインにスマートフォン、フィーチャーフォンの3デバイスにまたがって みんなで遊べるオンライゲームを提供しています。 Copyright © since 1998 DMM All Rights Reserved. 6 世界中の大人に興奮を! 人気タイトルあります! 様々なデバイス イベント随時開催
  • 7. DMM GAMES プラットフォームとは DMM GAMESで様々なゲームを提供するための土台 Copyright © since 1998 DMM All Rights Reserved. 7 全てのゲームを 遊びやすいように、たのしめる ようにする機能群 -> トップページ、ゲーム一覧など デバイスの違い 同一アカウントで複数デバイス のゲームの仕組み 裏では データ解析、ログ基盤、バッチ 処理 ゲームするための共通機能を提供(プロフィール管理、ポイント、課金など) 海外向けプラットフォームやゲームストア、ゲームプレイヤーも
  • 8. Copyright © since 1998 DMM All Rights Reserved. 8 DMM GAMESプラットフォームを支える技術 さまざまなツール類を利用
  • 9. Copyright © since 1998 DMM All Rights Reserved. 9 最初のシステム構成は?(黎明期=5年前) 資料がみつからず伝承を元に表現 OS = Linux Web = Apache Application = PHP DB = MySQL というオーソドックスなLAMP構成 だったらしい・・・。
  • 10. Copyright © since 1998 DMM All Rights Reserved. 10 その頃のシステム構成は?(黎明期=5年前) DMM.comのひとつのコンテンツとしてスタート もともとDMMの持っていた機能を最初から利用できて便利 ゲーム用のサーバー構成も最小限
  • 11. Copyright © since 1998 DMM All Rights Reserved. 11 DMM GAMES 会員推移(拡大期) 52 145 360 460 940 1700 0 200 400 600 800 1000 1200 1400 1600 1800 2011 2012 2013 2014 2015 2016/7 会員数推移(単位/万人) ※DMM.comのではなくDMM GAMESの会員数 ヒットタイトルに恵まれ激増 プラットフォームも対応を迫られる 2017年1末時点では1800万人超
  • 12. Copyright © since 1998 DMM All Rights Reserved. 12 DMM GAMESのサービス増加(拡大期) 多彩なゲームを支えるための機能をどんどん追加 アプリゲーム ゲームプレイヤー コミュニティ機能、ミッション機能…その他多数
  • 13. Copyright © since 1998 DMM All Rights Reserved. 13 会員、サービスの増加に対応(サーバー) サーバー台数を倍々に増やしていく!
  • 14. Copyright © since 1998 DMM All Rights Reserved. 14 会員、サービスの増加に対応(システム) 負荷対策 解析対象データ量の増加 キャッシュ導入・増設 データの持ち方を一部RDBからNoSQLへ Hadoop導入
  • 15. そして現在 Copyright © since 1998 DMM All Rights Reserved. 15
  • 16. Copyright © since 1998 DMM All Rights Reserved. 16 現行システム構成 (構成図) 無理やり簡略化した図 でも、実際は・・・ サーバー台数合計約900台 Web/App 500台 DB 150台 memcached 30台 redis 50台 他いろいろ 170台
  • 17. Copyright © since 1998 DMM All Rights Reserved. 17 DMM.comは1999年から続く老舗サービ スサイトです。時代のニーズに合わせた多 彩なコンテンツを、18年間培った独自プ ラットフォームで安定的に提供していま す。 About DMM.com 40以上の幅広いサービスを展開 サービスについて DMM GAMES
  • 18. • 一日を通して負荷がある この例だと一番低い時で1600アクセス/秒 • イベント時に負荷が跳ね上がる • ピーク時で10万アクセス/秒 Copyright © since 1998 DMM All Rights Reserved. 18 現行システム構成(負荷の特徴) ※↑このグラフはアクセス数のグラフではありません
  • 19. Copyright © since 1998 DMM All Rights Reserved. 19 サービス拡大から現在までの失敗(その1) ゲームリリース時の負荷に耐えられず、急いでCDN投入 とあるゲームのサービス開始時にそのゲーム用に 準備していたダウンロード用のキャッシュサー バーとの通信量で40Gbpsが埋まる!
  • 20. Copyright © since 1998 DMM All Rights Reserved. 20 サービス拡大から現在までの失敗(その1) ゲームリリース時の負荷に耐えられず、急いでCDN投入 急いでそのゲームだけCDNに切り替えてしのいだ 結果としてはCDN側で125Gbpsとなった!
  • 21. Copyright © since 1998 DMM All Rights Reserved. 21 サービス拡大から現在までの失敗(その2) 応答性能の限界・・・ DB設計の問題等あり、MySQLへクエリを発行していた のでは遅すぎる状況 よし、NoSQLだ!
  • 22. Copyright © since 1998 DMM All Rights Reserved. 22 サービス拡大から現在までの失敗(その2) 応答性能の限界・・・ データ構造や保守性、可用性などを考慮し Redisを選択 さらにRedis Cluster組めばスケール アウトもしやすいぞ!
  • 23. Copyright © since 1998 DMM All Rights Reserved. 23 サービス拡大から現在までの失敗(その2) 応答性能の限界・・・ PHPが古すぎてRedisのドライバー(phpredis) がRedis Clusterに対応していない… twemproxyってのを使えばRedis をCluster構成でつかえるっぽい!
  • 24. Copyright © since 1998 DMM All Rights Reserved. 24 サービス拡大から現在までの失敗(その2) 応答性能の限界・・・ 本番でtwemproxyが詰まる twemproxyのサーバーをむっちゃ 増やしてしのぐ 負荷試験が足りてなかった・・・
  • 25. Copyright © since 1998 DMM All Rights Reserved. 25 これまでの苦労・失敗を振り返ってみると お気づきでしょうか? • 色々、試行錯誤し創意工夫はしたつもりだが… • 直近の問題に対応することを優先してきた • 部署として意識が機能拡充に寄っていた • 結果的にはサーバー台数を増やして物理で殴るみたい な方向が多い…
  • 26. Copyright © since 1998 DMM All Rights Reserved. 26 現行システム構成(課題-その1) システム構成の根本はそのままにスケールアップ・スケールアウトしてきた 大規模に適したアーキテクチャか? 人気タイトルの影響を他タイトルも受けてしまう
  • 27. Copyright © since 1998 DMM All Rights Reserved. 27 現行システム構成(課題-その2) DMM本体との密結合のデメリットが顕著になってきた DMM本体と影響を与え合ってしまう 変更時の影響範囲が見えづらい
  • 28. Copyright © since 1998 DMM All Rights Reserved. 28 現行システム構成(課題-その3) 技術的負債がたまりつつある たぶん使ってないんだよなーっという処理(でも怖くて消せない) 依存関係を整理して分割したい巨大処理(でも怖くて出来ない)
  • 30. Copyright © since 1998 DMM All Rights Reserved. 30 ところでリプレイスするって勇気必要ですよね? 壊して作り直しはソフトウェアエンジニアの悪弊とも言われる 既に、動いているものをリスクを取って作り直す判断に何故至ったか?
  • 31. Copyright © since 1998 DMM All Rights Reserved. 31 なぜリプレイスするのか? 上記から課題解決の手段として移行(リプレイス)が最適だった 密結合な状態から脱しないと、新しいチャレンジがしづらい状況 現行システムに手を加えるコストとリプレイスのコストの比較検討の結果 既存の課題の原因を分析していくと・・・ DMM.com本体との密結合な状態が根本の問題
  • 32. Copyright © since 1998 DMM All Rights Reserved. 32 リプレイスに踏み込めた背景 やるべき事をやり始めるまでに時間をかけすぎない文化 とりあえずやってみるが(ある程度)許容される文化 プレゼン、稟議、承認などの手続きの繰り返しの間に機会を逃す方がリスク 調査・検証の間にプロダクトも変わっていく 時間をかけすぎるより、やってみて知見を得て改善する方を選択!
  • 33. Copyright © since 1998 DMM All Rights Reserved. 33 リプレイス範囲は? Front Application Backend/Data
  • 34. Copyright © since 1998 DMM All Rights Reserved. 34 リプレイス方針 システムを止めずに移行する マイクロサービス化 ゲーム・ユーザーに影響を与えない! 現構成の反省を踏まえ疎結合な形へ
  • 35. Copyright © since 1998 DMM All Rights Reserved. 35 システムを止めずにリプレイスする工夫 機能単位でサブドメイン化 画面単位、ゲームタイトル単位で少しづつ移行 • トップ • コミュ ニティ 機能 • 実行ページ • ゲーム一覧 画面 • 艦これ • 刀剣 ゲーム サーバー構成もサブドメイン単位としデプロイ範囲を限定
  • 36. Copyright © since 1998 DMM All Rights Reserved. 36 リプレイスに際してのアーキテクチャ等 DDDの思想を取り入れたアプリケーション設計 各種環境の最新化 Agile / Scrumの積極的な導入 エンジニアがそれぞれで開発し設計思想がバラバラだった反省を踏まえ、筋の通った 設計思想で統一を図る必要があった セキュリティ面や性能等様々理由でもともと最新化したかった すでに部分的に導入しているチームあったがより大々的に 機能単位でリプレイスして早いサイクルでものを作るという進め方に合っていた
  • 37. Copyright © since 1998 DMM All Rights Reserved. 37 リプレイスに際してのアーキテクチャ等 キャッシュミドルウェアの変更(memcached -> redis) ユニットテスト デプロイシステム刷新 プルリク、レビュー スケールアウトや可用性、既に導入済みの運用面などから総合的に判断 変更時の影響範囲確認や変更スピード、モダンな開発スタイルへ 「ぜんぜんわからない 俺たちは雰囲気でレビューをやっている」 独自デプロイシステムからJenkinsへ(融通がきかなかった)
  • 38. Copyright © since 1998 DMM All Rights Reserved. 38 DDDを取り入れた設計 我々に合った形でとりいれてみた • ドメインのあり方…
  • 39. Copyright © since 1998 DMM All Rights Reserved. 39 DDDを取り入れた設計 外部システムとの差異吸収 • データの持ち方 • エラーハンドリング
  • 40. Copyright © since 1998 DMM All Rights Reserved. 40 DDDを取り入れた設計 データアクセス部分 • 今後のバックエンドリプレイスを考慮
  • 41. Copyright © since 1998 DMM All Rights Reserved. 41 リプレイス後(アプリケーション構成)
  • 42. Copyright © since 1998 DMM All Rights Reserved. 42 システム構成(リプレイス前)
  • 43. Copyright © since 1998 DMM All Rights Reserved. 43 システム構成(リプレイス中=現在)
  • 44. Copyright © since 1998 DMM All Rights Reserved. 44 システム構成(リプレイス後)
  • 45. Copyright © since 1998 DMM All Rights Reserved. 45 リプレイス開発で巻き起こる宗教戦争 ORマッパー派、反ORマッパー派 Joinの数はどこまでOKか? Query Builder というちょっとORMなもので落ち着く(必要に応じて生SQLもOK) 理由:DBを変えずに現行クエリを移植しているがORMに合わないクエリも多いため 4テーブル以上は要相談という形へ 理由:master,master,関連テーブルの形が多いため
  • 46. Copyright © since 1998 DMM All Rights Reserved. 46 リプレイス開発で巻き起こる宗教戦争 IDE派、エディタ派 大クラス主義、小クラス主義 お好みで(Vim, Atom, Eclipse, NetBeans, PhpStormが乱立、戦国時代へ) 理由:何で作ろうと本人が生産性高いやり方でやればOKということに 基本的には小クラス主義で 理由:テスト、レビューを考慮するとスコープが広い形では回らないので
  • 47. Copyright © since 1998 DMM All Rights Reserved. 47 リプレイスの苦労話 既存仕様の確認が大変 テストが大変 コードが仕様書な状態、既存コードを読み解くのは苦痛 1画面と思って軽く考えていたら思わぬ機能がモリモリ 密結合だった機能をテストできる形へ移植する作業 そもそも、テストが無かったのでどうテストする?という意識合わせが大変
  • 48. Copyright © since 1998 DMM All Rights Reserved. 48 リプレイスの苦労話もっと色々 新、旧両方の環境へ機能追加が必要 開発環境の構築が大変 開発中の機能追加は新旧両方にしなければならない 新旧の連動があるため、両方の環境を整えた
  • 49. Copyright © since 1998 DMM All Rights Reserved. 49 見えてきたメリット 品質を担保する仕組みを新たに導入できた 仕様、システムの見える化が進んだ ライブラリ等のバージョンアップが容易になった 新しいチャレンジがしやすくなった! レビュー、テストというプロセスが定着 リプレイス時に否が応でも棚卸しが必要だったため 疎結合になったため 変更のコストや数々のしがらみから、かなり自由になった
  • 50. Copyright © since 1998 DMM All Rights Reserved. 50 見えてきたメリット 品質を担保する仕組みを新たに導入できた 仕様、システムの見える化が進んだ ライブラリ等のバージョンアップが容易になった 新しいチャレンジがしやすくなった! レビュー、テストというプロセスが定着 リプレイス時に否が応でも棚卸しが必要だったため 疎結合になったため 変更のコストや数々のしがらみから、かなり自由になった リプレイスはまだまだ進行中!
  • 51. Copyright © since 1998 DMM All Rights Reserved. 51 リプレイスして良かったこと(個人的) テストテストテストテスト ユニットテストが無かった頃 ユニットテストが増えてきた
  • 52. Copyright © since 1998 DMM All Rights Reserved. 52 本日お話できなかったこと Laravelで組んでいての困った所やtipsなど システムを構成する各ツールの細かい所(MySQL,Redis,Nginx, .etc) 続きは懇親会で! PHPUnitでごりごりテスト書いてるけどうちではこうやってるよという話
  • 53. Copyright © since 1998 DMM All Rights Reserved. 53 まとめ 「事業が拡大している時こそ先を見据えるべき」という 教訓をリプレイスという機会に生かして、新しい事にど んどんチャレンジできると私はワクワクしています!
  • 54. Copyright © since 1998 DMM All Rights Reserved. 54 余談 /:∪::─ニjjニ─ヾ ガクガクブルブル… /:::li|.:( ○)三 (○)\ (:::||!.:∪::::: (__人__)):::: i| ____ )::::::::::::: |r┬-| li::::/ | | /::::::::::::::: `ー ‘ ::::::ヽ | | 艦これイベント開始-メンテ明け時の我々の様子 このドキドキを共有してくれる仲間を募集してます!