写点什么

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:007994

评论 2 条评论

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

PGAS模型编程语言

星际行者

想了解表格问答,我们先看看TA的前世

华为云开发者联盟

数据库 规范 表格

为什么从蚂蚁离职?base拉胯,高潜也被倒挂,就是酸,忍不了

Java架构师迁哥

你敢信?就是这个Netty的网络框架差点把我整疯了,哭jj

小Q

学习 编程 面试 Netty 网络

架构师 3 期 3 班 -week2- 作业

zbest

作业 week2

linux后台开发必知的linux系统内存知识总结

linux大本营

c++ Linux 后台开发 架构师 内存管理

大企软件系统问题多?归乡名企工程师:解决很简单,分分钟做个新系统

Learun

敏捷开发 快速开发 企业开发 CRM 企业应用

cncf serverless 所有项目全解读

coldTea214

云计算 Serverless 容器 cncf

《迅雷链精品课》第九课:区块链P2P网络

迅雷链

区块链

「云原生上云」后的聚石塔是如何应对 双11 下大规模应用挑战的

阿里巴巴云原生

阿里云 云原生

从零做网站开发:基于Flask和JQuery,实现表格管理平台

华为云开发者联盟

jquery flask 框架

AWS IoT Greengrass设计解析

soolaugust

边缘计算 工业4.0 工业物联网 iiot

精心总结C++智能指针用法详解(完整版)附带视频讲解

ShenDu_Linux

c++ 程序员 指针 智能指针

OPPO技术开放日第六期丨OPPO安全解析“应用与数据安全防护”背后的技术

OPPO安全

OPPO安全

设备常用网管配置举例

架构师 3 期 3 班 -week2- 总结

zbest

总结 week2

中国CRM突围指南

ToB行业头条

CRM

精彩回顾 | 一张图读懂OPPO应用与数据安全防护

OPPO安全

OPPO安全

深入了解进程间通信:System V信号量+共享内存

ShenDu_Linux

Linux 进程 内存管理 通信协议

智能视频监控的发展和优势

anyRTC开发者

安全 监控 音视频 WebRTC RTC

美团T8级架构师剖析Spring Boot源码:日志、缓存、消息、Web服务等

Java架构追梦

Java 源码 架构 微服务 springboot

在K8S/OpenShift上开发应用程序的14种最佳实践

东风微鸣

Kubernetes 最佳实践 k8s最佳实践 openshift

技术应用丨DWS 空间释放(vacuum full) 最佳实践

华为云开发者联盟

内存 存储 磁盘

LeetCode题解:455. 分发饼干,贪心while循环,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

同步与异步,回调与协程

Linux服务器开发

线程 后端 协程 底层应用开发 Linux服务器开发

跟随杠精的视角一起来了解Redis的主从复制

leonsh

redis redis高可用 redis主从

go-zero 之 rest 实战与原理

万俊峰Kevin

RESTful api 网关 microservice Go 语言

区块链技术应用打造智慧物流

13828808769

区块链技术应用开发

测试过程中如何快速定位一个bug

测试人生路

软件测试

Serverless 应用引擎的远程调试和云端联调

阿里巴巴云原生

Java Serverless 云原生 后端

关于物联网规则引擎技术,你想要知道的都在这儿!

华为云开发者联盟

数据 联动 iotda

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