ruby - SOA 和 API - API 是端点服务还是需要不同的服务?

原文 标签 ruby web-services api rest soa

我正在设计一个 RESTful 面向服务的架构 Web 应用程序,以使其尽可能地扩展,并将不同类型的服务放在不同的机器上(将资源密集型操作与其他服务分开)。

我还希望用户能够访问他们的数据来制作自己的应用程序。
我不确定是否必须将这些服务设计为向世界开放,因此只需让它们在 Web 域(如 AWS)上监听或创建另一个服务来处理 API 请求。

拥有安全的开放式 Web 服务对我来说很有意义,但它确实给架构本身增加了很多复杂性,因为每个服务都成为必须被同一套件中的其他服务识别(信任)的客户端,就像我一样必须识别试图访问自己数据的 3rd 方应用程序。

这是正确的 SOA 方法吗?我想确定的是,我没有混合错误的概念来设计错误的面向服务的架构。

所有服务都有 crud 接口(interface),因此可以使用 REST 原则对其进行查询。

最佳答案

根据您系统的性质,拥有不安全的 Web 服务可能是可行的,因此它们都可以在没有安全开销的情况下相互通信。要使服务对第 3 方可用,您可以使用 Service Perimeter Guard作为从外部访问服务并在这一层应用安全性的唯一机制。这样做的好处是为您的所有服务提供一致的安全性,但是如果外围受到损害,则可以获得对所有服务的访问。

这种方法可能不适用于所有服务。例如,被认为是“个人 secret ”的信息(例如,家庭住址、紧急联系方式、健康数据等员工数据)需要得到保护,以便未经授权的员工无法访问它。

关于您将不同服务放在不同机器上的评论,这将导致某些机器上的资源利用不足,而另一些机器上的资源可能过度利用。为避免这种情况,请将所有服务部署到所有机器并使用负载均衡器。这将提供更优化的资源使用并简化部署(例如,使用 Chef 或 Puppet),因为所有节点都是相同的。随着资源使用量的增加,您可以简单地添加更多节点。同样,如果资源使用率低,您可以删除节点。

关于您的最后一句话,REST 比 CRUD(例如 HATEOAS)要多得多。

关于ruby - SOA 和 API - API 是端点服务还是需要不同的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761827/

相关文章:

ruby-on-rails - Minitest:在Ruby on Rails中进行测试会产生比我预期更多的断言

ruby - 使用正则表达式查找字符串的一部分

java - 参数最大长度的 Jax RPC Web 服务定义

api - 扩展 Magento REST API

javascript - Kraken.com API : Generate the message signature in Google App Script

ruby-on-rails - mandriva 2011中的错误+ ruby​​错误没有要加载的文件— zlib

ruby - Cocoapods 安装错误 mkmf.rb 找不到 ruby​​ 的头文件

web-services - Tomcat 没有启动我的网络服务

android - org.xmlpull.v1.XmlPullParserException:预期值:START_TAG {http://schemas.xmlsoap.org/soap/envelope/}信封

javascript - 如何使用 React 创建分页