PHP Version Up と AWS への移行

gree_tech
gree_techgree_tech
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.
技術負債は
人的資源に変える
大きなチャンス!
1 of 38

Recommended

PHPからJavaへ乗り換えた。そんな昔話をしよう by
PHPからJavaへ乗り換えた。そんな昔話をしようPHPからJavaへ乗り換えた。そんな昔話をしよう
PHPからJavaへ乗り換えた。そんな昔話をしよう優介 黒河
6.9K views61 slides
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!) by
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
13.3K views22 slides
Infrastructure as Code (IaC) 談義 2022 by
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Amazon Web Services Japan
3.3K views21 slides
【de:code 2020】 カスタムコネクタ入門 : Power Platform と既存システムをつなげるカスタムコネクタ by
【de:code 2020】 カスタムコネクタ入門 : Power Platform と既存システムをつなげるカスタムコネクタ【de:code 2020】 カスタムコネクタ入門 : Power Platform と既存システムをつなげるカスタムコネクタ
【de:code 2020】 カスタムコネクタ入門 : Power Platform と既存システムをつなげるカスタムコネクタ日本マイクロソフト株式会社
505 views31 slides
aws blackbelt amazon elasticsearch service by
aws blackbelt amazon elasticsearch service aws blackbelt amazon elasticsearch service
aws blackbelt amazon elasticsearch service Amazon Web Services Japan
31.7K views71 slides
AWS Wavelengthと大阪リージョンのご紹介20210414 by
AWS Wavelengthと大阪リージョンのご紹介20210414AWS Wavelengthと大阪リージョンのご紹介20210414
AWS Wavelengthと大阪リージョンのご紹介20210414Amazon Web Services Japan
1.9K views35 slides

More Related Content

What's hot

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM) by
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)Amazon Web Services Japan
7K views62 slides
マイクロサービスにおける 非同期アーキテクチャ by
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャota42y
49K views105 slides
大規模トラフィックにどのように備えて負荷対策を実施しているのか? by
大規模トラフィックにどのように備えて負荷対策を実施しているのか?大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?Yusuke Shirakawa
5.8K views59 slides
開発速度が速い #とは(LayerX社内資料) by
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
61.4K views18 slides
『VMware Cloud on AWS』×『Veeam』移行/データ保護の最適解はこれだ! by
『VMware Cloud on AWS』×『Veeam』移行/データ保護の最適解はこれだ!『VMware Cloud on AWS』×『Veeam』移行/データ保護の最適解はこれだ!
『VMware Cloud on AWS』×『Veeam』移行/データ保護の最適解はこれだ!株式会社クライム
1.3K views36 slides
Windows Azure Platform 運用設計 V1.1 by
Windows Azure Platform 運用設計 V1.1Windows Azure Platform 運用設計 V1.1
Windows Azure Platform 運用設計 V1.1junichi anno
3.1K views68 slides

What's hot(20)

