ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  CakePHP, PHP 投稿者:kanazawa

CakePHP1.3→2.8移行が完了しました

SREチームの金澤です。

1年以上かけて取り組んできた、CakePHP1.3→2.8バージョンアップが完了しましたので報告いたします。

ランサーズ社のCakePHPの取り組み

ランサーズは現在11年目ですが、永らくバージョンアップをしておらず、PHP 5.3 + CakePHP1.3の環境で稼働していました。

2017/2に全社的にバージョンアップを決断し、その後の取り組みをまとめたものが以下になります。

また、毎週木曜日にCakePHP 3.xクックブック & ソースコードリーディングを開催し、社外からの参加者も交えて40回近く開催することができました。

2017年は開発部全体でのPHP活動が盛り上がっていましたが、
2018年は地道にCakePHP2.8対応を継続した年になりました。

バージョンアップ後の後片付け

ランサーズのCakePHP1.3→2.8移行は、普段の開発を止めず、コントローラー単位で徐々に移行していくアプローチをとりました。

CakePHP1.3→2.8移行は、2017/11から本格的に着手しました。

  • 2018.12.16 PHPカンファレンス2018に登壇しました
    で登壇したときは、コントローラー移行率が99%でした。

    年末には100%に達していたのですが、その後、CakePHP1.3を削除する作業が残っていました。
    工数的にはそれほど大変ではないものの、慎重に作業したため、約1か月かけての作業となりました。

    • 各種ディレクトリの移動
      • tmp
      • logs
      • vendor
      • composer
      • webroot
    • CakePHP1.3側のソースを削除
      • Nginxを変更(CakePHP2.8のindex.phpを直接呼び出す)
      • composer autoloadの参照をCakePHP2.8に移動
      • リリースシステムの設定変更

    レスポンス、サーバー負荷の改善

    CakePHPを2にバージョンアップするとパフォーマンスが改善することを聞いていましたが、
    ピーク時のサーバー台数が2台ほど減りました(ピーク時6~8台→4~5台)

    また、移行完了当日に、サーバーレスポンスの過去最速を記録し、初めて200msを切ることができました。

    App::usesによる遅延ローディング等の効果が出ていると推測しています。
    ※移行中に多少のパフォーマンスチューニングも行ったのでその効果もあるかと思います。

    バージョンアップ資料の共有

    ランサーズのソース(60万行、200コントローラー)を移行した過程で得た、バージョンアップのノウハウを
    GitHubで公開しました。
    https://github.com/LancersDevTeam/PHP_versionup

    今更感はありますが、今後、移行する方の参考になりましたら幸いです。

    今後の予定

    ランサーズのPHP、CakePHPバージョンアップは、以下のフェーズに分けて取り組んでいます。

    Apache + mod_php + PHP 5.3 + CakePHP 1.3
    ↓(第1フェーズ)
    Nginx + PHP-FPM + PHP 5.3 + CakePHP 1.3
    ↓(第2フェーズ)
    Nginx + PHP-FPM + PHP 5.3 + CakePHP 2.8
    ↓(第3フェーズ)
    Nginx + PHP-FPM + PHP 5.6 + CakePHP 2.8
    ↓(第4フェーズ)
    Nginx + PHP-FPM + PHP 5.6 + CakePHP 2.10
    ↓(第5フェーズ)
    Nginx + PHP-FPM + PHP 7.x + CakePHP 2.10

    今回、第2フェーズを終えることができました。

    続きまして、第3フェーズである、PHP5.6化に着手いたします。
    しかしながら、PHP5.6も2018/12でサポートが終了してしまいましたので、なるべく早くPHP7にバージョンアップしたいところです。

    CakePHPのバージョンアップはコントローラー単位で1年以上かけて取り組みましたが、
    第3フェーズ以降は、もっと早く完了させたいと考えています。

  • ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
    ご興味がある方は、以下URLよりご応募ください。


    【中途採用】
    サービスリードエンジニア
    テックリード(アーキテクト)
    フロントエンドエンジニア
    サーバーサイドエンジニア
    業務エンジニア(社内システム基盤・基幹システム)

    【インターン・学生バイト】
    19新卒対象サマーインターン
    エンジニアインターン

    その他採用情報

    関連記事

    PHP5.3→5.6移行が完了しました

    SREチームの金澤です。 PHP5.3→5.6バージョンアップが完了しましたので報告いたします。 CakePHP1.3→2.8バージョンアップが完了してから約2カ月での移行となりました。 2019/03/20にコネヒトさんで開催されたPHP勉強会で、その詳細に …

    [イベント報告] phpcon2017でのPHPクイズ ~答え合わせ編~

    こんにちは、エンジニアの上野です。 先日行われたPHPカンファレンス2017でブースを出展して Lancers Top で使っているシステムを利用したPHPの問題(超難問)を出題しました。問題をかなり難しく作ってしまったため、答えを知りたいという声が会場でちら …

    PHP向け簡易A/Bテストライブラリーを公開しました

    誕生日にSNS上では祝われリアルでは誰にも祝われず翌日にカッとなってMAKAVELICのリュックを買ったプロダクト開発部のakin.です。 今回はプライベートでA/B/n テストを行えるPHP向けライブラリーを公開致しましたのでお知らせいたします。 どんなライ …