对于 SOA,我不会真的说这一定是 Go 或 Ruby/Rails 特定的。如果您只是单独使用 Ruby 或 Go,情况也是如此。它归结为您的应用程序的架构方式。您可以只使用 Ruby 或 Go 来实现 SOA。
面向服务的架构有很多好处。
- 明确的责任分离
- 不同的团队可以处理不同的组件
- 简化的应用程序架构代码
- 可以降低开发和管理成本
- 配置灵活性
- 有针对性的性能监控
- 简化/渐进式软件更新
- 固有的服务文档(godoc 从源代码生成)
- 有针对性的单元测试(服务是否有效?)
- 更好的可扩展性
您可能会在该列表中添加更多好处。
要克服的最大障碍是最初的计划,尤其是第一次。你把事情分解到什么程度?哪些东西应该分开?如果您没有找到合适的平衡点,您最终可能会失去收益。
至于如何设计 SOA 架构,这真的取决于。如果我正在构建一个包含文章和评论的博客服务,你可以使用 API 方法,例如:
SubmitEntry
GetEntry
SearchEntries
GetComments
SubmitComment
总体思路是您的服务完成/完成所有工作。字体端应用程序只是一个 GUI。使用 MVC,您的前端仍然可以有一个模型——它只会进行 API 调用而不是数据库调用。
至于使用什么语言,这真的取决于你。Go 是一门了不起的语言。它的社区发展迅速,但还很年轻。您可能无法找到在 Ruby 中本来可以拥有的包。您可能最终不得不自己编写。话虽如此,Go 有很大的潜力,而且写起来很有趣!
个人经验:我工作的公司曾经使用过PHP。一年前,我们决定需要做出改变,于是决定使用 Go。我们不得不自己编写一些库,但总的来说,这是令人惊叹的一年。我们现在只使用 Go(带有少量 C/C++)。