阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

Trivago 从 PHP+Melody 迁移到 Next.js+TypeScript

作者: Vasco Veloso

  • 2022-07-02
  • 本文字数:1085 字

    阅读完需:约 4 分钟

Trivago从PHP+Melody迁移到Next.js+TypeScript

Trivago 的平台是使用 PHP 和他们自主研发的 Melody 框架构建的。Melodys 是由 Trivago 的一小部分工程师负责维护的,这存在连续性风险。由于人手不够,Melody 的文档和示例不可能像期望的那样丰富,这使得其他工程师更难参与并提供支持。后来,Trivago 决定使用 Next.js 在 TypeScript 上重写平台。

 

为了降低开发像 Melody 这样的自有框架所带来的风险,Trivago 工程部门必须在给 Melody 分配更多资源和放弃它之间做出选择。最终,他们决定停止使用 Melody。

 

对企业来说,这样的平台替换可能会有影响收入,因为在重写期间无法引入新功能。2020 年,项目在此类风险降低的情况下开始。

 

另一项风险是,在现有功能移植完成之后,新功能仍被搁置的话,开发团队的积极性就会丧失。因此,一旦新平台足够稳定,团队就需要开始构建新的功能,避免降低团队积极性。

 

开发体验、黑客马拉松成果和市场渗透率是选择新技术栈的决定性因素,团队最终决定采用:Next.js和使用 TypeScript 的Preact。采用应用广泛、有大量社区支持的库,开发人员将受益于更整洁的代码库。

 

在使用新技术设计新平台时,必须做许多架构决策。必须及时、务实地达成协议,以确保项目成功。Trivago 的工程师们使用了一种架构决策记录的形式。按照Tom Bartel的描述,这个过程基于以下几点:


决策文件将所有相关的事实和观点收集和组织起来。

 

决策负责人负责策划决策文件,准备决策会议,并负责达成决策。

 

决策会议上交流和讨论观点,并在最后做出决定。


从这个项目中得出的最重要的一条经验是,团队不应该发展得太快。作者指出,当少数几名工程师一起工作时,试验和处理方法都很容易更改;只有当所有关键决策都做完了,基础稳固了,才能将团队的规模扩大到 5 人以上。这样做可以防止沟通开销、挫败感和精力浪费。

 

既然是重写,新系统就需要实现与现有平台相同的功能。团队通过以 A/B 方式运行两个平台并比较一些指标,如用户互动、创收和搜索类型,以验证正确性。

 

作者补充说,重写还给终端用户带来了好处,新平台加快了应用程序的加载时间。


作者简介

Vasco Veloso 从事软件开发和设计已经有二十多年了。从汇编到 C、C++和 Prolog,再到 Java、Scala 和 Kotlin,在大型和小型机上,从软盘到 SSD,在企业内部和云端,他都经历过,做过,也用过。他把团队团结在一起,开发出精心设计的软件。他还喜欢通过教学来分享知识,并继续设计软件和联网设备。在业余时间,他会探索阿姆斯特丹这座城市。他喜欢摄影,并对航空业非常感兴趣。他曾驾驶过超轻型飞机。他相信,只要保持必要的关注,他就可以继续飞行、到达目的地并享受沿途的风景。

 

原文链接

Trivago’s Journey From PHP+Melody to Next.js and Typescript

2022-07-02 08:007242

评论 2 条评论

发布
用户头像
性能会降低吧, Next.js还不一定有PHP快。
2022-07-02 10:05
回复
Next.js是SSR的前端框架 跟PHP不是一个类型吧
2022-07-11 17:16
回复
没有更多了
发现更多内容

RocketMQ整体架构与基本概念

急需上岸的小谢

8月月更

canvas

Jason199

canvas 8月月更

云服务器基于 SSH 协议实现免密登录

昆吾kw

Linux SSH 云服务器

10道不得不会的Docker面试题

JavaPub

redis Docker

RocketMQ 消息集成:多类型业务消息——定时消息

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

参天生长大模型:昇腾AI如何强壮模型开发与创新之根?

脑极体

超大模型工程化实践打磨,百度智能云发布云原生 AI 2.0 方案

Baidu AICLOUD

资源调度 异构计算 AI加速 GPU容器虚拟化 云原生AI

Thread State 详解

自然

Thread 8月月更

元宇宙社交应用,靠什么吸引用户「为爱发电」?

融云 RongCloud

元宇宙

Kubernetes你不知道的事

CTO技术共享

开源 签约计划第三季 8月月更

机器学习模型验证:被低估的重要一环

澳鹏Appen

人工智能 机器学习 模型开发 模型开发训练 模型验证

开源一夏 | 盘点 GitHub 那些标星超过 20 K 的 Golang 优质开源项目

宇宙之一粟

GitHub 开源 Go 语言 gopher 8月月更

每日一R「03」Borrow 语义与引用

Samson

8月月更 ​Rust

Java System.lineSeparator 方法

HoneyMoose

2022-Java后端工程师面试指南-(计算机网络)

自然

网络 watt network 8月月更

《DevOps围炉夜话》- Pilot - CNCF开源DevOps项目DevStream简介 - feat. PMC成员胡涛

玩转Devop和研发效能DevStream/DevLake

开源 DevOps cncf WLB

风控逻辑利器---规则引擎

转转技术团队

Java 规则引擎 风控 后端、 特征工程

What's new in dubbo-go-pixiu 0.5.1

apache/dubbo-go

dubbogo Dubbo3 Dubbo网关

一次由groovy引起的fullGC问题排查

转转技术团队

【LeetCode】把二叉搜索树转换为累加树Java题解

Albert

LeetCode 8月月更

开源一夏 | 提高代码可重用性,减少重复劳动--手把手带你实现Python自定义模块并上传到pypi,贡献自己创造的轮子为所有人使用,让Python开发更加简单

迷彩

Python 开源 签约计划第三季 8月月更 自定义模块

测试开发【Mock 平台】08 开发:项目管理(四)编辑功能和Component抽离

MegaQi

8月月更

Apache DolphinScheduler 3.0.0 正式版发布!

Apache DolphinScheduler

海豚调度 DolphinScheduler 调度器 版本发布

IFIT的架构与功能

穿过生命散发芬芳

8月月更 IFIT

Kubernetes 计算CPU 使用率

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes 选举机制HA

CTO技术共享

开源 签约计划第三季 8月月更

【C#】WCF和TCP消息通信练习,实现群聊功能

南蓬幽

签约计划第三季 8月月更

MySQL高级指令

武师叔

8月月更

ThreadLocal全面解析(一)

自然

ThreadLocal 8月月更

API服务网关

阿泽🧸

API网关 8月月更

Kubernetes 维护技术分享

CTO技术共享

开源 签约计划第三季 8月月更

Trivago从PHP+Melody迁移到Next.js+TypeScript_语言 & 开发_InfoQ精选文章