【问题标题】:Web framework maintainabilityWeb 框架的可维护性
【发布时间】:2010-10-12 05:57:31
【问题描述】:

希望这是为此网络应用程序选择实现语言的最后一个问题,但在向任何人推销之前,我们想知道您在维护应用程序方面的经验。

我们维护了一个基于 Perl 的 Web 门户(并且后来迁移到了托管解决方案)。

问题在于,我们遇到过更新 Perl 或更新模块的情况,并且由于整个网站是相互连接的,因此很容易成为一场噩梦,因为 CPAN 模块中的一个小改动可能会导致整个网站死掉(这是一个开源门户,我们没有创建它)因为门户中的某些内容非常具体地说明了它将接受什么版本的模块。

有几次,一组无害的安全更新可能会导致网站在很长一段时间内崩溃。

那么,在决定创建一个基于 PHP、Django 或 Ruby on Rails 的 Web 应用程序时,人们能否分享在升级全部或部分框架或语言时需要对网站进行哪些维护?

在尝试为并非您创建的模块/gem 安装安全修复程序时,破坏或故障 Web 应用程序有多“容易”?还是真的不是问题?

【问题讨论】:

    标签: php ruby-on-rails django


    【解决方案1】:

    如果这些天我正在部署一个 python 应用程序,我肯定会查看virtualenv

    来自他们的页面:

    virtualenv 是一个创建工具 隔离的 Python 环境。

    要解决的基本问题是 依赖项和版本之一,以及 间接权限。想象你 有一个需要版本的应用程序 LibFoo 的 1 个,但另一个应用程序 需要版本 2。如何使用 这两个应用程序?如果你 将所有内容安装到 /usr/lib/python2.4/site-packages(或 无论您的平台标准是什么 位置是),很容易最终陷入 你无意中的情况 升级不应该的应用程序 升级。

    或者更一般地说,如果你想怎么办 安装应用程序并离开它 是?如果应用程序有效,任何 更改其库或 这些库的版本可能会破坏 应用程序。

    【讨论】:

      【解决方案2】:

      使用 Django,在点修订之间升级时我从来没有遇到任何问题(我的一些项目从 0.96 左右开始就一直在比特腐烂,所以它们更复杂)。就可重用应用程序而言,它实际上取决于应用程序。不过,总的来说,有足够纪律性来发布他们的应用程序(而不是假设人们会运行开发版本)的开发人员往往擅长确保版本之间的迁移是无痛的。

      【讨论】:

        【解决方案3】:

        只需在您的tests.py 中添加一些regression tests。如果你不测试,那你就做错了......

        【讨论】:

        • 他不是在问如何找出代码是否被破坏,而是在依赖关系发生变化时避免破坏它的最佳方法。
        【解决方案4】:

        Python 的 easy_install 和 distutils 为您提供了一种确定所需版本的可靠方法。使接口失效的意外安全更改很少发生。

        【讨论】:

          猜你喜欢
          • 2011-10-31
          • 1970-01-01
          • 2015-04-25
          • 1970-01-01
          • 1970-01-01
          • 2023-04-06
          • 1970-01-01
          • 2013-07-29
          • 1970-01-01
          相关资源
          最近更新 更多