写点什么

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:002323
用户头像

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

关注

评论

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

如何利用区块链改进金融系统身份验证?

CECBC

为什么需要单元测试?

蜜糖的代码注释

单元测试 后端开发 2月月更

【C语言】一维数组

謓泽

C语言 2月月更 一维数组

设计消息队列存储消息数据的 MySQL 表格

swallowluo

架构实战营 #架构实战营 「架构实战营」

LabVIEW生成应用程序(exe)和安装程序(installer)

不脱发的程序猿

LabVIEW 生成应用程序(exe) 安装程序(installer)

如何打造一款得心应手的VS Code?

Jackpop

办公效率起飞了!Python终于解放了我的双手

Jackpop

gopher成长之路(四):GO开发工程师写QT

非晓为骁

个人成长

基于51单片机室内灯光控制系统

DS小龙哥

2月月更

总算彻底搞懂Python集合了

Jackpop

鸿蒙学习笔记之使用 XML 方式创建布局

宇宙之一粟

鸿蒙 java UI 2月月更

显示器选购总结-戴尔2705QM-明基PD2700U

李印

总结 经验分享

Kubernetes核心组件-ETCD详解

巨子嘉

容器 云原生 etcd

消息队列存储消息数据的表结构

皓月

「架构实战营」

技术盘点:2022年云原生架构趋势解读

阿里巴巴云原生

阿里云 架构 云原生 趋势

韵达基于云原生的业务中台建设 | 实战派

阿里巴巴云原生

阿里云 云原生 业务中台 合作案例

技术盘点:2022 年容器、Serverless、可观测、服务网格有哪些值得关注的趋势?

阿里巴巴云原生

阿里云 Serverless 云原生 趋势 可观测

The Rust Programming Language

Joseph295

RPA进阶(一):走近 RPA 世界

No Silver Bullet

RPA 机器人流程自动化 2月月更

Go语言图书管理RESTful API开发实战

Jackpop

Go反射的三大法则

linlh

反射 元编程 Go 语言 2月月更

Kubernetes集群仪表盘dashboard&Kuboard安装Demo

山河已无恙

Kubernetes 2月月更

Lyft微服务研发效能提升实践 | 2. 优化快速本地开发

俞凡

研发效能 大厂实践 2月月更 lyft

从冬奥看中国科技(五):漫天塞地物联网

脑极体

DOM 节点的克隆和导入

编程三昧

JavaScript 前端 DOM 2月月更

也许我们可以用另一种角度与观点看待世界所发生的事情,让你有所解答。

叶小鍵

电子书《大型组织深入推广零代码应用平台的行动指南》正式发布!

明道云

工作想法小计2/7 - 2/11

非晓为骁

个人成长 开发 工作方式 Go 语言

技术盘点:云原生中间件的技术演进与未来趋势展望

阿里巴巴云原生

阿里云 云原生 中间件 趋势

kube-scheduler源码分析(1)-初始化与启动分析

良凯尔

源码 Kubernetes 容器 源码分析 #Kubernetes#

LabVIEW跳转访问网页

不脱发的程序猿

LabVIEW 跳转访问网页

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