关于可扩展性:规划可扩展的 Web 应用程序开发

Planning Scalable Web Application Development

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


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

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

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

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

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

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

分享你最终选择了什么以及为什么你的情况 - 这也有助于我们向你学习!


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

显然,事情变得杂乱无章是有一定程度的复杂性,但使用正确的工具来完成工作a€"即使这意味着不同的工具用于不同的工作a€"可以简化事情。


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

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

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

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


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

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

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


    视情况而定。

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

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

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

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