【问题标题】:What is most important for creating the architecture of a Web Application? Scalability, Maintainability or Perfomance?创建 Web 应用程序架构最重要的是什么?可扩展性、可维护性还是性能?
【发布时间】:2013-07-29 09:23:48
【问题描述】:
我目前正要重新设计一个正在运行的、特殊用途的德语社交网络 Web 应用程序。当前版本太混乱了,我们决定从头开始。我不想再遇到所有的问题,所以我一直在思考和阅读很多关于:
- 可扩展性
- 代码的可维护性
- 性能
I argued in a blogpost 对于我们系统的架构,我将使用上面发布的重要性顺序,意思是:
可扩展性>>可维护性>>性能
这些结果让我有些吃惊,因为我一直认为性能对于创建可扩展系统至关重要。
- 您对这三个因素的重要性有何看法?
- 我还认为,要实现这些目标,需要事先进行仔细的规划和设计。你有什么其他必须有的建议吗?
【问题讨论】:
标签:
performance
web-applications
scalability
maintainability
web-architecture
【解决方案1】:
可扩展性与性能不同。
性能通常以单个请求的执行速度来衡量。在我有其他用户的本地机器上,我的请求通常非常快,10 毫秒或以下。现在将它放在具有 50,000 个并发用户的面向外部的 Internet 服务器上,您将看不到任何接近这样的速度。
可扩展性是总体上的性能——您在支持大量并发请求的同时仍然让系统在合理的时间内做出响应的能力如何。这可能是您最关心的问题,因为如果在任何给定时间只有少数用户可以使用社交网站,那么它有什么用呢?您的用户增长也可能最终呈指数级增长,因此您需要处于可以轻松扩展到更多硬件(在云中或本地数据中心)的位置。
如果它是一个社交网站,我会将这些项目排名为:
可扩展性 > 性能 > 维护
【解决方案2】:
我认为应该是的
可维护性>>可扩展性>>性能
可扩展性/性能
对我来说,可扩展性是一种特殊的性能问题。性能还包括响应时间。但我认为可扩展性与响应时间一样重要。特别是对于社交网络。但在这个比较中,两者有点接近。
一般来说,如果出现性能问题,您最好处理它们。如果您尝试针对您没有遇到的问题优化您的代码,那么您很可能只会浪费您的时间。你可以做的,就是在页面上模拟用户流量,强制出现性能问题。
可维护性
对我来说最重要的是可维护性,因为它更昂贵。 stackoverflow 博客上有一篇关于此的帖子,但我现在找不到。如果您只是购买更好/更多的硬件并将其扔到问题上,那么性能问题基本上可以得到解决。硬件相对便宜,而且价格不断下降。真正昂贵的是程序员的编码时间。