SlideShare a Scribd company logo
1 of 111
Download to read offline
2
2012年 KLab株式会社 に入社
2016年からBLEACH Brave Soulsにサーバサイドエンジニアとして参画。
2021年からサーバチームのリーダーをしています。
前職は、金融システムや物流管理のシステムを作っていました。
福田 陽介
エンジニア
KLabGames事業本部
KLab株式会社
画像
3
今日話すこと
● 前提説明(ゲームの説明・バージョンアップの理由)
● 開発方針(修正箇所洗い出し・ブランチについて)
● 後回しにしたこと
● 運用中プロジェクトでPHP8.1切り替えをどう進行したか
● バージョン移行後に起こったトラブル
● 数値で見る実績と効果
● まとめ
4
前提説明
5
BLEACH Brave Soulsとは
『BLEACH』を題材とした3Dアクションゲームです。
登場する人気キャラクターを操作し、
本格的で爽快なアクションを楽しむ事ができます。
6
サービスの特徴
● 2015-07-23にリリースされ、8周年を迎えた
● リクエスト数:1000 - 7000 rps
● アップデート周期:1〜2ヶ月に1度、機能追加を実施
● ゲームサーバ、運用ツール、バッチがPHPで実装されている
BLEACH Brave Soulsとは
7
● バージョンアップ前のPHPバージョンは
○ 5.5.13
■ 2014-01-26 リリース
■ EOLは 2016-07-10
なぜPHPバージョンアップをしたかったか?
8
● PHPのセキュリティサポート懸念
なぜPHPバージョンアップをしたかったか?
9
● PHPのセキュリティサポート懸念
● 導入しようとしたライブラリでPHP7.x以上が条件
なぜPHPバージョンアップをしたかったか?
10
● PHPのセキュリティサポート懸念
● 導入しようとしたライブラリでPHP7.x以上が条件
● 運用ツールのレスポンスタイムが遅い
なぜPHPバージョンアップをしたかったか?
11
● PHPのセキュリティサポート懸念
● 導入しようとしたライブラリでPHP7.x以上が条件
● 運用ツールのレスポンスタイムが遅い
● PHPの新しい機能や記法を使いたい
なぜPHPバージョンアップをしたかったか?
12
● PHPのセキュリティサポート懸念
● 導入しようとしたライブラリでPHP7.x以上が条件
● 運用ツールのレスポンスタイムが遅い
● PHPの新しい機能や記法を使いたい
→ PHP8.1 にして全部解決や!
なぜPHPバージョンアップをしたかったか?
13
● PHPのセキュリティサポート懸念
● 導入しようとしたライブラリでPHP7.x以上が条件
● 運用ツールのレスポンスタイムが遅い
● PHPの新しい機能や記法を使いたい
→ PHP8.1 にして全部解決や!
ただし、期間は6ヶ月。
2023年1月スタートで2023年6月末にリリースしたい。
なぜなら7月末に周年イベントで負荷が高くなる。
その1ヶ月前までには、PHP8.1を安定動作させておきたい。
なぜPHPバージョンアップをしたかったか?
なん...だと...
14
開発方針
15
● 修正対象箇所の洗い出し
○ PHP_CodeSniffer を使ってPHP8.1のコード記法に適していない
箇所を洗い出した
● ひととおり修正し終わったあとで、ユニットテストを実施
まず修正箇所を洗い出そう!
16
● 洗い出した修正箇所:196件
○ error:130件
○ warning:66件
まずはこれを足がかりに進めることに
まず修正箇所を洗い出そう!
17
PHP8.1対応を平和に進めるための戦略
PHP8.1開発はPHP8.1専用のブランチで開発していた
18
PHP8.1開発はPHP8.1専用のブランチで開発していた
開発期間中はPHP8.1バージョンアップだけでなく、PHP5.5
で新イベントや追加機能の開発も並行で行われる
PHP8.1対応を平和に進めるための戦略
PHP5.5での追加機能
19
PHP5.5での追加機能についてもPHP8.1対応する必要があるた
め、定期的にPHP8.1用ブランチに取り込みが必要となる
PHP8.1対応を平和に進めるための戦略
PHP5.5での追加機能
20
PHP5.5での追加機能についてもPHP8.1対応する必要があるた
め、定期的にPHP8.1用ブランチに取り込みが必要となる
→ただし、PHP8.1のブランチは6ヶ月間という長い期間、開発が行
われるため差分が大きくなる。
PHP8.1対応を平和に進めるための戦略
PHP5.5での追加機能
21
PHP5.5での追加機能についてもPHP8.1対応する必要があるた
め、定期的にPHP8.1用ブランチに取り込みが必要となる
→ただし、PHP8.1のブランチは6ヶ月間という長い期間、開発が行
われるため差分が大きくなる。
→差分が大きいとConflictする
PHP8.1対応を平和に進めるための戦略
PHP5.5での追加機能
22
なので、なるべくPHP8.1ブランチの差分を小さくしたい。
PHP8.1対応を平和に進めるための戦略
23
なので、なるべくPHP8.1ブランチの差分を小さくしたい。
→PHP8.1ブランチの対応のうち、PHP5.5でも動作するものは
PHP5.5のdevブランチに含めて事前リリースすることで差分をなる
べく少なくしていた。
PHP8.1対応を平和に進めるための戦略
PHP5.5でも動作する修正
24
なので、なるべくPHP8.1ブランチの差分を小さくしたい。
→PHP8.1ブランチの対応のうち、PHP5.5でも動作するものは
PHP5.5のdevブランチに含めて事前リリースすることで差分をなる
べく少なくしていた。
PHP8.1対応を平和に進めるための戦略
PHP5.5でも動作する修正
devブランチに入れて先にリリースする
25
なので、なるべくPHP8.1ブランチの差分を小さくしたい。
→PHP8.1ブランチの対応のうち、PHP5.5でも動作するものは
PHP5.5のdevブランチに含めて事前リリースすることで差分をなる
べく少なくしていた。
PHP8.1対応を平和に進めるための戦略
PHP8.1対応の全体差分の
約50%を事前にリリース
26
事前リリースした具体例
27
count対応
事前リリースした具体例 count対応
28
count対応
事前リリースした具体例 count対応
29
count対応
● PHP8.0から配列やCountableオブジェクト以外を引数に渡すと
エラーになるようになった
事前リリースした具体例 count対応
30
count対応
● PHP8.0から配列やCountableオブジェクト以外を引数に渡すと
エラーになるようになった
○ →配列やCountableオブジェクトになるよう引数を調整した。
PHP5.5の段階でも変えられるもの。
事前リリースした具体例 count対応
31
PHPUnitはPHPのユニットテストフレームワーク
私たちの運用では、新しいコード変更が提案されるたび、PHPUnit
でテストを行っている。
そして、そのテスト結果が問題ないことが確認された場合のみ、変
更をマージする。
これによりコードの品質を維持している。
PHPUnitについて
32
事前リリースした具体例 @expectedException の廃止
●
33
● @expectedException アノテーション
○ PHPUnitで例外のテストを書きたい時に使用する
○ PHPUnit9 で廃止
事前リリースした具体例 @expectedException の廃止
34
● @expectedException アノテーション
○ PHPUnitで例外のテストを書きたい時に使用する
○ PHPUnit9 で廃止
● 対応方法
/*
- * @expectedException ValidationException
*/
public function testCannotPlay()
{
+ $this->expectException(ValidationException::class);
$this->game->play(); // should throw an exception
}
事前リリースした具体例 @expectedException の廃止
35
● @expectedException アノテーション
○ PHPUnitで例外のテストを書きたい時に使用する
○ PHPUnit9 で廃止
● 対応方法
/*
- * @expectedException ValidationException
*/
public function testCannotPlay()
{
+ $this->expectException(ValidationException::class);
$this->game->play(); // should throw an exception
}
事前リリースした具体例 @expectedException の廃止
古いPHPUnitでは
この書き方はできない
36
● @expectedException アノテーション
○ PHPUnitで例外のテストを書きたい時に使用する
○ PHPUnit9 で廃止
● 対応方法
/*
- * @expectedException ValidationException
*/
public function testCannotPlay()
{
+ $this->setExpectedException(ValidationException::class);
$this->game->play(); // should throw an exception
}
事前リリースした具体例 @expectedException の廃止
PHPUnit4.5でも使える
setExpectedExceptionに書
き換える
37
● @expectedException アノテーション
○ PHPUnitで例外のテストを書きたい時に使用する
○ PHPUnit9 で廃止
● 対応方法
/*
- * @expectedException ValidationException
*/
public function testCannotPlay()
{
+ $this->expectException(ValidationException::class);
$this->game->play(); // should throw an exception
}
事前リリースした具体例 @expectedException の廃止
リリース時に
expectException に
一括置き換えする
38
● PHPUnit_Framework_TestCase が
PHPUnitFrameworkTestCase になった
○ PHPUnit6で追加
事前リリースした具体例 名前空間対応
39
● PHPUnit_Framework_TestCase が
PHPUnitFrameworkTestCase になった
○ PHPUnit6で追加
● 対応方法
事前リリースした具体例 名前空間対応
-class BleachUnitTestCase extends PHPUnit_Framework_TestCase
+class BleachUnitTestCase extends PHPUnitFrameworkTestCase
{
40
● PHPUnit_Framework_TestCase が
PHPUnitFrameworkTestCase になった
○ PHPUnit6で追加
● 対応方法
● エイリアスを使うことでPHPUnit4.5でも名前空間っぽい記載が
できる
事前リリースした具体例 名前空間対応
-class BleachUnitTestCase extends PHPUnit_Framework_TestCase
+class BleachUnitTestCase extends PHPUnitFrameworkTestCase
{
+class_alias('PHPUnit_Framework_TestCase', 'PHPUnitFrameworkTestCase');
41
後回しにしたこと
42
PHPバージョンアップはやることが多い
● ゲームサーバだけでなく、バッチ処理もPHP8.1対応
● PHP7.3からMCrypt削除されたためOpenSSLに移行
● xhprof代替の新パフォーマンスモニタリングの導入
● PHPUnit10でwithConsecutiveの廃止
43
PHPバージョンアップはやることが多い
● ゲームサーバだけでなく、バッチ処理もPHP8.1対応
● PHP7.3からMCrypt削除されたためOpenSSLに移行。
● 新パフォーマンスモニタリングの導入(xhprof代替)
● PHPUnit10でwithConsecutiveの廃止
締め切りに間に合わない!
44
PHPバージョンアップはやることが多い
● ゲームサーバだけでなく、バッチ処理もPHP8.1対応
● PHP7.3からMCrypt削除されたためOpenSSLに移行。
● 新パフォーマンスモニタリングの導入(xhprof代替)
● PHPUnit10でwithConsecutiveの廃止
45
PHPバージョンアップはやることが多い
● ゲームサーバだけでなく、バッチ処理もPHP8.1対応
→ バッチ処理は独立しているため、後日1つずつPHP8.1対応。
● PHP7.3からMCrypt削除されたためOpenSSLに移行。
● 新パフォーマンスモニタリングの導入(xhprof代替)
● PHPUnit10でwithConsecutiveの廃止
46
PHPバージョンアップはやることが多い
● ゲームサーバだけでなく、バッチ処理もPHP8.1対応
→ バッチ処理は独立しているため、後日1つずつPHP8.1対応。
● PHP7.3からMCrypt削除されたためOpenSSLに移行。
→PECLでMCryptをインストールして一旦使い続ける
● 新パフォーマンスモニタリングの導入(xhprof代替)
● PHPUnit10でwithConsecutiveの廃止
47
PHPバージョンアップはやることが多い
● ゲームサーバだけでなく、バッチ処理もPHP8.1対応
→ バッチ処理は独立しているため、後日1つずつPHP8.1対応。
● PHP7.3からMCrypt削除されたためOpenSSLに移行。
→PECLでMCryptをインストールして一旦使い続ける
● 新パフォーマンスモニタリングの導入(xhprof代替)
→リリース後に考える
● PHPUnit10でwithConsecutiveの廃止
48
● ゲームサーバだけでなく、バッチ処理もPHP8.1対応
→ バッチ処理は独立しているため、後日1つずつPHP8.1対応。
● PHP7.3からMCrypt削除されたためOpenSSLに移行。
→PECLでMCryptをインストールして一旦使い続ける
● 新パフォーマンスモニタリングの導入(xhprof代替)
→リリース後に考える
● PHPUnit10でwithConsecutiveの廃止
→一旦削除
PHPバージョンアップはやることが多い
49
● ゲームサーバだけでなく、バッチ処理もPHP8.1対応
→ バッチ処理は独立しているため、後日1つずつ8.1対応。
● PHP7.3からMCrypt削除されたためOpenSSLに移行。
→PECLでMCryptをインストールして一旦使い続ける
● 新パフォーマンスモニタリングの導入(xhprof代替)
→リリース後に考える
● PHPUnit10でwithConsecutiveの廃止
→一旦削除
PHPバージョンアップはやることが多い
#あとでやる
やることはたくさんあるので、
必須で対応しなければならないことに集中する
50
運用中プロジェクトで
PHP8.1切り替えを
どう進行したか
51
1. 開発環境について
2. どう進行したか?
3. 運用環境での出た問題
運用中プロジェクトでPHP8.1切り替えをどう進行したか
52
通常運用時のフロー
1. 開発環境について
53
通常運用時のフロー
1. 開発環境について ① 開発者やデバッグチームは開発環境に
アップロードされたマスタデータを
元にプログラムを開発したり、データを
チェックしたりします。
54
通常運用時のフロー
1. 開発環境について
② チェックし終わったデータは本番DBに
アップロードされ、プレイヤーは新しいキャ
ラクターやイベントが遊べるようになります
55
いきなりPHP8.1に切り替えてしまうと
1. 開発環境について
①デバッグ中の不具合を見つけても、
PHP8.1が原因なのかマスタデータが原因
なのかの切り分けが難しくなります。
56
いきなりPHP8.1に切り替えてしまうと
1. 開発環境について
② データ準備やチェックに遅れがでて、定
常運用に影響がでてしまいます
57
PHP8.1用のエンドポイントを準備して並行で動作
2. どう進行したか?
58
PHP8.1用のエンドポイントを準備して並行で動作
2. どう進行したか?
① 定常運用のデバッグはPHP5.5でチェッ
クするため影響なし
59
PHP8.1用のエンドポイントを準備して並行で動作
2. どう進行したか?
② 定常運用を止めずに並行してPHP8.1
の検証を進めることができた
60
3. 運用環境で出た問題
61
3. 運用環境で出た問題(MessagePackの変更)
62
MessagePackとは
3. 運用環境で出た問題(MessagePackの変更)
63
3. 運用環境で出た問題(MessagePackの変更)
なにが起こったか?
64
3. 運用環境で出た問題(MessagePackの変更)
なにが起こったか?
→DBからのデータ読み込みに失敗するようになった
65
3. 運用環境で出た問題(MessagePackの変更)
なにが起こったか?
→DBからのデータ読み込みに失敗するようになった
なぜ?
66
3. 運用環境で出た問題(MessagePackの変更)
なにが起こったか?
→DBからのデータ読み込みに失敗するようになった
なぜ?
→失敗していたのはMessagePackを使用していた箇所。
msgpackのバージョンアップ0.5.5 -> 2.2.0 の際
文字列の新シリアライズ方式(str8)が採用されたため。
67
3. 運用環境で出た問題(MessagePackの変更)
なにが起こったか?
→DBからのデータ読み込みに失敗するようになった
なぜ?
→失敗していたのはMessagePackを使用していた箇所。
msgpackのバージョンアップ0.5.5 -> 2.2.0 の際
文字列の新シリアライズ方式(str8)が採用されたため。
新しいバージョンで保存したデータを古いバージョンで
読み込むことができなくなった
(msgpack v0.5.6から変わった)
68
暫定対処
3. 運用環境で出た問題(MessagePackの変更)
69
暫定対処
並行稼働期間は新シリアライズ方式(str8)の設定をOFFにする
3. 運用環境で出た問題(MessagePackの変更)
70
暫定対処
並行稼働期間は新シリアライズ方式(str8)の設定をOFFにする
msgpack 0.5.5も 2.2.0 も同じデータ形式で保存される
3. 運用環境で出た問題(MessagePackの変更)
71
暫定対処
並行稼働期間は新シリアライズ方式(str8)の設定をOFFにする
msgpack 0.5.5も 2.2.0 も同じデータ形式で保存される
3. 運用環境で出た問題(MessagePackの変更)
php.ini
msgpack.use_str8_serialization = Off
72
PHP8.1バージョンアップ後に
起こったトラブル
73
バグ修正のためプログラムを本番環境にデプロイした際
約3%の確率でSegmentation fault が起こるようになった。
巨大PHPファイルのJITが時々壊れる問題
74
バグ修正のためプログラムを本番環境にデプロイした際
約3%の確率でSegmentation fault が起こるようになった。
→バグ修正したプログラムが原因かと考えRevertしてデプロイす
るも解消せず
巨大PHPファイルのJITが時々壊れる問題
75
バグ修正のためプログラムを本番環境にデプロイした際
約3%の確率でSegmentation fault が起こるようになった。
→バグ修正したプログラムが原因かと考えRevertしてデプロイす
るも解消せず
→Webサーバの再起動をするとなぜか解消した
巨大PHPファイルのJITが時々壊れる問題
76
バグ修正のためプログラムを本番環境にデプロイした際
約3%の確率でSegmentation fault が起こるようになった。
→バグ修正したプログラムが原因かと考えRevertしてデプロイす
るも解消せず
→Webサーバの再起動をするとなぜか解消した
→ $a = 1 + 1; のような関係ない差分をデプロイしても発生
巨大PHPファイルのJITが時々壊れる問題
77
色々調査したところ特定ファイルを本番環境にデプロイしたときだ
け発生することがわかった
巨大PHPファイルのJITが時々壊れる問題
78
色々調査したところ特定ファイルを本番環境にデプロイしたときだ
け発生することがわかった
そのファイルがプロジェクトの中で一番大きい
PHPファイル(8000行超、360KB)
巨大PHPファイルのJITが時々壊れる問題
79
色々調査したところ特定ファイルを本番環境にデプロイしたときだ
け発生することがわかった
そのファイルがプロジェクトの中で一番大きい
PHPファイル(8000行超、360KB)
二番目に大きいPHPファイル(4000行超え、140KB)では再現
せず
巨大PHPファイルのJITが時々壊れる問題
80
色々調査したところ特定ファイルを本番環境にデプロイしたときだ
け発生することがわかった
そのファイルがプロジェクトの中で一番大きい
PHPファイル(8000行超、360KB)
二番目に大きいPHPファイル(4000行超え、140KB)では再現
せず
サーバ再起動すれば解決するが、このままデプロイする度に再起
動するのは運用コストがかかるため対策したい...
巨大PHPファイルのJITが時々壊れる問題
81
対策
opcache.jit の設定をOFFにすることで解決した
巨大PHPファイルのJITが時々壊れる問題
82
対策
opcache.jit の設定をOFFにすることで解決した
なぜかはわからない。初回コンパイル時の挙動に関連?
(わかる人いたら教えてください)
巨大PHPファイルのJITが時々壊れる問題
83
対策
opcache.jit の設定をOFFにすることで解決した
なぜかはわからない。初回コンパイル時の挙動に関連?
(わかる人いたら教えてください)
opcache.jit をOFFにすることでレスポンスタイムは多少悪化した
(3%くらい)
巨大PHPファイルのJITが時々壊れる問題
84
対策
opcache.jit の設定をOFFにすることで解決した
なぜかはわからない。初回コンパイル時の挙動に関連?
(わかる人いたら教えてください)
opcache.jit をOFFにすることでレスポンスタイムは多少悪化した
(3%くらい)
予め適切なファイルサイズに分割するのが良いので、大きなPHP
ファイルがあるプロジェクトは注意しましょう。
(自分たちは今後のアップデートで分割予定)
巨大PHPファイルのJITが時々壊れる問題
85
アプリのバージョンアップの際の実機デバッグテストでNGとなり、
バグ報告がきたもの。
そのテスト内容が
PHP8.1速すぎ問題
86
アプリのバージョンアップの際の実機デバッグテストでNGとなり、
バグ報告がきたもの。
そのテスト内容が
タイムアウトの動作チェックテスト
タイムアウトまでの条件を1秒に変更するとサーバの処理
待ちで1秒以上かかりタイムアウトする
PHP8.1速すぎ問題
87
アプリのバージョンアップの際の実機デバッグテストでNGとなり、
バグ報告がきたもの。
そのテスト内容が
タイムアウトの動作チェックテスト
タイムアウトまでの条件を1秒に変更するとサーバの処理
待ちで1秒以上かかりタイムアウトする
→早くなりすぎてタイムアウトしなかった(テストNG)
PHP8.1速すぎ問題
88
アプリのバージョンアップの際の実機デバッグテストでNGとなり、
バグ報告がきたもの。
そのテスト内容が
タイムアウトの動作チェックテスト
タイムアウトまでの条件を1秒に変更するとサーバの処理
待ちで1秒以上かかりタイムアウトする
→早くなりすぎてタイムアウトしなかった(テストNG)
(レスポンスデータを10倍くらいになるよう所持キャラを増やし
てなんとか通過)
PHP8.1速すぎ問題
一体いつから
テストが通ると
錯覚していた?
89
数値で見る実績と効果
90
● 164人日
○ リーダ:1名(26人日)
○ メインの実装担当:1名(71人日)
○ インフラ等相談役:3名(42人日+10人日+15人日)
工数
91
スケジュール(実績)
92
バージョン情報
5.5.13
バージョンアップ前
8.1.13
バージョンアップ後
PHP
4.5 10.3
PHPUnit
1.4.10 3.7.2
PHP_CodeSniffer
0.5.5 2.2.0
msgpack
93
PHP8.1バージョンアップのプログラム修正量
● PHP8.1バージョンアップによるプログラム修正量
+16823 追加
-17638 削除
94
PHP8.1バージョンアップのプログラム修正量
● PHP8.1バージョンアップによるプログラム修正量
+16823 追加
-17638 削除
● 修正箇所の内訳は?
95
PHP8.1バージョンアップのプログラム修正量
96
PHP8.1バージョンアップのプログラム修正量
全体の67%が
テストコードの修正だった。
97
PHP8.1バージョンアップのプログラム修正量
全体の67%が
テストコードの修正だった。
PHPUnit対応が大変だった
98
バグチケット件数
● デバッグ期間中に報告されたバグチケットは2件だけ
○ いずれもサーバ設定に関連するもので、PHPバージョンアップの
修正に起因するものはなかった。
99
バグチケット件数
● デバッグ期間中に報告されたバグチケットは2件だけ
○ いずれもサーバ設定に関連するもので、PHPバージョンアップの
修正に起因するものはなかった。
○ →ユニットテストを通す過程で、PHP_CodeSnifferでは検知でき
ていなかった修正漏れなどが見つかり対応できた。
○ → デバッグ前にユニットテストを通したことで、修正必要な部分
は対応しきれていた。
100
バグチケット件数
● デバッグ期間中に報告されたバグチケットは2件だけ
○ いずれもサーバ設定に関連するもので、PHPバージョンアップの
修正に起因するものはなかった。
○ →ユニットテストを通す過程で、PHP_CodeSnifferでは検知でき
ていなかった修正漏れなどが見つかり対応できた。
○ → デバッグ前にユニットテストを通したことで、修正必要な部分
は対応しきれていた。
○ ユニットテストのバージョンアップは大変だけど大切
101
● ゲームサーバAPIの平均レスポンスタイム
○ 0.238 秒 → 0.139秒 (42%改善)
バージョンアップの効果
PHP8.1切り替えタイミング
102
● ユニットテストの処理時間
○ アプデ前後で変更のなかったテストを一部抽出
○ 496秒 → 247秒 (50%改善)
バージョンアップの効果
103
● 運用ツールのレスポンスタイム
○ 40%改善
バージョンアップの効果
104
まとめ
105
開発方針
● PHP_CodeSniffer を使ってPHP8.1のコード記法に適していない
箇所を洗い出した
● ひととおり修正し終わったあとで、ユニットテストを実施
● PHP5.5でも動作するものは事前にリリースすることでPHP8.1ブ
ランチの差分を最小にし、Conflictリスクを低下
まとめ
106
運用中プロジェクトでPHP8.1切り替えをどう進行したか
● PHP8.1用サーバのエンドポイントを分けることで、並行して運
用
● MessagePackのバージョンアップで新シリアライズ形式が採用
されたことによるデータ読み込み失敗については、並行運用
期間中だけ設定をOFFにした
まとめ
107
バージョンアップ後に起こったトラブル
● 本番環境デプロイ時に3%の確率でSegmentation faultが発生
する障害
○ opcache.jit の設定をOFFにすることで暫定対応
● PHP8.1が早すぎてタイムアウトのテストができない問題
○ キャラ数を10倍に増やすことで対応
まとめ
108
数値で見る実績と効果
● 164人日
● ゲームサーバ 42%改善
● ユニットテスト 50%改善
● 運用ツール 40%改善
まとめ
109
まとめ
PHPバージョンアップの修正箇所
● 全体の67%がテストコードの修正だった
● テストを通す過程で、PHP_CodeSnifferでは検知できていな
かった箇所などが見つかり対応できた。
● テストコードのおかげで、デバッグ時のバグが抑えられた。
○ ユニットテストのバージョンアップは大変だけど大切
110
今回事前リリースした部分は、もっと前から準備できた部分だっ
た。
実際に修正箇所の約50%を事前リリースにできた。
164人日を確保するのはプロジェクトによっては難しい。
ただ、事前リリース分をコツコツ対応していくのは可能。
バージョンアップしたいを思っている方は、
「PHP_CodeSnifferでチェックをする」や「PHPUnitのリリースノートを
見てみる」など30分でできることから始めるとアップデートコストが
減るのでやっていきましょう!
さいごに
111
ここまで聞いていただき、
ありがとうございました。
おわり
資料へのリンクはこちら

More Related Content

What's hot

【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~
【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~
【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~Hinemos
 
Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築ichikaway
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Yahoo!デベロッパーネットワーク
 
俺たちの本当にやりたかった DevDayに行って気づいた。 俺は恋をしていた。
俺たちの本当にやりたかった DevDayに行って気づいた。 俺は恋をしていた。俺たちの本当にやりたかった DevDayに行って気づいた。 俺は恋をしていた。
俺たちの本当にやりたかった DevDayに行って気づいた。 俺は恋をしていた。ssuserb816cf
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)J-Stream Inc.
 
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所Ryo Sasaki
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)NTT DATA Technology & Innovation
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQLyoku0825
 
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)Yosuke Hiraishi
 
Pythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみるPythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみる2bo 2bo
 
MongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキストMongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキストAkihiro Kuwano
 
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi 株式会社MonotaRO Tech Team
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月VirtualTech Japan Inc.
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門AdvancedTechNight
 

What's hot (20)

【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~
【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~
【HinemosWorld2014】B2-3_Hinemos徹底解剖~ジョブ編~
 
Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
 
俺たちの本当にやりたかった DevDayに行って気づいた。 俺は恋をしていた。
俺たちの本当にやりたかった DevDayに行って気づいた。 俺は恋をしていた。俺たちの本当にやりたかった DevDayに行って気づいた。 俺は恋をしていた。
俺たちの本当にやりたかった DevDayに行って気づいた。 俺は恋をしていた。
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
Vue.js で XSS
Vue.js で XSSVue.js で XSS
Vue.js で XSS
 
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)
 
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQL
 
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
 
Pythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみるPythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみる
 
MongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキストMongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキスト
 
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
 
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
 

Similar to 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話

Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーAyumu Kawaguchi
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitAtsuhiro Kubo
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodAtsuhiro Kubo
 
[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部haruki ueno
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストTsutomu Chikuba
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 ichikaway
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術finoue
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
NetBeans plugin for wordpress
NetBeans plugin for wordpressNetBeans plugin for wordpress
NetBeans plugin for wordpressJunichi Yamamoto
 
CakePHP - The point of upgrade
CakePHP - The point of upgradeCakePHP - The point of upgrade
CakePHP - The point of upgradeYasuo Harada
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318Yuhki Hanada
 
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4ichikaway
 

Similar to 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話 (20)

Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnit
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部[JavaDo] JAX-RS ハンズオン 第2部
[JavaDo] JAX-RS ハンズオン 第2部
 
PHP agile test tips
PHP agile test tipsPHP agile test tips
PHP agile test tips
 
Version管理 1
Version管理 1Version管理 1
Version管理 1
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
NetBeans plugin for wordpress
NetBeans plugin for wordpressNetBeans plugin for wordpress
NetBeans plugin for wordpress
 
CakePHP - The point of upgrade
CakePHP - The point of upgradeCakePHP - The point of upgrade
CakePHP - The point of upgrade
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
 
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
 

More from KLab Inc. / Tech

大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化KLab Inc. / Tech
 
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介KLab Inc. / Tech
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方KLab Inc. / Tech
 
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービスKLab Inc. / Tech
 
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜KLab Inc. / Tech
 
他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話KLab Inc. / Tech
 
KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLab Inc. / Tech
 
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営KLab Inc. / Tech
 
「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発KLab Inc. / Tech
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテストゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテストKLab Inc. / Tech
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術KLab Inc. / Tech
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜KLab Inc. / Tech
 
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLab Inc. / Tech
 
Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話KLab Inc. / Tech
 
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLab Inc. / Tech
 
属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話KLab Inc. / Tech
 
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーションKLab Inc. / Tech
 
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介KLab Inc. / Tech
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeKLab Inc. / Tech
 
ワールド別のDBへの取得・更新に後から対応した話
ワールド別のDBへの取得・更新に後から対応した話ワールド別のDBへの取得・更新に後から対応した話
ワールド別のDBへの取得・更新に後から対応した話KLab Inc. / Tech
 

More from KLab Inc. / Tech (20)

大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
 
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方
 
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
 
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
 
他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話
 
KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境
 
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
 
「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテストゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
 
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷
 
Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話
 
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
 
属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話
 
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション
 
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 Bridge
 
ワールド別のDBへの取得・更新に後から対応した話
ワールド別のDBへの取得・更新に後から対応した話ワールド別のDBへの取得・更新に後から対応した話
ワールド別のDBへの取得・更新に後から対応した話
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (14)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話