一般的なサービスに単一のプラットフォームを使用するか、それらをモジュール化する必要がありますか?
https://softwareengineering.stackexchange.com/questions/25596
-
30-10-2019 - |
質問
同じ基本機能を持つ一連のWebアプリケーションを設計しています。つまり、彼らはすべて、ウィジェットで作成して操作する方法を知っています。違いは、ターゲットオーディエンスとユーザーがウィジェットとどのように対話するかにあります。基本的に、これらのアプリケーションが独立して開発された場合、 多くの 重複した努力の。
これを簡素化するために、2つの解決策を考えました。各ソリューションの長所と短所に関するフィードバックをすべてお勧めします。
「プラットフォーム」 - アイデアは、独立したサービスレイヤー、LA Webサービスがあるということです。それはWebサービスではありませんが、すべてのアプリケーションのバックエンドです。プラットフォームは、メッセージングまたはオブジェクトのシリアル化を介してアプリケーションと通信します。
私はJavaでプラットフォームを書きたいと思っていますが、その目的は、Rails、Django、Flex、またはJavaの何かなどのWebフレームワークでアプリケーションを書くことができるということです。
プラットフォームはデータベースを抽象化するため、バックエンドとのすべての相互作用はプラットフォームを介して行われます。これに関する潜在的な問題の1つは、プラットフォームを更新するにはすべてのアプリケーションを削除することです。しかし、少なくともすべてのアプリケーションは、バックエンドと一貫して一貫しています。
これが水平方向にカットされている方法が気に入っています。また、アプリケーションは、バックエンドの整理方法を心配するのではなく、フロントエンドに焦点を合わせるだけであることが気に入っています。
「モジュール」 - アイデアは、Javaですべてを書いて、自分の瓶に住むモジュールを開発するという考えです。各モジュールはGuiceモジュールを表し、各アプリケーションには必要なモジュールのみが含まれ、独自のインジェクターを作成します。
このアプローチは、共通のデータベースを共有することを除けば、各アプリケーションが互いに完全に独立しているようになります。したがって、理論的には、プラットフォームについて心配することなく、別の環境にアプリケーションを展開する方がはるかに簡単です。私は1つの言語環境、Javaで立ち往生します。ただし、JrubyとJythonが利用可能になります。だから多分それはそれほど懸念事項ではありません。
また、プラットフォームに影響を与えずにアプリケーションをカスタマイズしやすいと予測しています。 1つの詐欺は、モジュールを更新すると、そのモジュールを使用して各アプリケーションを再展開することをお勧めします。ただし、これは継続的な統合で簡単です。
お時間をいただきありがとうございます。
ゲイリーの答えに関して、私はハイブリッドアプローチをとることにしました。
私は、データとサービスへのWebアプリケーションのアクセスポイントとなるプラットフォームを開発します。その後、プラットフォームをモジュール化しますが、すべてのモジュールは親POMを使用して単一のリポジトリの下に残ります。私はそれらをすべて1つの瓶に保持することができましたが、開発目的でクラスパスの分離を望み、モジュールに別のモジュールに依存することを要求する前に私/他の人に考えさせます。
正しい解決策はありません