Web应用程序中的SOA性能

时间:2015-09-16 17:16:28

标签: django web architecture flask soa

我正在努力解决传统后端(假设Django实例管理所有内容)和面向服务的架构(类似于LinkedIn的网络应用程序)之间的决定。我对SOA的意思是拥有一个完全独立的数据访问接口 - 比方说Ruby + Sinatra - 查询数据库,一个独立的聊天应用程序 - Twisted - 通过其API使用,一个使用这些API来提供服务的Django Web服务器内容等。

我可以看到项目中的所有内容都是通过API模块化和加入的优势:可扩展性,测试等。但是,这不会破坏网站性能吗?我想所有的模块都会通过HTTP请求进行通信,所以这个结构不会给网站中的所有内容增加很多延迟吗?有没有比HTTP更好的替代方案?

其次,关于开发的简易性,这会给我们的开发人员带来多大的复杂性吗?特别是在我们获得MVP的第一阶段。

编辑:我们是由两位开发人员和设计师组成的小团队,但我们没有截止日期,因此如果它带来更多技术价值,我们可以处理一些额外的工作

1 个答案:

答案 0 :(得分:4)

简短的回答,是的,SOA肯定会延迟封装和延迟的可重用性。答案很长,这取决于(就像它一直如此)你如何做。

对您的应用程序影响的延迟程度与您的服务的精细程度成正比。如果您提供非常细粒度的服务,则必须进行数百次连续调用以组合用户体验。如果您提供极其粗粒度的服务,您将无法从服务中获得任何可重用性;因为它们与你的应用程序紧密耦合。

有HTTP的替代方案,但如果您打算使用自定义的东西,您需要问问自己,为什么要使用服务呢?为什么不使用库,完全避开网络层?

您肯定会从API开始为项目增加成本和复杂性。这必须通过API为您提供的灵活性来平衡。您可能会受益于内部结构化API到您的代码库,但只是将它们作为模块调用。或者构建库而不是独立的API。

这很大程度上取决于你的项目有多大。你是一个由1-3个开发团队组成的团队来取得你的MVP吗?或者你是一个拥有20-100个开发人员的企业,所有人都需要找到一种方法来分割项目而不相互踩踏?