Ruby on rails 针对高规模站点的单技术堆栈与多技术

Ruby on rails 针对高规模站点的单技术堆栈与多技术,ruby-on-rails,django,architecture,frameworks,Ruby On Rails,Django,Architecture,Frameworks,由于旧设计中存在大量的维护问题,我最近来征求意见,提出了重写现有网站的想法 基本上,该公司正在考虑完全重写aprox。90%的网站目前使用内部框架用PHP编写 该公司希望重建后端和前端,以最大限度地减少维护问题,并更容易引入新的tallent,而无需花费数月时间学习架构,他们就可以成为有情感的开发人员 我们已经提出了几种可能的架构,其中一些涉及到使用现有的脚本web框架(如Cake、Django或RoR)重写整个站点,以及一些Java甚至.Net中的编译语言框架。 此外,我们还提出了一些跨技术的

由于旧设计中存在大量的维护问题,我最近来征求意见,提出了重写现有网站的想法

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

该公司希望重建后端和前端,以最大限度地减少维护问题,并更容易引入新的tallent,而无需花费数月时间学习架构,他们就可以成为有情感的开发人员

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

我想知道使用单个技术堆栈(如RoR)与使用两个技术堆栈(如RoR与Scala的交叉,如Twitter现在所做的)和vise与vise的交叉相比有什么好处

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


谢谢

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

  • 平台数量。为了最大限度地减少和管理这项任务的复杂性,您必须尽可能少地使用新技术/平台,以减少精神压力。例如,与PHP+Smarty相比,RoR的一个优势是,使用RoR您不必学习新的表示语言

  • 学习新技术需要团队的努力。如果您现有的团队已经可以使用PHP、Django等,但不能使用RoR,那么您最好重用现有的技能,因为开发人员的精神压力会更小


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

  • 平台数量。为了最大限度地减少和管理这项任务的复杂性,您必须尽可能少地使用新技术/平台,以减少精神压力。例如,与PHP+Smarty相比,RoR的一个优势是,使用RoR您不必学习新的表示语言

  • 学习新技术需要团队的努力。如果您现有的团队已经可以使用PHP、Django等,但不能使用RoR,那么您最好重用现有的技能,因为开发人员的精神压力会更小


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

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

    • 对于一个知名的平台/技术堆栈,更容易找到(好的)员工;市场上会有更多,而且价格不会像技能太少那样昂贵
    • 拆分您的技术意味着您需要更广泛的知识;通过坚持使用单个技术堆栈,您可以专注于它,从而获得更好/更快的结果
    • 人们倾向于关注一个平台/技术堆栈,因此更容易找到技术X的开发人员,而不是技术X、Y和Z
    • 团队成员更容易处理系统的不同部分,因为它们都是用相同的技术编写的——大概是以类似的方式编写的
    • 就整合而言,同一技术堆栈中的项目在一起发挥得更好,跨到不同的堆栈可能会很快变得更难支持
    • 如果您确实希望使用不同的技术,请确保边界是干净的——基于标准或与技术无关的东西,如web服务/JSON调用

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

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

    • 对于一个知名的平台/技术堆栈,更容易找到(好的)员工;市场上会有更多,而且价格不会像技能太少那样昂贵
    • 拆分您的技术意味着您需要更广泛的知识;通过坚持使用单个技术堆栈,您可以专注于它,从而获得更好/更快的结果
    • 人们倾向于关注一个平台/技术堆栈,因此更容易找到技术X的开发人员,而不是技术X、Y和Z
    • 团队成员更容易处理系统的不同部分,因为它们都是用相同的技术编写的——大概是以类似的方式编写的
    • 就整合而言,同一技术堆栈中的项目在一起发挥得更好,跨到不同的堆栈可能会很快变得更难支持
    • 如果你想使用不同的技术,ensur