私の職場では、コア製品であるいくつかの「モジュール」を備えたWebアプリケーションの主要なリファクタリングを計画しています。それが私たちの主な関心事の1つであるため、モジュールは実際にはモジュールではないため、すべてがモノリシックであると引用しました。このアプリケーションはPHPで作成されており、MySQLデータベースにアクセスするためにPearを賢くテンプレート化して使用しています。データベースの独立性についてはあまり関心がありませんが、実装に数か月もかからないのであればいいのですが。
私たちの主な懸念は、無関係な場所でバグが発生し、最も一般的な機能を取得するために依存する健全な共通アーキテクチャがないため、開発時間/コストが指数関数的に増加していることです(各モジュールは基本的に前のモジュールからコピー/貼り付けされます)適応する)。
主にASP.NETMVCで、WebMVCの原則についてある程度の経験があります。私はそれが提供するきれいな分離とテスト容易性が好きです。ただし、ローカルマシンでこれを試すと、アプリは本来よりもはるかに遅くなります。
さて、十分な紹介ですが、質問に移ります:-キャッシングモジュールに依存する必要がありますか?これにより、優れたアーキテクチャが提供するオーバーヘッドのほとんどが削除されますか?APCのようなもの。
- アプリケーションは主に読み取られます。書き込みは主に単一の値です(レコードの単一のフィールドを変更します)。これが得意なPHPのOR/Mはありますか?
- また、柔軟なMVCフレームワークを探しています。Zend、CakePHP、多分Symfonyを知っていますか?
トリッキーな部分は、完全な書き換えを実行できるという贅沢がないことです。現在非常に厄介なコードベースを段階的に改善する必要があります。これは、新しいコードを記述しているとき、またはバグを修正しているときに実行する必要があります。私が本当にやりたいことの1つは、新しいバグを修正する前に回帰テストを作成して、後で再び発生しないようにすることです(これはときどき発生します)。
私が現在検討しているスタックには、次のものが含まれています。
- 選択したMVCフレームワーク
- ロギング(log4php?)
- 選択したOR/M(動的である必要はなく、コード生成も問題ありません)
- 選択したIoCコンテナ
- Smarty Templating、おそらく抽象化されているので、必要に応じて切り替えることができます。
- 選択したオペコードキャッシュ(現在使用していますが、どれを忘れたか、sysadminに問い合わせる必要があります)
私が心配している主なポイントは、PHPでクリーンなコードを作成することのパフォーマンスへの影響です。.NET / Java Webスタックのようなものとは対照的に、解析された言語であるため、インラインコードの抽象化を作成すると(異なるファイルでの分離が義務付けられます)、別のレベルで新しい問題が発生する可能性があります。
注:より適切なタグを思いついた場合は、タグを付け直してください。現在のタグについてはわかりません。