我正在为需要模块化的新软件规划基本架构。我正在尝试定义一个多租户应用程序,以便为所有用户运行一个实例。
我需要的是可以在需要的时间和地点进行扩展,所以我不喜欢在负载均衡器后面生成多个应用程序(单一架构)的想法,因为它可能是需要更多资源的计算的单个部分。
所以我正在考虑一个面向服务的架构,它将 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我还需要写基本的架构设计,你有什么模板可以让我开始吗?我确实需要与我的团队和其他非常专业的专业人士分享它,我希望它完整且易于理解。
希望在这里阅读一些好的建议!
谢谢,亚历克斯。