规划可扩展的 Web 应用程序开发

Posted

技术标签:

【中文标题】规划可扩展的 Web 应用程序开发【英文标题】:Planning Scalable Web Application Development 【发布时间】:2010-10-26 18:39:46 【问题描述】:

在开始开发可扩展的 Web 应用程序之前应该考虑哪些语言、框架和托管?

【问题讨论】:

【参考方案1】:

最重要的考虑是不要过度设计,以至于它会妨碍构建和发布某些东西。分析瘫痪是生产力、进度和结果的最大障碍。

是的,做一些计划。选择一个框架。完美的框架是不可能找到的,因为它不存在,部分原因是在构建它之前你不知道你需要什么。很有可能,如果你选择了一些东西,总比什么都不选择要好。

是的,请尝试选择灵活、可互操作的工具来满足您的需求。

是的,寻找一个好的内置功能集,你认为自己在接下来的 6 到 18 个月内会做什么。无论如何,试图超越这一点并不现实,因为大多数项目在第一个版本之前都会发生很大变化。

所以,选择你喜欢的或熟悉的。不要随波逐流,做能让你得到最好结果的事情,最快的,经常的。了解您将来可能需要进行更改。因此,无论您现在构建什么,都尝试使用单元测试,以便在需要时进行重构。

如果您正在构建的东西会非常成功,那么拥有它将是一个很大的问题,并且一旦赚钱就很容易工作,因为您将能够获得其他人才来帮助您。

分享您最终选择的内容以及您的情况的原因 - 这也有助于我们向您学习!

【讨论】:

【参考方案2】:

不一定要将自己嫁给一种语言或框架。您网站的某些部分可能比其他部分更适合使用不同的语言和框架。例如,所有 37signals 的网站都基于 Ruby on Rails,但他们最近写了一篇博文,介绍现在如何用 Erlang 编写一个网站的底层技术,因为这样更容易实现并发。

显然,事情会变得杂乱无章,但使用正确的工具来完成工作——即使这意味着不同的工具用于不同的工作——可以简化事情。

【讨论】:

【参考方案3】:

首先是语言,这在很大程度上无关紧要。 php、Java 和 .Net 可能是最大的三个,它们在 Web 上运行着一些最大的站点,所以不要听任何人说其中一个比其他任何一个更合适。

有些人可能还会将 Ruby 和 Django/Python 列入此列表。我没有反对他们,但我不知道有任何大型(比如前 50 个)网站使用它们。

托管注意事项取决于您想开始多低,但基本上顺序是:

    共享; 虚拟专用服务器; 专用。

与任何语言、框架或提供程序相比,可扩展性在很大程度上与您的应用程序设计有关。高效的数据库架构、高效的 javascript/CSS 交付和使用以及内存缓存都是任何语言或框架的共同问题。

【讨论】:

【参考方案4】:

语言 - 我会推荐一些具有良好框架和良好测试库的东西,例如 Perl 或 Java。

框架——这取决于你打算做什么。如果您从不允许 FastCGI 的主机开始,最好避免使用 Catalyst 或 Rails 等框架。这就是我喜欢 CGI::Application(主要是 Perl,但也移植到其他语言)的原因——它可以作为 CGI、FastCGI 或 mod_perl 运行。对于开发,它可以从它自己的 Web 服务器上运行。

托管 - 没有什么比拥有服务器更好的了。它可以是您自己的服务器、租用的服务器或虚拟服务器。但是您可以从最便宜的托管开始,当您需要更多时,您应该能够负担得起。

【讨论】:

Ruby on Rails 不需要 FastCGI,所以我不确定为什么 FastCGI 支持在那里相关。【参考方案5】:

视情况而定。

首先查看您的需求(功能性或用户定义的)(非功能性 - 描述您所需系统的方面link text)

接下来,我将阐明拥有可扩展的 Web 应用程序意味着什么。将其定义为可以明确测试的测试用例(必须支持 X 页面浏览量/秒,响应时间

一旦我有了这些部分,我会看看我的开发团队可以支持哪些类型的技能(对于初始项目和正在进行的维护)。然后找到一些使用类似语言或框架的野外应用程序案例研究。如果其他人已经制作了特定的语言/框架规模,那么您也很有可能也可以。

最后出去寻找一些支持您选择的语言、框架和要求的托管服务提供商。

【讨论】:

以上是关于规划可扩展的 Web 应用程序开发的主要内容,如果未能解决你的问题,请参考以下文章

程序扩展

网站建设之项目实战

10个适合web前端开发的node.js框架

设计可扩展的基于 Web 的应用程序的关键因素

使用express.js框架一步步实现基本应用以及构建可扩展的web应用

大型、可扩展和可维护的 Web 应用程序中的 ORM 或 SQL?