今からでも間に合うphp5.5からphp7.2にバージョンアップした話 #phpcon
by
kosa3
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
今からでも間に合う php5.5からphp7.2に バージョンアップした話 菅原 佑太 / kosa3 株式会社ウエディングパーク
Slide 2
Slide 2 text
・結婚・婚約指輪の口コミサイト 「Ringraph」の運用・開発責任者 ・サーバーサイドエンジニア ・Serverless Framework, Nuxt.js勉強中 菅原 佑太 株式会社ウエディングパーク 新卒3年目/チーフエンジニア kosa3
Slide 3
Slide 3 text
・ウエディングパークの姉妹サイト ・2015年 9月からサービススタート(3歳) ・クチコミ数2万件以上 ・php + CodeIgniterで構成
Slide 4
Slide 4 text
それは突然のことでした…
Slide 5
Slide 5 text
「社内で実施している セキュリティチェックで 1つお願いしたいことがあるんだが...」 上司
Slide 6
Slide 6 text
「なんですか?」 ぼく
Slide 7
Slide 7 text
「PHPのバージョンアップを お願いしてもよいかな?」 上司
Slide 8
Slide 8 text
「いつまでにですか?」 ぼく
Slide 9
Slide 9 text
「3ヶ月くらいで…」 上司
Slide 10
Slide 10 text
「ちょ、調査します!!!」 ぼく
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
既に2016年でサポート終了
Slide 13
Slide 13 text
今回あげるバージョンは7.2
Slide 14
Slide 14 text
早速、工数見積もり調査を開始
Slide 15
Slide 15 text
phpの公式ドキュメントから 移行について洗い出し、 該当するか調べる 調査 その1
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
大体つまずきそうなところは分かった!
Slide 18
Slide 18 text
Docker環境を作り、 phpのバージョンをあげて検証してみる 調査 その2
Slide 19
Slide 19 text
$ docker-compose up
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
まぁまぁここまでは想定内… きっと他のミドルやモジュールの 関係だろう
Slide 22
Slide 22 text
調査結果
Slide 23
Slide 23 text
・Codeigniter Framework ・CentOS ・Apache ・node.js ・ruby ・composer ・mod_small_light module ・mcrypt module ・その他モジュールやクライアントライブラリなど PHP以外に必要なバージョンアップ
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
3ヶ月で終わるのこれ…
Slide 26
Slide 26 text
急遽エンジニア2人増員
Slide 27
Slide 27 text
・動くようにする ・ログなどのエラーが出ないようにする ・リファクタリング(コードレビュー負荷軽減、 余計なロジック周りのテストの影響範囲を抑える) やるべきこと やらないこと
Slide 28
Slide 28 text
バージョンアップPJでの課題3選 ・暗号化モジュールmcryptの完全非推奨 ・画像リサイズmod_small_lightのアーキテクチャ変更 ・既存システムの不具合
Slide 29
Slide 29 text
バージョンアップPJでの課題3選 ・暗号化モジュールmcryptの完全非推奨 ・画像リサイズmod_small_lightのアーキテクチャ変更 ・既存システムの不具合
Slide 30
Slide 30 text
・php7.2からmcrypt暗号化モジュールが完全非推奨 => 全てOpenSSLに変更 mcryptの完全非推奨
Slide 31
Slide 31 text
mcryptよりOpenSSLの方が処理速度も良いらしい 【参照】 http://yut.hatenablog.com/entry/20140228/1393543543 mcryptの完全非推奨
Slide 32
Slide 32 text
バージョンアップPJでの課題3選 ・暗号化モジュールmcryptの完全非推奨 ・画像リサイズmod_small_lightのアーキテクチャ変更 ・既存システムの不具合
Slide 33
Slide 33 text
・mod_dimsなど他モジュールで代用 ・コンテンツサーバーを用意 ・serverless でリサイズ関数を作成する 画像リサイズmod_small_lightのアーキテクチャ変更 mod_small_lightの後継者探し (サーバー負荷も抑えたい)
Slide 34
Slide 34 text
・mod_dimsなど他モジュールで代用 ・コンテンツサーバーを用意 ・serverless でリサイズ関数を作成する 画像リサイズmod_small_lightのアーキテクチャ変更 Apache2.4でmod_small_lightの後継者探し (ついでにサーバー負荷も抑えたい) =>姉妹サイトの「DRESPIC」がlambdaでの 画像リサイズを導入していたので横展させてもらう
Slide 35
Slide 35 text
アーキテクチャ
Slide 36
Slide 36 text
バージョンアップPJでの課題3選 ・暗号化モジュールmcryptの完全非推奨 ・画像リサイズmod_small_lightのアーキテクチャ変更 ・既存システムの不具合
Slide 37
Slide 37 text
・全体に及ぶ影響から全範囲を開発・テストする ・意図せぬ不具合を発覚(Sentry, 監査) ・修正 & 報告書 => 工数に入れていない&対応に時間がかかる 既存システムの不具合
Slide 38
Slide 38 text
まとめ
Slide 39
Slide 39 text
よかったこと ・PJ開発ルールの統一 ・ミドルのバージョンをモダンにできた ・WAF、CloudFrontなどアーキテクチャを追加 ・SEO対策、パフォーマンス施策など打てた ・php-cs-fixerを導入し、コードの統一した ・テストコードを導入し、CircleCIで自動テストを運用できた
Slide 40
Slide 40 text
課題だったこと ・全体工数見積もりの算出 ・既存システムの不具合にかかるリソースコスト ・現行システムの運用案件の並行開発
Slide 41
Slide 41 text
最後に
Slide 42
Slide 42 text
タイトなスケジュールでも 事前にやることやらないことを 明確化することで最低限のリソースで 進めることができました (今回だけかも…)
Slide 43
Slide 43 text
でもやっぱり バージョンはこまめにあげましょう
Slide 44
Slide 44 text
ご静聴ありがとうございました