4

モジュール式である必要がある新しいソフトウェアの基本的なアーキテクチャを計画しています。マルチテナンシーアプリケーションを定義して、すべてのユーザーに対して単一のインスタンスを実行しようとしています。

私が必要としているのは、必要なときに必要な場所でスケーリングできることです。そのため、より多くのリソースを必要とする計算の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私も基本的なアーキテクチャ設計を書く必要がありますが、私が始めることができるテンプレートはありますか?私はそれを私のチームや他の非常に専門的なプロと共有する必要があります。私はそれを完全で理解しやすいものにしたいと思っています。

ここでいくつかの良い提案を読んでください!

ありがとう、アレックス。

4

1 に答える 1

1

建築

これは、あなたが達成しようとしていることをほとんど行うと思うスタックの例です。

集まる

  • 1 つ以上のアプリ サーバー
  • 1 つ以上のデータベース サーバー
  • 0 個以上のジョブ サーバー

インスタンス

  • 構成のためのシェフ
  • ユニコーンまたはパッセンジャー
  • ニンクス

応用

  • ルビー・オン・レール
  • シンプルな API についてはGrapeをご覧ください

より具体的な回答

  • 新しいスタートアップ (従業員 1 ~ 5 人) にこの種のアーキテクチャを導入することは良い考えでしょうか?

    正しく行えば、このアプローチは非常に安定して堅牢になります。やりたくないことは、サーバーの管理にすべての時間を費やしている状況になります。あなたはそれを立ち上げ、問題のインスタンスに迅速に対処できるようになり、アプリケーションを機能させることに取り組みたいと考えています。正しく行えば、インスタンスの作成は簡単になり、完全に自動化されます。

  • API を使用する API 要求自体が RPC であるため、RPC を使用する必要はありません。この概念は正しいですか?

    はい。

  • API の適切な標準は何でしょうか (REST はリソースへのアクセス方法のみを定義します)。

    ここでは、 RESTful 設計を使用して特定の目標を達成する方法について、もう少し明確にする必要があります。

  • これらの API を顧客に公開するための、実質的に最良の (= 良い) 方法は何でしょうか? Web Rails アプリケーション経由ですか? それらすべてを同じドメインで利用できるようにするプロキシ経由で直接ですか? API は RESTful な方法で、つまり HTTP リクエストを介してアクセスできます。

    ドメイン (またはサブドメイン) は、HTTP および RESTful ソフトウェア設計を介してアクセスできる必要があります。JSON などを返す場合があります。それはすべてあなた次第です。

  • この種のアーキテクチャでは、VPS、クラウド、または専用サーバーを使用する方が安価になりますか? 私がクラウドを気に入っているのは、その耐障害性の性質のためです。データの永続性とバックアップに関する心配から解放されます (ほぼ 100% 利用可能なアーキテクチャを構築したいという事実を含めて)。

    あなたはあなたが支払うものを手に入れます。クラウドサーバーをお勧めします。始めるには Heroku をチェックしてください。「独自に開発する」準備ができている場合は、Rackspace をチェックしてください。またはエンジンヤード。

  • 他の提案や視点、およびこれについて考えるための単純な出発点は非常に高く評価されます.

    無料の Heroku アカウントなどを使用してテスト API を作成してみます。

于 2012-06-19T05:17:03.310 に答える