モジュール式である必要がある新しいソフトウェアの基本的なアーキテクチャを計画しています。マルチテナンシーアプリケーションを定義して、すべてのユーザーに対して単一のインスタンスを実行しようとしています。
私が必要としているのは、必要なときに必要な場所でスケーリングできることです。そのため、より多くのリソースを必要とする計算の1つの部分である可能性があるときに、ロードバランサーの背後に複数のアプリケーション(モノリティックアーキテクチャ)を生成するというアイデアは好きではありません。
だから私はサービス指向アーキテクチャについて考えています。それはウェブクライアントや他のサービスとしてのrailsアプリケーションを持ち、仮想的に任意の言語で記述され、railsアプリケーションによってAPIを介してアクセスできます。
また、このAPIをユーザーに公開して、既存のソフトウェアと統合し、これらのサービスを簡単に拡張できるようにしたいと思います。
私はいくつかの特定の質問があります:
- 新しいスタートアップ(1〜5人の従業員)のためにこの種のアーキテクチャを用意するのは良い考えでしょうか?
- APIを使用するAPIリクエスト自体はRPCであるため、RPCを使用する必要はありません。この概念は正しいですか?
- APIの優れた標準は何でしょうか(RESTはリソースへのアクセス方法のみを定義します)?
- 実際には、これらのAPIを顧客に公開するための最良の(=良い)方法は何でしょうか?Web Railsアプリケーション経由ですか?それらをすべて同じドメインで利用できるようにするプロキシを介して直接?APIはRESTfulな方法でアクセスできるため、HTTPリクエストを介してアクセスできます。
- この種のアーキテクチャでは、VPS、クラウド、または専用サーバーを使用する方が安価でしょうか?クラウドは障害耐性があるという性質があるため、私はクラウドが好きです。クラウドは、データの永続性とバックアップについての心配から解放されます(ほぼ100%利用可能なアーキテクチャを構築したいという事実を含む)。
- 他の提案や視点、そしてこれについて考えるための単なる出発点は非常にありがたいです。
私はPython、C / C ++、JS、Perl、その他のplをよく知っており、最近Ruby/Railsから始めました。このコミュニティはサービスの構築に強い志向を持っているように思われるので、これを最後に選択しました。私が気にしているのは(その極端なパフォーマンスの前に)できるだけ早く学び、経験を共有し、学ぶことができる人がいることです。実用的な例を使用します(アーキテクチャに関するものであり、それを実装するPLではないことはわかっていますが、web1またはweb2.0スタイルを念頭に置いて動作している未成熟な環境では誤解しやすいと思います)。
PS私も基本的なアーキテクチャ設計を書く必要がありますが、私が始めることができるテンプレートはありますか?私はそれを私のチームや他の非常に専門的なプロと共有する必要があります。私はそれを完全で理解しやすいものにしたいと思っています。
ここでいくつかの良い提案を読んでください!
ありがとう、アレックス。