写点什么

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

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

关注

评论

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

缓存与数据库的双写一致性

leonsh

MySQL redis 缓存

如何解决回归任务数据不均衡的问题?

华为云开发者联盟

深度学习 模型 标签 数据不平衡 DIR

WorkPlus Lite 企业级移动平台

BeeWorks

为什么聪明的程序员会写出糟糕的代码

实力程序员

云小课 | 华为云KYON之私网NAT网关

华为云开发者联盟

网关 华为云 KYON企业级云网络 私网NAT网关 重叠组网

读深入ES6记[四]

蛋先生DX

ES6 6月日更

Pandas之:深入理解Pandas的数据结构

程序那些事

Python 数据分析 pandas 程序那些事

技术实践丨体验量子神经网络在自然语言处理中的应用

华为云开发者联盟

自然语言处理 量子 量子神经网络 量子模拟

助力碳中和,EMQ与SAP共同构建绿色IoT解决方案

EMQ映云科技

开源 5G 碳中和 SAP 碳达峰

跨域背后的故事(一)-----同源策略

卢卡多多

浏览器 同源策略 6月日更

Java字符串池、常量池、intern的爱恨纠葛

叫我阿柒啊

Java 常量池 intern 字符串常量池

GrowingIO 增长平台产研项目管理实践

GrowingIO技术专栏

项目管理 程序员 Jira growingio

react源码解析11.生命周期调用顺序

全栈潇晨

react.js

应对全场景AI框架部署挑战,MindSpore“四招”让你躺平

华为云开发者联盟

深度学习 AI mindspore 算子 ai框架

项目管理100问 | 研发团队如何实现无缝协作

万事ONES

项目管理 ONES Project 研发团队

Python——列表元素的增删改

在即

6月日更

Dokcer Compose部署Nebula Graph配置文件

阿呆

配置信息

5000字 | 详解 Java 中的 21 种锁

悟空聊架构

Java 读写锁 锁升级 6月日更

只记得文件类型如何用EasyRecovery实现恢复?

淋雨

数据恢复 EasyRecovery 文件恢复 照片恢复

可视化及时把控营运状况,助力管理效率提升80%

一只数据鲸鱼

数据可视化 智慧城市 智慧园区 三维可视化 智慧楼宇

【Flutter 专题】107 图解自定义 ACEPageMenu 滑动菜单 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

Java 并发编程—— Executors 分析应用

Antway

6月日更

来自 Apache APISIX committer 的经验分享 —— 编程之夏专访

API7.ai 技术团队

后端 技术人 API 网关

产品策略闭环是个什么环?

万事ONES

项目管理 研发管理 ONES 产品策略

WorkPlus私有化「数智融合」移动平台

BeeWorks

平阴玫瑰×浪潮云洲:见证一朵玫瑰的绽放

云计算

机器学习入门:多变量线性回归

华为云开发者联盟

机器学习 多变量线性回归

联想积极参与CSMM标准制定和推广,推进中国软件产业高质量发展

科技热闻

技术干货 | 如何实现对动态PPT的云端录制?

ZEGO即构

音视频 WebRTC RTC 即构 动态PPT录制

ONES CTO 冯斌 | 大型团队敏捷项目管理实践与思考

万事ONES

项目管理 研发管理 团队协作 ONES 研发工具

和12岁小同志搞创客开发:如何选择合适的控制器?

不脱发的程序猿

DIY 创客开发 如何选择合适的控制器?

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