前書き
レガシーモノリスの操作について話すようによく言われます。マイクロサービスアーキテクチャについては多くの話題がありますが、モノリシックアプリケーションで何年にもわたって成長した後、プロジェクトがそれに到達することはめったに言及されていません。ライブソリューションのアーキテクチャを変更するには、いくつかの段階を経る必要があります。著者は、本格的なマルチテナンシーサービス指向のRESTアーキテクチャと、リポジトリ内で10年間コミットされた巨大なモノリスの両方で、さまざまなプロジェクトに取り組んできました。この記事では、ダークサイド、レガシーコード、およびモノリシックPHPアプリケーションの問題に対する実用的なソリューションについて説明します。
レガシーの出現の理由
レガシーコードには2つの主な理由があります。
最初の理由は、オペレーティングシステム、言語、ブラウザ、ライブラリの新しいバージョンがリリースされていることです。この問題は、モバイルアプリケーションとスクリプト言語に特に関係があります-プラットフォームの新しいバージョンがリリースされるたびに、古いコードの互換性の問題を修正する必要があります。このプロセスは安定しており、今後数年間は予測可能です。
2つ目は、意図的に作成された技術的債務です。管理は、設計、自動テスト、またはコードレビューを排除することでソフトウェア開発時間を短縮し、サポートされていないサードパーティライブラリを承認し、開発者は複雑なロジックを文書化しません。これは一般的であり、会社の口座の金額に依存しません。悪い上司を叱らないでください。彼らにはそうする正当な理由があります。
製品にはライフサイクルがあり、人気のある製品の需要が高い期間は3〜4か月続きます。競合他社は最高のものをすべてコピーしてさらに良くするため、企業は定期的に新しいアイテムをリリースすることを余儀なくされています。収益を維持するために、新製品と改訂版が数か月ごとにリリースされるため、新サイクルの売上は、サイクルの終わりの製品売上の減少を相殺します。AppleとMarvelはどちらも年に3〜4回のメジャーリリースを行い、OracleはエンタープライズSAAS市場でも四半期ごとのリリースサイクルを持っています。しかし、成功の秘訣はありません。スタートアップの97%は、購入した製品を見つける前に、製品を捨てて新しいことを試しています。したがって、スタートアップでMVPを開発するコストは最小限に抑えられます。
あなたはレガシーに問題を抱えているので、運がいいです!
, , . . , , , . , , , , . , , , , legacy-. - legacy , , .
?
. , Wordpress , 38% -. -, . Wordpress , , .
, - , .
, ?
. .
. API . , .
, .
, . . . , , .
PHP .
Rector , .
Exakat PHP, , , .
Phan , PHP.
, , .
. PHP 5- 7- , .
. , . , , . , , . git- . , , .
- . , - , golang. - , , , . .
, - , , API, . , .
:
,
API , ,
composer ,
, ,
, API.
- . . . API .
, PHP, API. , . “release, control, validation” “DevOps”. . , .
, , , .
- :
- , ;
API - , ;
- , ;
, ;
; : IoC- .
, .
, , , Packeton, git-. , Private Packagist.
composer- IoC-, : , , diff.
composer Symfony Dependency Injection IoC- . . IoC-, . IoC- .
:
) ,
) , .
, .
1. , , , “ ” .
: . : , diff .
:
- , . , , , , . : , , diff.
2. .
PHP (). , , / API (, diff).
: , , diff .
, , , - .
5. .
: , Single Responsibility Principle, . - , , . .
- -, . , , , , . - IoC-.
: , , diff, .
6. .
: $model = new ($modelName . ’Class’);
switch- . , .
IoC- . , . . , .
:
, , lazy.
API Service Subscriber.
API .
- Service Subscriber. , . : , , c , . Diff.
Service-Oriented Architecture
, , , , . - ? .
API. API restful-. - , , , . http- curl.
- :
. ID , API, . .
, . : . , , .
, . - . , . , . - . , , . , .