マイクロサービスにおける 非同期アーキテクチャ by ota42y
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
ota42y49K views
大規模トラフィックにどのように備えて負荷対策を実施しているのか? by Yusuke Shirakawa
大規模トラフィックにどのように備えて負荷対策を実施しているのか?大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
Yusuke Shirakawa5.8K views
開発速度が速い #とは(LayerX社内資料) by mosa siru
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru61.4K views
『VMware Cloud on AWS』×『Veeam』移行/データ保護の最適解はこれだ! by 株式会社クライム
『VMware Cloud on AWS』×『Veeam』移行/データ保護の最適解はこれだ!『VMware Cloud on AWS』×『Veeam』移行/データ保護の最適解はこれだ!
『VMware Cloud on AWS』×『Veeam』移行/データ保護の最適解はこれだ!
Windows Azure Platform 運用設計 V1.1 by junichi anno
Windows Azure Platform 運用設計 V1.1Windows Azure Platform 運用設計 V1.1
Windows Azure Platform 運用設計 V1.1
junichi anno3.1K views
VMware Cloud on AWSネットワーク詳細解説 by Noritaka Kuroiwa
VMware Cloud on AWSネットワーク詳細解説VMware Cloud on AWSネットワーク詳細解説
VMware Cloud on AWSネットワーク詳細解説
Noritaka Kuroiwa2K views
週末趣味のAWS VPC Traffic Mirroring by Namba Kazuo
週末趣味のAWS VPC Traffic Mirroring週末趣味のAWS VPC Traffic Mirroring
週末趣味のAWS VPC Traffic Mirroring
Namba Kazuo1.5K views
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション by 日本マイクロソフト株式会社
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション 【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
Firebase Authを Nuxt + Railsの自前サービス に導入してみた by Tomoe Sawai
Firebase Authを Nuxt + Railsの自前サービス に導入してみたFirebase Authを Nuxt + Railsの自前サービス に導入してみた
Firebase Authを Nuxt + Railsの自前サービス に導入してみた
Tomoe Sawai3.7K views
新入社員のための大規模ゲーム開発入門 サーバサイド編 by infinite_loop
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop48.1K views
Re: ゼロから始める監視設計 by Masahito Zembutsu
Re: ゼロから始める監視設計Re: ゼロから始める監視設計
Re: ゼロから始める監視設計
Masahito Zembutsu22.5K views
インフラエンジニアってなんでしたっけ(仮) by Akihiro Kuwano
インフラエンジニアってなんでしたっけ(仮)インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)
Akihiro Kuwano102.6K views
マスターデータの キャッシュシステムの改善の話 by natsumi_ishizaka
マスターデータの キャッシュシステムの改善の話マスターデータの キャッシュシステムの改善の話
マスターデータの キャッシュシステムの改善の話
natsumi_ishizaka2.6K views
AWS Lambdaで作るクローラー/スクレイピング by Takuro Sasaki
AWS Lambdaで作るクローラー/スクレイピングAWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki25.8K views
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ... by NTT DATA Technology & Innovation
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ! by Teruchika Yamada
Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ!Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ!
Power BI をアプリに埋め込みたい? ならば Power BI Embedded だ!
Teruchika Yamada9.4K views
VPC Reachability Analyzer 使って人生が変わった話 by Noritaka Sekiyama
VPC Reachability Analyzer 使って人生が変わった話VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話
Noritaka Sekiyama2.6K views

Viewers also liked

著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則 by
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則Hiroshi Tokumaru
71.5K views86 slides
片手間MySQLチューニング戦略 by
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略yoku0825
21.2K views78 slides
LancersのCakePHPバージョンアップ施策について by
LancersのCakePHPバージョンアップ施策についてLancersのCakePHPバージョンアップ施策について
LancersのCakePHPバージョンアップ施策についてShigemasa Akiyama
4.6K views66 slides
OPcache の最適化器の今 by
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今y-uti
10.2K views55 slides
phpcon2017 LT01 MDD by
phpcon2017 LT01 MDDphpcon2017 LT01 MDD
phpcon2017 LT01 MDDMasahiko Jinno
9.2K views58 slides
PHP拡張をPECLに登録してわかったこと by
PHP拡張をPECLに登録してわかったことPHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったことYoshio Hanawa
7.5K views19 slides

Viewers also liked(17)

著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則 by Hiroshi Tokumaru
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
Hiroshi Tokumaru71.5K views
片手間MySQLチューニング戦略 by yoku0825
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
yoku082521.2K views
LancersのCakePHPバージョンアップ施策について by Shigemasa Akiyama
LancersのCakePHPバージョンアップ施策についてLancersのCakePHPバージョンアップ施策について
LancersのCakePHPバージョンアップ施策について
Shigemasa Akiyama4.6K views
OPcache の最適化器の今 by y-uti
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今
y-uti10.2K views
PHP拡張をPECLに登録してわかったこと by Yoshio Hanawa
PHP拡張をPECLに登録してわかったことPHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったこと
Yoshio Hanawa7.5K views
PHPとシグナル、その裏側 by do_aki
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
do_aki9.6K views
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜 by Katsuhiro Miura
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
Katsuhiro Miura6.5K views
Apache sparkとapache cassandraで行うテキスト解析 by Kazutaka Tomita
Apache sparkとapache cassandraで行うテキスト解析Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析
Kazutaka Tomita1.1K views
モバイルするハニーポット無線LANアクセスポイント by Naoya Kaneko
モバイルするハニーポット無線LANアクセスポイントモバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイント
Naoya Kaneko3.9K views
PostgreSQLレプリケーション(pgcon17j_t4) by Kosuke Kida
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
Kosuke Kida7.4K views
Docker最新動向2017秋+セキュリティの落とし穴 by Masahito Zembutsu
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
Masahito Zembutsu11.3K views
ネットワーク自動化ツール紹介(Ansible・NAPALM編) by akira6592
ネットワーク自動化ツール紹介(Ansible・NAPALM編)ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
akira659211.5K views
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化 by 真乙 九龍
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
真乙 九龍3.9K views
PGroonga 2 - PostgreSQLでの全文検索の決定版 by Kouhei Sutou
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版
Kouhei Sutou5.2K views
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム by Kouhei Sutou
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
Kouhei Sutou1.8K views

