创建Web应用程序的体系结构最重要的是什么?可扩展性,可维护性或性能?

时间:2013-07-29 14:23:47

标签: performance web-applications scalability maintainability web-architecture

我目前正要重新设计一个运行的,特殊目的和德语社交网络应用程序。当前版本如此混乱,我们决定从头开始。我不想再遇到所有问题所以我一直在思考和阅读很多:

  1. 可扩展性
  2. 代码的可维护性
  3. 性能
  4. I argued in a blogpost对于我们系统的体系结构,我会使用如上所述的重要性顺序:

    可伸缩性>>可维护性>>性能

    这些结果让我感到惊讶,因为我一直认为性能是创建可扩展系统的关键。

    1. 您对这三个因素的重要性有何看法?
    2. 我还认为,要实现这些目标,需要先进行仔细的规划和设计。你有其他任何必须有建议吗?

2 个答案:

答案 0 :(得分:0)

可扩展性与性能不同。

性能通常以单个请求执行速度来衡量。在我的本地机器上有一个其他用户,我的请求通常非常快,10毫秒或更低。现在将它放在面向外部的具有50,000个并发用户的Internet服务器上,您将看不到接近这种速度的任何地方。

可扩展性是集合中的性能 - 您可以支持大量并发请求的程度,并且系统仍能在合理的时间内做出响应。它可能会成为您心中最关心的问题,因为如果只有少数用户可以在任何特定时间使用它,那么社交网站会有什么用呢?您的用户增长也可能最终呈指数级增长,因此您需要处于可以轻松扩展到更多硬件的位置(在云端或本地数据中心)。

如果是社交网站,我会将这些项目排名为:

可伸缩性>表现>维护

答案 1 :(得分:0)

我认为应该是

  

可维护性>>可伸缩性>>性能

可扩展性/性能

对我来说,可扩展性是一种特殊的性能问题。性能还包括响应时间。但我认为可扩展性与响应时间一样重要。特别是对于社交网络。但是在这种比较中两者都很接近。

一般而言,如果出现性能问题,您最好处理它们。如果您尝试针对您未遇到的问题优化代码,则很可能只会浪费您的时间。您可以做的是模拟页面上的用户流量以强制出现性能问题。

可维护性

对我来说最重要的是可维护性,因为它更贵。 stackoverflow博客上有一篇关于它的帖子,但我现在找不到它。如果您只是购买更好/更多硬件并将其解决问题,那么性能问题大多可以解决。硬件相对便宜并且价格不断下降。编程时间非常昂贵。