現在、非常に古く、構造化されておらず、テストされておらず、不安定なERP Windevでコーディングされたデスクトップアプリケーション(Windows上)をサポートしています。日が経つにつれて、ユーザー向けに機能を追加する必要がありますが、ひどいバグ、データの損失、整合性の問題に直面し続けます。アプリケーションの構造が原因で、すべてを書き直さないようにするために実装しようとすると、常に失敗します。
私は、完全に書き直すためにビジネスを閉鎖する必要なしに、新しいよりクリーンなアーキテクチャにゆっくりとマージする方法を見つけることを任されています。テストがなく、コードがテストされることを意図していないため、セーフティネットでカバーされていないため、リファクタリングは非常に危険です。
私たちが抱えているバグのほとんどはデータに関連しており、すべてのエンティティはあらゆる場所からアクセスされるため、データの問題を修正したり、堅牢性を確保したりするのは非常に困難です。 ERPを実行するため、販売するものは堅牢なデータである必要があります。
私が検討している現在のアプローチは、C#の堅牢な構造を持つバックエンドAPIにすべてをゆっくりとマージしています。計画では、すべての新しいデータベースにlocal APIを介してアクセスし、既存のデータをAPIに段階的にマージします。現在のリソースはアプリケーション全体からアクセスされるため、特定のエンティティ/エンドポイントへのすべてのアクセスが完全に移行されるまで、それらの多くはAPIに部分的に移行され、Windevアプリケーションで部分的にハードコードされます。
これに見られる利点は、新しいアプリケーションをゆっくりとマージでき、最終的にはすべてのデータアクセスを一元化できるため、エンドポイントをテストできることです。このアプローチのもう1つの良い点は、少しのビジネスロジックを変換して新しいUIを作成するだけでよいため、書き換えを行うことにした場合、ほとんどの重い作業が行われることです。 APIをホストするだけで決定した場合は、Webにアクセスすることもできます。 APIで新しいデータを渡し、古いデータアクセスをAPIにマージするだけでよいため、クライアントリクエストはブロックされません。
アプリケーションとローカルサーバーの両方をしばらくの間サポートするのは苦痛であり、パフォーマンスに少し影響を与える可能性があるという事実を含むいくつかの問題がありますが、それでも良い面は悪い面を大幅に上回っていると感じていますもの。
私はこのアプローチを採用することで完全に狂気になり、明らかなよりクリーンな解決策が欠けていますか?.
現在使用しているプログラミング言語には、独自のデプロイメントツール、ドキュメントがほとんどない独自のクエリ言語とデータベースが使用されている、完全に閉じたエコシステムが付属していることに注意してください。クリーンなデザインという点では非常に限られています。 OOPの原則を適用することは非常に難しいので、このエコシステムをできるだけ早く回避する必要があります
APIを作成し、現在使用しているインターフェースを介して投稿/取得呼び出しを行うことができます。私はWinDevに精通していませんが、私が提案するものを導入することで、ゆっくりとデカップリングしながら現在のインターフェースを維持することができます。快適になったら、フロントエンドをWebインターフェイスなどに移動できます。