Similar to PHP Version Up と AWS への移行

インフラエンジニアの楽しい標準化活動 by
インフラエンジニアの楽しい標準化活動インフラエンジニアの楽しい標準化活動
インフラエンジニアの楽しい標準化活動gree_tech
2.1K views13 slides
おすすめインフラ! for スタートアップ by
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
1.6K views30 slides
ニュースアプリで起きた不具合から学んだ 最適への一歩 by
ニュースアプリで起きた不具合から学んだ 最適への一歩ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩Yahoo!デベロッパーネットワーク
4.5K views45 slides
GREE-Fsite by
GREE-FsiteGREE-Fsite
GREE-Fsitetechnicaldesign
35.1K views56 slides
ネットワークエンジニアがWeb開発をやってみて思ったこと by
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことgree_tech
1.4K views29 slides
第一回☆GREE AI Programming ContestでTensorFlow by
第一回☆GREE AI Programming ContestでTensorFlow第一回☆GREE AI Programming ContestでTensorFlow
第一回☆GREE AI Programming ContestでTensorFlowgree_tech
1.2K views24 slides

Similar to PHP Version Up と AWS への移行(20)

インフラエンジニアの楽しい標準化活動 by gree_tech
インフラエンジニアの楽しい標準化活動インフラエンジニアの楽しい標準化活動
インフラエンジニアの楽しい標準化活動
gree_tech2.1K views
おすすめインフラ! for スタートアップ by Koichiro Sumi
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi1.6K views
ネットワークエンジニアがWeb開発をやってみて思ったこと by gree_tech
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったこと
gree_tech1.4K views
第一回☆GREE AI Programming ContestでTensorFlow by gree_tech
第一回☆GREE AI Programming ContestでTensorFlow第一回☆GREE AI Programming ContestでTensorFlow
第一回☆GREE AI Programming ContestでTensorFlow
gree_tech1.2K views
DeNAの最新のマスタデータ管理システム Oyakata の全容 by sairoutine
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine3.6K views
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕) by Developers Summit
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
Developers Summit24.9K views
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development by Go2GroupJapan
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Developmentアジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
Go2GroupJapan575 views
AndApp開発における全て #denatechcon by DeNA
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
DeNA2.7K views
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps by Google Cloud Platform - Japan
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
私たちがGCPを使い始めた本当の理由 by gree_tech
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
gree_tech2.2K views
ゼロからのプログラミングRails講座 Codeanywhere版 by DIVE INTO CODE Corp.
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.10.7K views
[141004] cedec 2014 참관기 & 강연 리뷰 #1 by MinGeun Park
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
MinGeun Park1.8K views
DataEngConf NYC’18 セッションサマリー #2 by gree_tech
DataEngConf NYC’18 セッションサマリー #2DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2
gree_tech3.6K views
Unification of the middle scale services by Nuxt.js by HajimeSasanuma
Unification of the middle scale services by Nuxt.jsUnification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.js
HajimeSasanuma2.6K views
Dangerでpull requestレビューの指摘事項を減らす by Shunsuke Maeda
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda4.6K views

More from gree_tech

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
725 views36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介gree_tech
229 views13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表gree_tech
1K views18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
1.9K views84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
347 views116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
682 views31 slides

More from gree_tech(20)

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech725 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech682 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech596 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
gree_tech305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
gree_tech572 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
gree_tech308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
gree_tech432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech693 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech396 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech751 views

Recently uploaded

