2025 年技术指引:让真实案例和经验为开发者开路 了解详情
写点什么

Medium 迁移到基于 React.js 和 GraphQL 的架构

  • 2018-05-20
  • 本文字数:794 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Medium 将他们现有的系统迁移到基于 React.js 和 GraphQL 的新架构。正如 Medium 工程师 Sasha T. Solomon 解释的那样,他们努力的两大目标是在不妨碍新功能开发的前提下,让用户逐渐转向使用新系统。

在对现有使用旧技术的代码库进行迁移时,需要做出一些艰难的决定。除了成本之外,他们必须考虑需要多长时间才能让用户感受到新系统的好处,而通常他们都希望不用等到整个迁移结束才能看到这一结果。此外,他们希望服务在整个过程中保持稳定,并且可以继续演化,如通过修复错误或实现新功能。

正如 Solomon 解释的那样,在他们的平台历经五年的开发之后,Medium 确实已经走到了这一步,

将整个系统迁移到新的工具和框架并非易事。在不影响功能开发的同时做到这一点?更难。

Medium 工程团队设计了一条服务迁移路径,旨在让用户尽快开始使用新系统,同时不妨碍现有系统的演化。

迁移的第一步是用 React.js 重写 Medium 的客户端应用程序,并使用 GraphQL 作为现有 API 的接口层。Medium 使用 Apollo Client 作为 GraphQL 客户端框架。

在这个阶段,旧系统和新系统共存,每个系统服务于一组不同的页面。这种方法的好处是不需要完全重写服务器端,也不会影响旧系统新功能的开发。Medium 团队采取的一项关键决策是使用 protocol buffers 将传统 API 描述为可与 GraphQL 交互的 schema。

根据 Solomon 所述,第二阶段迁移即将开始,服务器端代码将被重构为服务,为 GraphQL 层提供数据,GraphQL 层将使用 Sangria 作为服务器端框架。

预计GraphQL 的使用将带来一个巨大的优势,因为它的更加细化的结构直接映射到更模块化和更简单的服务,这反过来提升了它们的性能。新服务将通过 gRPC 与 GraphQL 服务发生交互,新服务可以与旧服务完全独立开发,旧服务仍然为旧 API 提供支持。

查看英文原文 Migrating Medium to React.js and GraphQL

2018-05-20 19:002358
用户头像

发布了 731 篇内容, 共 452.8 次阅读, 收获喜欢 2002 次。

关注

评论

发布
暂无评论
发现更多内容

话题讨论 | 聊聊那些年你重构过的代码?

xcbeyond

话题讨论

密码学系列之:明文攻击和Bletchley Park

程序那些事

加密解密 密码学 程序那些事 明文攻击

学习笔记3

Qx

区块链技术生态持续优化,五大趋势不容忽视

CECBC

区块链 场景应用

Alibaba Java面试题大揭秘,把这些知识点吃透去面试成功率高达100%

Java架构之路

Java 程序员 架构 面试 编程语言

测试右移之日志收集与监控

BY林子

敏捷 软件测试

C++typename的由来和用法

良知犹存

c++

如何使用 JuiceFS 在云上优化 Kylin 4.0 的存储性能?

苏锐

大数据 kylin 性能优化 JuiceFS

话题讨论 | 说说那些"Oh my god"的时刻

Kurtis Moxley

话题讨论

某Javva程序员金秋9月靠这份文档涨薪10K,你把这份Java进阶文档吃透涨薪超简单!

Java架构之路

Java 程序员 架构 面试 编程语言

中国SaaS的病与痛?

ToB行业头条

LeetCode题解:102. 二叉树的层序遍历,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Norns.Urd 中的一些设计

八苦-瞿昙

C# 随笔 随笔杂谈 aop

GO 训练营第 3 周总结

Glowry

Mock | 拦截ajax的两种实现方式

梁龙先森

Java 大前端

Flutter技术在会展云中大显身手

京东科技开发者

flutter 跨平台 移动开发

Java并发编程:进程、线程、并行与并发

码农架构

Java并发

最值得Deepin的思维模型“组合创新” | 技术人应知的创新思维模型 (3)

Alan

创新 思维模型 28天写作

区块链打破数字医疗桎梏,赢数据未来新生

CECBC

区块链 医疗

生产环境全链路压测建设历程第四篇 技术体系的发力

数列科技杨德华

卧槽,牛皮了!某程序员苦刷这两份算法PDF47天,四面字节斩获心仪大厂offer!

Java架构之路

Java 程序员 架构 面试 编程语言

4项探索+4项实践,带你了解华为云视觉预训练研发技术

华为云开发者联盟

AI 华为云 modelarts

话题讨论 | 对于懂得编程的人来说,编程对你来说有什么乐趣?编程大概是什么感觉?

xcbeyond

话题讨论

摄像机不智能,基本等于不讲武德

脑极体

架构作业--大数据

Nick~毓

只谈链不谈币,区块链会发展成什么样的方向?

CECBC

区块链

华为工程师:扔掉你手里的其他Netty资料吧,有这份足以

小Q

Java 学习 面试 Netty 网络

小熊派开发实践丨小熊派+合宙Cat.1接入云服务器

华为云开发者联盟

IoT 小熊派 实践

为什么删除数据后,Redis内存占用依然很高?

Java架构师迁哥

LeetCode题解:45. 跳跃游戏 II,贪心从后向前,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Spock单元测试框架实战指南五 - void方法测试

Java老k

Java 单元测试 spock

Medium迁移到基于React.js和GraphQL的架构_语言 & 开发_Sergio De Simone_InfoQ精选文章