モバイル Web アプリとバックエンド システムの Web サービスの間に配置されるゲートウェイを開発しています。このゲートウェイの目的は、バックエンド Web サービス API の変更から Web アプリを保護し、同時実行の導入、メッセージの変換、バッファリングなどを行うことです。
私の提案するアーキテクチャは次のとおりです。
- PhoneGap を使用したプラットフォームに依存しないモバイル Web アプリ (完了)
- Gateway は、ビジネス ロジックに Scala を使用し、メッセージ パッシングに ZeroMQ を使用する Web サービスです (新規)。
- バックエンドは既存の Web サービス (既存)
ゲートウェイは、メッセージの受け渡し、変換、集約などを純粋に担当し、この時点で状態を保持したり、ユーザー認証を行ったりする必要はありません。一方の側でモバイル アプリと通信する方法を知っている単一のインターフェイスであることを単に担当します。反対側の 1 つまたは複数のサービス。
Scala はこのタイプのアプリケーションに適していると思われるため、開発言語として使用することを強く検討していますが、そのような Scala サービスの正しいアーキテクチャは何でしょうか? Lift や Play などのフレームワークを検討し、単純な「Java」ベースの Web サービスを実行して、Scala を使用してビジネス ロジックを実装することも検討しました。私は物事を可能な限りシンプルに保つことを強く信じています。私は、複雑なセットアップと、決して使用されない可能性のあるフレームワーク内の何千行ものデッド コードを警戒しています。一方で、自分自身を「自分のロール」ソリューションに制限し、多くの作業を作成し、既存のソリューションの一部であった可能性のあるコードを維持する必要があることも理想的ではありません.
考慮すべき点: 私はアーキテクト兼開発者ですが、私の Scala に関する知識は「Programming in Scala, Second Edition」の前半に限られています。また、私の時間は非常に限られています。それでも、私はこれを最初に正しくしたいと思っています。
賢明な紳士や貴婦人が、この種の解決策への洞察と、おそらくすぐに始めるためのリンクを提供してくれることを願っています. 私は本当に早く始める必要がありますが、他の専門家の経験や洞察が、途中で落とし穴を避けるのに役立つことを願っています. 開発環境とツールに関する洞察も役立ちます。私はMacで開発する必要があります(会社のルール)が、Ubuntuサーバーにデプロイします。私は現在、IDE としての Eclipse または Idea のインストールと、ビルド用の scala コンパイラまたは sbt の間でジャグリングを行っています。
アップデート
以下のすべての潜在的な回答に感謝します。私はすべての提案を見て、それらすべてにメリットがあります。問題は、正しい馬に賭けることです。スプレーはおそらく問題に対する最も簡単な解決策ですが、 Finagleも見つけました。それは私の問題に対する素晴らしい解決策のようです。Akka ではなく Netty の上に構築されていることが少し心配です。誰もがそれに問題があると思いますか。ソリューションをできるだけ純粋な Scala のままにしておきたいと思っていましたが、Finagle が最も成熟しているようです。何か案は?