コネヒト開発者ブログコネヒト開発者ブログコネヒト開発者ブログ2022-03-25既存プロダクトのCakePHPのアップグレード戦略CakePHPTweet既存プロダクトのCakePHPのアップグレード戦略こんにちは。サーバーサイドエンジニアをやっている西中です。花粉症に悩まされているので最近空気清浄機を購入しました。こころなしか症状が緩和している気がしています。前回はCakePHP4.3にアップグレードする際に躓きがちなphpunitの変更ポイントをいくつか紹介させていただきました。実はこのCakePHPのアップグレード対応は段階的に行っていました。私が携わっているこのプロダクトは2018年11月にリリースされました。リリースした時点ではCakePHPのバージョンは3.6でした。CakePHP3.xからCakePHP4に上げてしまうとアップグレード対応の差分が大きくなってしまい、対応に時間がかかってしまうという問題があるため、段階的にアップグレード対応しようという判断になりました。話が逸れてしまいますが、弊社では各開発チームごとにスクラムを組んでアジャイル開発を行っています。アジャイル開発と言っても実際の運用はチームごとに異なりますが、当プロダクトでは1スプリントの中で何度もリリースすることがあります。GitHubフローにおけるブランチ開発また、弊社ではGitHubフローに沿って開発を行っています。このアップグレード対応という「保守対応」と、アウトカムを支えるための「施策運用対応」を並行で進めることになるため、ブランチ運用としてはアップグレード対応用のFeatureブランチとそれぞれの試作用のFeatureブランチが必要になってきます。施策運用対応のためのブランチは都度都度mainブランチにマージされていくため、保守対応のためのブランチとの差分が増えていき、定期的にmainブランチを取り込みアップグレード版に合わせた形に都度都度修正する必要が出てきます。(最新のパッチを保守対応用ブランチに適用させていくバックポート対応のイメージです)この都度都度修正の対応が大きめの施策になればなるほどCakePHPのバージョンの差異に合わせた修正の規模が大きくなってしまう問題もあり、その分工数が余計にかかってしまいます。これらの事情から、保守対応ブランチをmainブランチへマージするまでの時間を短くするために、あえて段階的にアップグレード対応を行うということになったのです。Ahead)でも、2.xから3.0.0にアップグレードしたときに変更量が多くて大変だったということが述べられています。実際にサービス提供しているプロダクトの場合、安全に倒すためにも段階的なリリースを計画するのが良さそうですね。CakePHP3.6から3.10へまず、CakePHPのバージョンを3.6からCakePHP3.xの最新のバージョンである3.10にアップグレードしました。実はこの3.6から3.10にアップグレードする際の変更量が一番多かったのではないのかと思っています。大きな影響が受けたのがテストのFixture周りです。Caseで記述する必要があります。アンダースコアー形式のフィクスチャー名を使用することは非推奨です。代わりにキャメルケース形式の名前を使用してください。'app.CountryLanguages',];ロジックの変更対応ではないので、一つ一つ対応していけば良いのですが、テストケースの数が多ければその分対応する場所も多くなってしまいます。変更量が多いということはテストファイルによって、ある程度テストの網羅性が担保されているとも考えられるので、この変更は喜んで進めていきましょう。さいごにどこの会社・プロダクトでも保守対応は置いてけぼりになりがちになってしまい、フレームワークのバージョンが置いていかれてしまうことが多いと思います。セキュリティパッチが当てられたりと、フレームワーク側で対応が進められている中で、古いバージョンのまま放置しておくとセキュリティリスクも上がってしまいます。10:00Tweet関連記事2023-03-31PHP8.1アップデートまでの道のりこんにちは。コネヒトでバックエンドエンジニアをしております@...2022-03-22PHPStanを0.11から1.4へメジャーアップデートした際の知見こんにちは!webエンジニアの高谷です。弊社ではCakePHPなどの...2021-12-10CakePHP3から4へのバージョンアップ時に困ったキャッシュ周りの話こんにちは。バックエンドエンジニアのTOCです。このエントリ...2020-07-07CakePHP4.1.0がリリースされたので変更点を追ってみるこんにちは。CTOの@itoshoです。最近stand.fmをはじめたので、...2019-08-14社内ツールをCakePHP4でつくりましたこんにちは。CTOの@itoshoです。(2)書いたメンバーid:taxa_programid:katsutomu0124id:sasashuuuid:NahomiTakahashiid:toc8id:yoshitaka465id:yanamuraid:ryoutakaya3623id:azuki_mihomihoid:takflifeid:nagaisid:aboy_perryid:laugh_kid:connehito-mkashiwagiid:tommy_kwid:itosho525id:su-kun1899id:ohayoukenchanid:satoshieid:plane25id:connehitoid:fortkleお問い合わせコネヒト株式会社Wantedly引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。