单一技术堆栈与多种技术的高规模站点

时间:2010-10-07 18:43:32

标签: ruby-on-rails django architecture frameworks

由于旧设计中存在大量维护问题,我最近提出过关于重写现有网站的建议。

基本上,该公司正在考虑完全改写aprox。 90%的网站目前使用内部框架用PHP编写。

该公司希望重建后端以及前端的某些方式,以便最大限度地减少维护问题,并且更容易引入新的tallent,无需花费数月时间学习架构在他们成为情感开发者之前。

我们提出了几种可能的架构,其中一些涉及使用现有的脚本Web框架(如Cake,Django或RoR)以及Java或甚至.Net中的一些编译语言框架来重写整个站点。 此外,我们还提出了一些跨技术解决方案 - 例如使用Scala后端在Django中构建的Web应用程序。

我想知道使用单一技术堆栈(例如RoR)的优点是使用两者之间的交叉(例如RoR与Scala,如Twitter现在这样做)和vise vs.。

考虑到这家公司的网站是一个高流量网站,每天超过100万独立访问者,这将在很长一段时间内缓慢转变为新架构(几个月到一年... ...

由于

4 个答案:

答案 0 :(得分:1)

一般来说,我认为任何特定的技术堆栈在性能方面都不比其他任何技术堆栈更好; Facebook运行PHP,我知道Java和.Net也可以很好地扩展。基于你所说的,我现在更担心的是与可维护性相关的问题,而不仅仅是性能和可扩展性。

一般来说,如果可能的话,我会留在一个众所周知的技术堆栈中:

  • 为一个众所周知的平台/技术堆栈找到(好)员工会更容易;市场上会有更多,而且费率不会太高,因为技能太少了。
  • 分割您的技术意味着您需要更广泛的知识;通过坚持使用单一技术堆栈,您可以专注于它,获得更好/更快的结果。
  • 人们倾向于关注一个平台/技术堆栈,因此更容易找到技术X的开发人员,而不是技术X,Y和Z.
  • 团队成员更容易在系统的不同部分工作,因为它们都是用相同的技术编写的 - 可能是以类似的方式。
  • 在整合方面,同一技术堆栈中的项目可以更好地结合在一起,跨越不同的堆栈可能会变得更加困难,更难以支持。
  • 如果您想使用不同的技术,请确保边界清晰 - 基于标准或技术无关,如Web服务/ JSON调用。

答案 1 :(得分:0)

重写整个代码库需要付出巨大的努力和巨大的压力,一开始你最好从初始时间估计加倍或三倍开始。 您可以从两个角度思考您的问题:

  1. 平台数量。为了最大限度地减少和管理这项任务的复杂性,最重要的是通过尽可能减少新技术/平台来减少精神压力。例如,经常被引用的RoR优于PHP + Smarty的优点是,使用RoR,您不必学习新的表示语言。

  2. 学习新技术需要团队合作。如果您现有的团队已经使用PHP,Django等,而不是RoR,那么您可能最好不要重复使用现有技能,因为开发人员的精神压力会更小。

答案 2 :(得分:0)

使用Smalltalk和Seaside可以轻松获得正确的架构和清洁代码,尤其是当您使用Gemstone进行持久化时。在这种规模下,您将不得不与他们讨论许可证成本。你可以从他们用Maglev做的Ruby工作中了解它们。

答案 3 :(得分:0)

单一技术意味着减少移动目标;只要符合要求,更简单的总是更好。因此,您可以根据需要使用尽可能多的技术,但不能超过这些。这项技术并不重要;正确的技术是让您的工作更轻松的技术。所以,问问自己,你目前的痛点是什么,以及这些技术将如何发挥作用。