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
PHP Version Up と AWS への移行
Search
gree_tech
PRO
October 10, 2017
Technology
0
220
PHP Version Up と AWS への移行
PHP Conference 2017 にて発表された資料です。
http://phpcon.php.gr.jp/2017/
gree_tech
PRO
October 10, 2017
Tweet
Share
More Decks by gree_tech
See All by gree_tech
LLM翻訳ツールの開発と海外のお客様対応等への社内導入事例
gree_tech
PRO
0
580
ヘブンバーンズレッドのレンダリングパイプライン刷新
gree_tech
PRO
0
590
ヘブンバーンズレッドにおける、世界観を活かしたミニゲーム企画の作り方
gree_tech
PRO
0
570
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
580
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
620
「魔法少女まどか☆マギカ Magia Exedra」の必殺技演出を徹底解剖! -キャラクターの魅力を最大限にファンに届けるためのこだわり-
gree_tech
PRO
0
590
ヒューリスティック評価を用いたゲームQA実践事例
gree_tech
PRO
0
570
ライブサービスゲームQAのパフォーマンス検証による品質改善の取り組み
gree_tech
PRO
0
580
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
140
Other Decks in Technology
See All in Technology
2025年にHCP Vaultを学び直して見えた景色 / Lessons and New Perspectives from Relearning HCP Vault in 2025
aeonpeople
0
200
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
160
Agile PBL at New Grads Trainings
kawaguti
PRO
1
310
kubellが考える戦略と実行を繋ぐ活用ファーストのデータ分析基盤
kubell_hr
0
150
Grafana Meetup Japan Vol. 6
kaedemalu
1
330
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
0
350
サンドボックス技術でAI利活用を促進する
koh_naga
0
190
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
900
2025年になってもまだMySQLが好き
yoku0825
8
4.2k
AI エージェントとはそもそも何か? - 技術背景から Amazon Bedrock AgentCore での実装まで- / AI Agent Unicorn Day 2025
hariby
4
1.2k
まだ間に合う! StrandsとBedrock AgentCoreでAIエージェント構築に入門しよう
minorun365
PRO
11
1k
Skrub: machine-learning with dataframes
gaelvaroquaux
0
120
Featured
See All Featured
Producing Creativity
orderedlist
PRO
347
40k
Making Projects Easy
brettharned
117
6.4k
Done Done
chrislema
185
16k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
A better future with KSS
kneath
239
17k
Building Applications with DynamoDB
mza
96
6.6k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Transcript
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. PHP Version Up と AWS に移行した話 グリー株式会社 吉本 将宣
Copyright © GREE, Inc. All Rights Reserved. 自己紹介 • 吉本
将宣 • 2014年 グリー Join • インフラ/リードエンジニア ◦ 本職は NoSQL のはずだが、、、 ◦ 何でもやるスタイル ▪ PM、フロント開発・コードレビュー... ▪ 一時は Manager も ... • 10月からメディア事業へ ◦ iOS/Android アプリの開発メイン
Copyright © GREE, Inc. All Rights Reserved. 今日お話しすること • PHP
Version Up した話 • AWS に移行した話
Copyright © GREE, Inc. All Rights Reserved. 今日お話しすること • PHP
Version Up した話 • レガシーと戦って僕たちが手に入れた武器 • AWS に移行した話 • 僕たちが手に入れた武器で次にやったこと
Copyright © GREE, Inc. All Rights Reserved. グリーのサービス SNS &
ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など
Copyright © GREE, Inc. All Rights Reserved. Memcached / Redis
/ Flare MySQL Apache + PHP 基本システム構成 アプライアンス ロードバランサ + Apache Proxy ロードバランサ層 アプリケーション層 データベース層
Copyright © GREE, Inc. All Rights Reserved. 2年前の僕たちの環境 SNS &
ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など オンプレ AWS
Copyright © GREE, Inc. All Rights Reserved. 2年前の僕たちの環境 SNS &
ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など オンプレ AWS OS : Ubuntu Trusty PHP : 5.5 以上 MySQL : 5.6 以上
Copyright © GREE, Inc. All Rights Reserved. 2年前の僕たちの環境 SNS &
ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など オンプレ AWS OS : Debian Lenny PHP : 5.2 MySQL : 5.5
Copyright © GREE, Inc. All Rights Reserved. なぜオンプレがレガシー化したのか • 新規
OS への対応遅れ ◦ 数千台規模のサーバの入替はそれだけで長期に渡る • 息の長いサービスは密結合化 ◦ 古くからあるサービス ▪ GREE SNS やガラケー時代からの内製ブラウザゲーム ◦ プラットフォームやゲーム間で require ▪ プラットフォームが出来る前のコード ▪ API 化されていない部分 ▪ 同じサーバで動いていた • API 呼び出しより MySQL 直アクセスの方が速かった • メンテナンスが入れづらい ◦ ゲームプラットフォームの修正はパートナー様にも影響する • 肥大化したコード
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. 抜け出せないレガシーの沼
Copyright © GREE, Inc. All Rights Reserved. しかし限界はある • レスポンス速度の改善も限界
◦ 2年前の時点でも周回遅れの PHP 5.2 • OS が古いことによるミドルウェアのメンテナンスコスト増大 ◦ セキュリティパッチは独自で対応 ◦ AWS は ubuntu trusty なので、同じミドルウェアで複数バージョンを メンテナンスしないといけない 意を決して内製のブラウザゲームからバージョンアップを始めた
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. 効率よく&スピード重視で 進めないといけない
Copyright © GREE, Inc. All Rights Reserved. どうしたのか • 少人数によるプロトタイピング
• ノウハウの共有 • 修正方針と QA のスケジューリング
Copyright © GREE, Inc. All Rights Reserved. 少人数によるプロトタイピング • インフラチームを中心に各ゲーム・プラットフォームから数名で対応
• ゲームや SNS 機能が最低限動くところまで一気にやった ◦ 各サービス共通のコードを完成させる ◦ よくある syntax error の修正方法を決める ▪ 引数の変更など (regex_replace, etc… • ミドルウェア・インフラ面の問題も先取り ◦ 画像ライブラリ・Apache などの設定や問題の確認 • 開発環境を統一 ◦ chef を使って本番と共通の cookbook を作成 ◦
Copyright © GREE, Inc. All Rights Reserved. ノウハウ共有 • 全サービスで共通のエラーレポートフローを定義
◦ ゲーム内で閉じない不具合は全員に共有 ◦ どのように対応したかも一覧で分かるように • チームや領域によらずに修正 ◦ インフラ・ゲーム・プラットフォームのチームに関係なく pull request ◦ レビューやテストは各サービスのエンジニアが対応することで品質を担保 • インフラチームが舵を取って積極的にノウハウを共有 ◦ 全社で共通となっているインフラチームが中心になることで情報を集約
Copyright © GREE, Inc. All Rights Reserved. 修正方針と QA のスケジューリング
• 修正方針 ◦ PHP5.2 と PHP5.5 両方で必ず動くように修正する • QA とリリースまでのスケジュール調整 ◦ 先行して一つのゲームで QA を実施 ▪ 密結合なので、プラットフォームなどの不具合も見つることができた ▪ 画像合成といったセンシティブで時間が掛かる問題も早めに検知できた ◦ 共通の不具合を修正後は並行して QA を実施 ▪ 定常的に実施しているイベント等の QA と同時に実施 • PHP5.2 と PHP5.5 の両方の環境で QA すると時間が掛かりすぎる ▪ 事前に発生しやすい問題は把握・対応できているので不具合は少なめ ◦ プラットフォームは定常 QA で確認しつつ徐々にリリース ◦ リリースは一台に投入して2週間以上様子を見てから ▪ 負荷に問題がないか
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. 決してスマートとは 言えないやり方だが...
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. どうにか難題を乗り越えて 僕たちが勝ち得たものとは
Copyright © GREE, Inc. All Rights Reserved. 負荷の改善 • 50%ほど
load avergae が改善された ◦ Web サーバを 40% 削減 PHP 5.2 PHP 5.5
Copyright © GREE, Inc. All Rights Reserved. レガシーからの脱却 • バージョンアップ前
(2015年時点) ◦ Trusty & PHP5.5:全体の 20% • バージョンアップ後 (2016年時点) ◦ Trusty & PHP5.5:全体の 90% ▪ Lenny & PHP5.2 で残ったもの • サーバ管理システム等 • オンプレのネイティブゲーム
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. そんな数字よりも。。。
Copyright © GREE, Inc. All Rights Reserved. 僕たちが真に勝ち得たもの • 互いのシステムへの相互理解
◦ サーバサイドエンジニアのインフラへの理解 ◦ インフラエンジニアのアプリケーションへの理解 • 組織を超えた強力なチームワーク ◦ 一つの目標に向かって一丸となって進む力 ◦ 自分の領域に囚われずに協力し合う信頼関係
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. AWS に行こう
Copyright © GREE, Inc. All Rights Reserved. AWS 移行したモチベーション システム観点では。。。
• オンプレサーバの老朽化 ◦ 2017年には EOSL を迎えてしまう ◦ HDDおよびメモリの故障率の増加 ◦ パフォーマンスの限界
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. でも、それだけじゃない
Copyright © GREE, Inc. All Rights Reserved. AWS 移行したモチベーション •
一丸となってやれば何でもできる自信 ◦ 10年来の超大規模レガシーから抜け出した自信 • 次のチャレンジへの意欲向上 ◦ PHP7 ◦ 疎結合化 ◦ etc...
Copyright © GREE, Inc. All Rights Reserved. AWS 移行したモチベーション •
やりたいことは非常に多い • でも、さすがに一気に全部やるのは怖いので • AWS 移行しつつ、並行して PHP7 の準備をしました
Copyright © GREE, Inc. All Rights Reserved. 1年でゲームを全部 AWS に移行した
• 2016年 SNS & ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など オンプレ AWS
Copyright © GREE, Inc. All Rights Reserved. 1年でゲームを全部 AWS に移行した
SNS & ゲームプラットフォーム ブラウザゲーム & スマホゲーム 広告 メディア事業など オンプレ AWS • 2017年
Copyright © GREE, Inc. All Rights Reserved. 移行したサービス • ブラウザゲーム
◦ 密結合なものも含めて全て • スマホ向けネイティブゲーム ◦ ブラウザゲームで得たノウハウを活かして PHP Version Up も同時に ◦ ネイティブ向けのゲームプラットフォームも • ゲーム以外も ◦ コーポレート、広告・メディア事業系のサイト 20を超えるサービス、数千台規模のサーバを AWS に移行
Copyright © GREE, Inc. All Rights Reserved. どうやって移行したか? • Direct
Connect 使った ◦ 事前に MySQL のレプリカを AWS 上に作る ▪ AWS 側のレプリカを一台、オンプレのサービスに入れて クエリ検証やレスポンス速度等を確認 • 密結合な内製ブラウザゲームの場合、プラットフォームがオンプレに残るので AWS からオンプレへのレスポンス速度も重要 ◦ テスト用の別ドメインを AWS 側につけてテスト実施 ▪ AWS からオンプレの本番 DB にアクセスして確認 • 移行日の深夜メンテで切替 ◦ MySQL マスタ切替 & DNS 切替 ◦ 最終的な動作チェック
Copyright © GREE, Inc. All Rights Reserved. 移行して良かったこと • サーバ費用の削減
◦ 40% 近い削減を達成 ▪ ハードウェア性能向上による負荷低減 • サーバリソースの在庫調整が不要に ◦ オンプレではサーバ増加における調達のために在庫が必要だった • PHP5.5 に出来ていなかったサービスも完全移行 ◦ オンプレに残っていたネイティブゲーム等
Copyright © GREE, Inc. All Rights Reserved. AWS 移行で起きた問題 •
深夜メンテを入れて移行できなかったのは最初の一回だけ ◦ 原因は疎結合化を同時にやろうとしたことによるテスト不足 • メンテ当日の準備不足 ◦ テスト用端末がログインできないプロダクトがあり 当日慌てて対応した 大きなトラブルはほとんどなかった
Copyright © GREE, Inc. All Rights Reserved. なぜ一年で数千台規模を移行できたのか • 普通に
PDCA 回した ◦ 最初の移行ミスでプロジェクト並行する問題が把握できた ◦ 事前にやる作業や修正を次の移行プロダクトに共有した ◦ 負荷予測の精度も移行を経るごとに高くなった • 円滑なコミュニケーション ◦ PHPバージョンアップした時からの信頼関係 ◦ 相互に仕組みを理解しているため話が早く 問題を早く検知しやすい ▪ 認識齟齬などに問題も少なかった
Copyright © GREE, Inc. All Rights Reserved. 今後のチャレンジ • PHP7
on Xenial ◦ 一部サービスでは導入を開始 ▪ memcached への connection 数が改善 ▪ cpu 負荷も半分程度に • HTTP2 を使った通信の高速化 • オンプレに残ったサービスのハイブリッドクラウド
Copyright © GREE, Inc. All Rights Reserved. まとめ • 強靭な意志でレガシーから抜け出せる
• 勝ち得たチームワークは次のチャレンジの大きな財産! • パフォーマンスの改善はその副産物
Copyright © GREE, Inc. All Rights Reserved. Copyright © GREE,
Inc. All Rights Reserved. 技術負債は 人的資源に変える 大きなチャンス!