how query cost affects search behavior translated in JP by
how query cost affects search behavior translated in JPhow query cost affects search behavior translated in JP
how query cost affects search behavior translated in JPTobioka Ken
9 views16 slides
AIで始めるRustプログラミング #SolDevHub by
AIで始めるRustプログラミング #SolDevHubAIで始めるRustプログラミング #SolDevHub
AIで始めるRustプログラミング #SolDevHubK Kinzal
20 views25 slides
図解で理解するvetKD by
図解で理解するvetKD図解で理解するvetKD
図解で理解するvetKDryoo toku
84 views22 slides
lt.pptx by
lt.pptxlt.pptx
lt.pptxtomochamarika
51 views13 slides
3Dプリンタでロボット作るよ#1_黎明編 by
3Dプリンタでロボット作るよ#1_黎明編3Dプリンタでロボット作るよ#1_黎明編
3Dプリンタでロボット作るよ#1_黎明編Yoshihiro Shibata
20 views7 slides
SSH超入門 by
SSH超入門SSH超入門
SSH超入門Toru Miyahara
194 views21 slides

Recently uploaded(8)

how query cost affects search behavior translated in JP by Tobioka Ken
how query cost affects search behavior translated in JPhow query cost affects search behavior translated in JP
how query cost affects search behavior translated in JP
Tobioka Ken9 views
AIで始めるRustプログラミング #SolDevHub by K Kinzal
AIで始めるRustプログラミング #SolDevHubAIで始めるRustプログラミング #SolDevHub
AIで始めるRustプログラミング #SolDevHub
K Kinzal20 views
図解で理解するvetKD by ryoo toku
図解で理解するvetKD図解で理解するvetKD
図解で理解するvetKD
ryoo toku84 views
3Dプリンタでロボット作るよ#1_黎明編 by Yoshihiro Shibata
3Dプリンタでロボット作るよ#1_黎明編3Dプリンタでロボット作るよ#1_黎明編
3Dプリンタでロボット作るよ#1_黎明編
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self Introduction
NajahMatsuo7 views

