写点什么

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

评论 2 条评论

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

关于 docker-compose stop 和 docker-compose start 的误解

liuzhen007

容器 云服务 2月月更

电商直播选品该怎么做?有没有好用的工具?

优秀

带货 直播 低代码开发

Linux系统编程-Shell脚本基本使用(变量、运算符、语句等)

DS小龙哥

shell脚本编写 2月月更

基于云开发的健身房预约小程序平台

CC同学

Linux系统编程-(pthread)线程通信(信号量)

DS小龙哥

信号量 2月月更

Web Components 系列(五)—— 关于 Templates

编程三昧

前端 组件化 2月月更

【架构训练营模块二作业】分析一下微信朋友圈的高性能复杂度

yhjhero

#架构训练营

浅析PHP伪协议在CTF的应用

喀拉峻

网络安全

Apache APISIX 存在改写 X-REAL-IP header 的风险公告(CVE-2022-24112)

API7.ai 技术团队

IP 漏洞 Apache APISIX APISIX 网关

区块链通证经济:通往未来十年财富分配的新格局

CECBC

在线ASCII Banner艺术字生成工具

入门小站

工具

浅谈AI机器学习及实践总结 | 社区征文

张浩_house

机器学习 数据工程 机器学习算法 新春征文

欧拉的奇异之旅·风暴来临与欧拉初诞

脑极体

玉米可流转数字仓单标准的落地 将加速行业的资产数字化进程

CECBC

Linux系统编程-(pthread)线程通信(自旋锁)

DS小龙哥

自旋锁 2月月更

DC系列靶机知识点总结

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

RTE2021 回顾丨实践中的摸爬滚打,AI OPS 落地之路

RTE开发者社区

人工智能 算法 Ops

iOS开发·备战2022金三银四-runtime原理与实践: 消息转发详解篇

iOSer

ios runtime iOS面试 ios开发 金三银四跳槽

验收测试驱动开发后记

Bruce Talk

敏捷 Agile User Story

一手实录!朱广权的AI手语搭档是怎样“养成”的?

百度开发者中心

百度智能云 百度AI

实战领域驱动设计开篇

worry

领域驱动设计 DDD 领域驱动 Domain Driven Design

阿里云张献涛:自主最强DPU神龙的秘诀

阿里云弹性计算

阿里云 神龙架构 DPU

裁员,降薪,大牛出走:AI大退却的始末缘由

脑极体

项目遇到突发问题,如何给上级做汇报?

石云升

项目管理 项目经理 2月月更

Kotlin语法手册(一)

寻找生命中的美好

android kotin

第十节:SpringBoot中的日志管理

入门小站

spring-boot

Web Components 系列—— 详解 Slots

CRMEB

网络安全kali渗透学习 web渗透入门 如何进行基于ping命令的探测

学神来啦

基于 Kyma 的企业级云原生应用的扩展案例分享 | 社区征文

汪子熙

Kubernetes 云原生 新春征文 2月月更 Kyma

区块链+体育发展提速 区块链球员数据系统预计上半年投入使用

CECBC

模块八作业

Geek_e6f7f6

架构实战营

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