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

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新卒対象サマーインターン
    エンジニアインターン

    その他採用情報

    関連記事

    Vagrant上で PHP7 & CakePHP3の開発環境構築

    こんにちは!2017年新卒のnumaheです。 現在インターン期間中なのですが、cakephpを勉強する!ためにvagrantで開発環境を構築しました。「どうせだったら最新のphpとcakephpで作ろうか」という上司の一声もあり、今回はPHP7とCakeph …

    PHP5.6化に向けたCircleCIのアップデート

    SREチームの金澤です。 CakePHP2.8移行が終了し、次のステップとしてPHP5.6化を進めています。 今回はPHP5.6化に向けて行ったCircleCI周りのアップデートについてお話させていただきます。 ※実際のソースは公開したPHP、CakePHPバ …

    PHPカンファレンス福岡 2017に登壇しました

    インフラエンジニアの金澤です。 2017/06/10(土)に、PHPカンファレンス福岡に登壇させていただきました。 今回、30分枠とLT枠(5分)の2枠を採択していただきました。 登壇内容 CakePHP 1.3 + PHP 5.3 → CakePHP 3 + …