4

我正在为需要模块化的新软件规划基本架构。我正在尝试定义一个多租户应用程序,以便为所有用户运行一个实例。

我需要的是可以在需要的时间和地点进行扩展,所以我不喜欢在负载均衡器后面生成多个应用程序(单一架构)的想法,因为它可能是需要更多资源的计算的单个部分。

所以我正在考虑一个面向服务的架构,它将 Rails 应用程序作为 Web 客户端和其他服务,可以用任何语言几乎编写并由 Rails 应用程序通过 API 访问。

我还想让这些 API 向用户开放,以便与他们现有的软件集成并轻松扩展这些服务。

我有一些具体的问题:

  • 为新的初创公司(1-5 名员工)采用这种架构会是一个好主意吗?
  • 使用 API 我不需要使用任何 RPC,因为 API 请求本身就是一个 RPC,我对这个概念是否正确?
  • 什么是 API 的好标准(REST 仅定义如何访问资源)?
  • 实际上,向客户公开这些 API 的最佳(= 一种好)方式可能是什么?通过 Web Rails 应用程序?直接通过使它们在同一个域下都可用的代理?API 可以通过 HTTP 请求以 RESTful 方式访问。
  • 使用这种架构,拥有 VPS、云或专用服务器会更便宜吗?我喜欢云,因为它们具有容错性,它可以让我们不必担心数据持久性和备份(包括我们希望构建一个几乎 100% 可用的架构这一事实)。
  • 任何其他建议或观点,以及任何简单的考虑这一点的起点都将不胜感激。

我非常了解 Python、C/C++、JS、Perl 和其他 pl,并且我最近开始使用 Ruby/Rails。我之所以选择最后一个,是因为在我看来,这个社区非常注重构建服务,而我(在极端表现之前)最关心的是能够尽快学习并有人与之分享经验并从中学习,有实际的例子(我知道它是关于一种架构,而不是实现它的 PL,但我认为在仍然使用 web1 或 web2.0 风格的不成熟环境中更容易出错)。

PS我还需要写基本的架构设计,你有什么模板可以让我开始吗?我确实需要与我的团队和其他非常专业的专业人士分享它,我希望它完整且易于理解。

希望在这里阅读一些好的建议!

谢谢,亚历克斯。

4

1 回答 1

1

建筑学

这是一个示例堆栈,我认为它主要执行您想要完成的任务:

  • 一台或多台应用服务器
  • 一台或多台数据库服务器
  • 零个或多个作业服务器

实例

  • 配置厨师
  • 独角兽或乘客
  • Nginx

应用

  • Ruby on Rails
  • 查看Grape以获得简单的 API

更具体的答案

  • 为新的初创公司(1-5 名员工)采用这种架构会是一个好主意吗?

    如果做得正确,这种方法可以非常稳定和健壮。您不想这样做的情况是您将所有时间都花在管理服务器上。你想要启动它,能够快速处理问题实例,并努力让你的应用程序做一些事情。如果你做得对,创建实例可以很简单并且完全自动化。

  • 使用 API 我不需要使用任何 RPC,因为 API 请求本身就是一个 RPC,我对这个概念是否正确?

    是的。

  • 什么是 API 的好标准(REST 仅定义如何访问资源)?

    在这里,我们需要进一步说明您需要如何使用RESTful 设计来实现特定目标。

  • 实际上,向客户公开这些 API 的最佳(= 一种好)方式可能是什么?通过 Web Rails 应用程序?直接通过使它们在同一个域下都可用的代理?API 可以通过 HTTP 请求以 RESTful 方式访问。

    域(或子域)应该可以通过 HTTP 和 RESTful 软件设计访问。它可能会返回 JSON 或其他内容。全取决于你。

  • 使用这种架构,拥有 VPS、云或专用服务器会更便宜吗?我喜欢云,因为它们具有容错性,它可以让我们不必担心数据持久性和备份(包括我们希望构建一个几乎 100% 可用的架构这一事实)。

    你得到你所付出的。我会推荐云服务器。如果您准备“自己动手”,请查看 Heroku 以开始使用,或者查看 Rackspace。或发动机场。

  • 任何其他建议或观点,以及任何简单的考虑这一点的起点都将不胜感激。

    我会尝试使用免费的 Heroku 帐户创建一个测试 API。

于 2012-06-19T05:17:03.310 回答