ユーザーが自分のWebサイトに埋め込むことができ、デスクトップチャットクライアントもあるSaaSチャットを開発したいと思います。ライブチャットに似たもの。問題は、私がサーバーまたはデータベースプログラムを開発したことがないということです。また、私はJavaを初めて使用しますが、デスクトップC#プログラミングの経験があります(いくつかのGUIアプリを開発しました)。実際、私は学生で、それほど経験はありません。
サーバー用の優れたスケーラブルなアーキテクチャを設計しようとしていますが、数日間グーグルでウィキペディアを読んだ後、そのような量の情報に圧倒されたように感じます。サーバーにはプレゼンテーションコードが含まれていないためシンプルである必要がありますが、サービスが普及するとトラフィックが増えると予想されるため、非常に高速である必要があります。今のところ、使用するテクノロジーのほとんどを選択しました。これが私のバージョンのサーバーアーキテクチャです。

ここで最大の問題は、ビジネスロジックを含むこの大きな「Jetty」ピースをどのように設計するかです。MVPパターンを使用する必要があることはすでに学びました。しかし、まだいくつかの大きな問題があります。
- データベースを適切に操作する方法は?
DatabaseManagerオブジェクトをデータベースにロードおよび保存できる静的クラスを作成しますか?または、クラスに特別な静的メソッドSaveToDbとメソッドを作成しますか?LoadFromDbそのようなもののためにすでに開発されたフレームワークがなければならないと思います(それはサーバーにとって非常に一般的なタスクでなければなりません) - イベントシステムの設計方法は?「チャットルーム」のすべてのクライアントに新しいメッセージがあることを正しく通知するにはどうすればよいですか?
NewMessageほとんどのクライアントはメモリではなくデータベースにあるため、すべてのクライアントをチャットルームのイベントに簡単にサブスクライブすることはできません。 - メインクラスの簡略化された設計を投稿すると、非常に役立ちます:
Message、、。メッセージがユーザーからチャットルームに送信され、チャットルームはサブスクライブされたユーザーのコレクションです。これは、前の2つの質問に対する一種の答えになります。UserChat room
適切な技術やデザインパターンを教えていただければとても嬉しいです。