PHP Version Up と AWS への移行

  • 1. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. PHP Version Up と AWS に移行した話 グリー株式会社 吉本 将宣
  • 2. Copyright © GREE, Inc. All Rights Reserved. 自己紹介 ● 吉本 将宣 ● 2014年 グリー Join ● インフラ/リードエンジニア ○ 本職は NoSQL のはずだが、、、 ○ 何でもやるスタイル ■ PM、フロント開発・コードレビュー... ■ 一時は Manager も ... ● 10月からメディア事業へ ○ iOS/Android アプリの開発メイン
  • 3. Copyright © GREE, Inc. All Rights Reserved. 今日お話しすること ● PHP Version Up した話 ● AWS に移行した話
  • 4. Copyright © GREE, Inc. All Rights Reserved. 今日お話しすること ● PHP Version Up した話 ● レガシーと戦って僕たちが手に入れた武器 ● AWS に移行した話 ● 僕たちが手に入れた武器で次にやったこと
  • 5. Copyright © GREE, Inc. All Rights Reserved. グリーのサービス SNS & ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など
  • 6. Copyright © GREE, Inc. All Rights Reserved. Memcached / Redis / Flare MySQL Apache + PHP 基本システム構成 アプライアンス ロードバランサ + Apache Proxy ロードバランサ層 アプリケーション層 データベース層
  • 7. Copyright © GREE, Inc. All Rights Reserved. 2年前の僕たちの環境 SNS & ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など オンプレ AWS
  • 8. Copyright © GREE, Inc. All Rights Reserved. 2年前の僕たちの環境 SNS & ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など オンプレ AWS OS : Ubuntu Trusty PHP : 5.5 以上 MySQL : 5.6 以上
  • 9. Copyright © GREE, Inc. All Rights Reserved. 2年前の僕たちの環境 SNS & ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など オンプレ AWS OS : Debian Lenny PHP : 5.2 MySQL : 5.5
  • 10. Copyright © GREE, Inc. All Rights Reserved. なぜオンプレがレガシー化したのか ● 新規 OS への対応遅れ ○ 数千台規模のサーバの入替はそれだけで長期に渡る ● 息の長いサービスは密結合化 ○ 古くからあるサービス ■ GREE SNS やガラケー時代からの内製ブラウザゲーム ○ プラットフォームやゲーム間で require ■ プラットフォームが出来る前のコード ■ API 化されていない部分 ■ 同じサーバで動いていた ● API 呼び出しより MySQL 直アクセスの方が速かった ● メンテナンスが入れづらい ○ ゲームプラットフォームの修正はパートナー様にも影響する ● 肥大化したコード
  • 11. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. 抜け出せないレガシーの沼
  • 12. Copyright © GREE, Inc. All Rights Reserved. しかし限界はある ● レスポンス速度の改善も限界 ○ 2年前の時点でも周回遅れの PHP 5.2 ● OS が古いことによるミドルウェアのメンテナンスコスト増大 ○ セキュリティパッチは独自で対応 ○ AWS は ubuntu trusty なので、同じミドルウェアで複数バージョンを メンテナンスしないといけない 意を決して内製のブラウザゲームからバージョンアップを始めた
  • 13. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. 効率よく&スピード重視で 進めないといけない
  • 14. Copyright © GREE, Inc. All Rights Reserved. どうしたのか ● 少人数によるプロトタイピング ● ノウハウの共有 ● 修正方針と QA のスケジューリング
  • 15. Copyright © GREE, Inc. All Rights Reserved. 少人数によるプロトタイピング ● インフラチームを中心に各ゲーム・プラットフォームから数名で対応 ● ゲームや SNS 機能が最低限動くところまで一気にやった ○ 各サービス共通のコードを完成させる ○ よくある syntax error の修正方法を決める ■ 引数の変更など (regex_replace, etc… ● ミドルウェア・インフラ面の問題も先取り ○ 画像ライブラリ・Apache などの設定や問題の確認 ● 開発環境を統一 ○ chef を使って本番と共通の cookbook を作成 ○
  • 16. Copyright © GREE, Inc. All Rights Reserved. ノウハウ共有 ● 全サービスで共通のエラーレポートフローを定義 ○ ゲーム内で閉じない不具合は全員に共有 ○ どのように対応したかも一覧で分かるように ● チームや領域によらずに修正 ○ インフラ・ゲーム・プラットフォームのチームに関係なく pull request ○ レビューやテストは各サービスのエンジニアが対応することで品質を担保 ● インフラチームが舵を取って積極的にノウハウを共有 ○ 全社で共通となっているインフラチームが中心になることで情報を集約
  • 17. Copyright © GREE, Inc. All Rights Reserved. 修正方針と QA のスケジューリング ● 修正方針 ○ PHP5.2 と PHP5.5 両方で必ず動くように修正する ● QA とリリースまでのスケジュール調整 ○ 先行して一つのゲームで QA を実施 ■ 密結合なので、プラットフォームなどの不具合も見つることができた ■ 画像合成といったセンシティブで時間が掛かる問題も早めに検知できた ○ 共通の不具合を修正後は並行して QA を実施 ■ 定常的に実施しているイベント等の QA と同時に実施 ● PHP5.2 と PHP5.5 の両方の環境で QA すると時間が掛かりすぎる ■ 事前に発生しやすい問題は把握・対応できているので不具合は少なめ ○ プラットフォームは定常 QA で確認しつつ徐々にリリース ○ リリースは一台に投入して2週間以上様子を見てから ■ 負荷に問題がないか
  • 18. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. 決してスマートとは 言えないやり方だが...
  • 19. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. どうにか難題を乗り越えて 僕たちが勝ち得たものとは
  • 20. Copyright © GREE, Inc. All Rights Reserved. 負荷の改善 ● 50%ほど load avergae が改善された ○ Web サーバを 40% 削減 PHP 5.2 PHP 5.5
  • 21. Copyright © GREE, Inc. All Rights Reserved. レガシーからの脱却 ● バージョンアップ前 (2015年時点) ○ Trusty & PHP5.5:全体の 20% ● バージョンアップ後 (2016年時点) ○ Trusty & PHP5.5:全体の 90% ■ Lenny & PHP5.2 で残ったもの ● サーバ管理システム等 ● オンプレのネイティブゲーム
  • 22. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. そんな数字よりも。。。
  • 23. Copyright © GREE, Inc. All Rights Reserved. 僕たちが真に勝ち得たもの ● 互いのシステムへの相互理解 ○ サーバサイドエンジニアのインフラへの理解 ○ インフラエンジニアのアプリケーションへの理解 ● 組織を超えた強力なチームワーク ○ 一つの目標に向かって一丸となって進む力 ○ 自分の領域に囚われずに協力し合う信頼関係
  • 24. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. AWS に行こう
  • 25. Copyright © GREE, Inc. All Rights Reserved. AWS 移行したモチベーション システム観点では。。。 ● オンプレサーバの老朽化 ○ 2017年には EOSL を迎えてしまう ○ HDDおよびメモリの故障率の増加 ○ パフォーマンスの限界
  • 26. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. でも、それだけじゃない
  • 27. Copyright © GREE, Inc. All Rights Reserved. AWS 移行したモチベーション ● 一丸となってやれば何でもできる自信 ○ 10年来の超大規模レガシーから抜け出した自信 ● 次のチャレンジへの意欲向上 ○ PHP7 ○ 疎結合化 ○ etc...
  • 28. Copyright © GREE, Inc. All Rights Reserved. AWS 移行したモチベーション ● やりたいことは非常に多い ● でも、さすがに一気に全部やるのは怖いので ● AWS 移行しつつ、並行して PHP7 の準備をしました
  • 29. Copyright © GREE, Inc. All Rights Reserved. 1年でゲームを全部 AWS に移行した ● 2016年 SNS & ゲームプラットフォーム ブラウザゲーム & ネイティブゲーム 広告 メディア事業など オンプレ AWS
  • 30. Copyright © GREE, Inc. All Rights Reserved. 1年でゲームを全部 AWS に移行した SNS & ゲームプラットフォーム ブラウザゲーム & スマホゲーム 広告 メディア事業など オンプレ AWS ● 2017年
  • 31. Copyright © GREE, Inc. All Rights Reserved. 移行したサービス ● ブラウザゲーム ○ 密結合なものも含めて全て ● スマホ向けネイティブゲーム ○ ブラウザゲームで得たノウハウを活かして PHP Version Up も同時に ○ ネイティブ向けのゲームプラットフォームも ● ゲーム以外も ○ コーポレート、広告・メディア事業系のサイト 20を超えるサービス、数千台規模のサーバを AWS に移行
  • 32. Copyright © GREE, Inc. All Rights Reserved. どうやって移行したか? ● Direct Connect 使った ○ 事前に MySQL のレプリカを AWS 上に作る ■ AWS 側のレプリカを一台、オンプレのサービスに入れて クエリ検証やレスポンス速度等を確認 ● 密結合な内製ブラウザゲームの場合、プラットフォームがオンプレに残るので AWS からオンプレへのレスポンス速度も重要 ○ テスト用の別ドメインを AWS 側につけてテスト実施 ■ AWS からオンプレの本番 DB にアクセスして確認 ● 移行日の深夜メンテで切替 ○ MySQL マスタ切替 & DNS 切替 ○ 最終的な動作チェック
  • 33. Copyright © GREE, Inc. All Rights Reserved. 移行して良かったこと ● サーバ費用の削減 ○ 40% 近い削減を達成 ■ ハードウェア性能向上による負荷低減 ● サーバリソースの在庫調整が不要に ○ オンプレではサーバ増加における調達のために在庫が必要だった ● PHP5.5 に出来ていなかったサービスも完全移行 ○ オンプレに残っていたネイティブゲーム等
  • 34. Copyright © GREE, Inc. All Rights Reserved. AWS 移行で起きた問題 ● 深夜メンテを入れて移行できなかったのは最初の一回だけ ○ 原因は疎結合化を同時にやろうとしたことによるテスト不足 ● メンテ当日の準備不足 ○ テスト用端末がログインできないプロダクトがあり 当日慌てて対応した 大きなトラブルはほとんどなかった
  • 35. Copyright © GREE, Inc. All Rights Reserved. なぜ一年で数千台規模を移行できたのか ● 普通に PDCA 回した ○ 最初の移行ミスでプロジェクト並行する問題が把握できた ○ 事前にやる作業や修正を次の移行プロダクトに共有した ○ 負荷予測の精度も移行を経るごとに高くなった ● 円滑なコミュニケーション ○ PHPバージョンアップした時からの信頼関係 ○ 相互に仕組みを理解しているため話が早く 問題を早く検知しやすい ■ 認識齟齬などに問題も少なかった
  • 36. Copyright © GREE, Inc. All Rights Reserved. 今後のチャレンジ ● PHP7 on Xenial ○ 一部サービスでは導入を開始 ■ memcached への connection 数が改善 ■ cpu 負荷も半分程度に ● HTTP2 を使った通信の高速化 ● オンプレに残ったサービスのハイブリッドクラウド
  • 37. Copyright © GREE, Inc. All Rights Reserved. まとめ ● 強靭な意志でレガシーから抜け出せる ● 勝ち得たチームワークは次のチャレンジの大きな財産! ● パフォーマンスの改善はその副産物
  • 38. Copyright © GREE, Inc. All Rights Reserved.Copyright © GREE, Inc. All Rights Reserved. 技術負債は 人的資源に変える 大きなチャンス!