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
320
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.6k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
60
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.7k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
410
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
410
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
2.2k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
530
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
560
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
430
Other Decks in Technology
See All in Technology
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
360
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
200
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
2.1k
社内 AI エージェント Synapse と セマンティックレイヤーの育て方
hiroakis
1
1.4k
AI Engineering Summit Tokyo 2026 AIの前に、やることがある 〜医療データ企業の4フェーズ〜
dtaniwaki
0
2.4k
脆弱性対応、どこで線を引くか
rymiyamoto
0
200
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
130
探して_入れて_作って_使う_Agent_Skills___LT.pdf
peintangos
2
190
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
130
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
130
LLMにもCAP定理があるという話
harukasakihara
0
280
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
3
1.9k
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
160
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
New Earth Scene 8
popppiees
3
2.3k
The untapped power of vector embeddings
frankvandijk
2
1.7k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
Navigating Weather and Climate Data
rabernat
0
210
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. 技術負債は 人的資源に変える 大きなチャンス!