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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
gree_tech
PRO
October 10, 2017
Technology
300
0
Share
PHP Version Up と AWS への移行
PHP Conference 2017 にて発表された資料です。
http://phpcon.php.gr.jp/2017/
gree_tech
PRO
October 10, 2017
More Decks by gree_tech
See All by gree_tech
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
4.1k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
48
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.6k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
350
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
350
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
2.1k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
470
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
490
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
370
Other Decks in Technology
See All in Technology
アクセシビリティはすべての人のもの
tomokusaba
0
160
Scovilleモバイルエンジニア募集中.pdf
julienrudin
0
130
要件定義の精度を高めるための型と生成AIの活用 / Using Types and Generative AI to Improve the Accuracy of Requirements Definition
haru860
0
200
今年注目する!データ分析プラットフォームでのAIの活用
nayuts
0
170
Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Engineering Tech Talk 2026 Spring
visional_engineering_and_design
0
210
GitHub Copilot CLI と VS Code Agent Mode の使い分け
tomokusaba
0
110
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
1.9k
20260428_Product Management Summit_Loglass_JoeHirose
loglassjoe
4
5.5k
PyCon JPに学ぶ『決め方の決め方』: TechLead Conference 2026
terapyon
1
290
Shipping AI Agents — Lessons from Production
vvatanabe
0
300
AIが自律的に働く時代へ Amazon Quick で実現するAIエージェント紹介
koheiyoshikawa
0
150
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
39k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Marketing to machines
jonoalderson
1
5.2k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
140
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
120
Optimizing for Happiness
mojombo
378
71k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Are puppies a ranking factor?
jonoalderson
1
3.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Automating Front-end Workflow
addyosmani
1370
200k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
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. 技術負債は 人的資源に変える 大きなチャンス!