写点什么

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

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

关注

评论

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

哪些数据类岗位不容易失业?

雨果

开发数据 数据科学 数据工程师

安势清源SCA助力超大规模高科技企业加速开源风险治理

安势信息

开源 腾讯 SCA SBOM 软件供应链安全

保10万涨薪、保Offer、保大厂,1V1私教服务上线啦!

测吧(北京)科技有限公司

测试

人人能读懂redux原理剖析

夏天的味道123

React

2022年10月中国数据库排行榜:达梦冲刺IPO热度不减,PolarDB立足创新夺锦才

墨天轮

数据库 opengauss tdsql TiDB 国产数据库

Kafka消费者客户端心跳请求

石臻臻的杂货铺

Kafk 10月月更

【荣耀云调试FAQ】一个帐号可以同时使用多部手机吗?

荣耀开发者服务平台

开发者 手机 安卓 荣耀 honor

年度大促将至,企业如何进行性能压测

阿里巴巴云原生

阿里云 云原生 性能压测 PTS

自定义注解判断参数为空

派大星

Gartner 权威解读: SBOM 采用率将于2025年达到60%

SEAL安全

DevSecOps Gartner SBOM 软件供应链安全

如何掌握“看见数据”的魔力?

博文视点Broadview

保10万涨薪、保Offer、保大厂,1V1私教服务上线啦!

霍格沃兹测试开发学社

推荐|海泰政务移动办公系统密码应用解决方案 打造移动办公安全

电子信息发烧客

STM32 HAL库串口同时收发,接收卡死?

矜辰所致

串口 STM32L051 10月月更

推荐|海泰信创浏览器安全解决方案 全面适配安全可靠

电子信息发烧客

利器| Cypress 强大全新的 Web UI 测试框架应用尝鲜

霍格沃兹测试开发学社

企业云安全的6个最佳实践

HummerCloud

10月月更

JS继承有哪些,你能否手写其中一两种呢?

helloworld1024fd

JavaScript

5个技巧让CIO最大化提升IT项目投资回报率

雨果

CIO ROI

js函数柯里化-面试手写版

helloworld1024fd

JavaScript

Kafka消费组/者协调器的介绍

石臻臻的杂货铺

Kafk 10月月更

长安链源码分析之网络模块 net-liquid(3)

如何将 SAP Business Application Studio 里开发的 Java 应用部署到 SAP BTP 上

汪子熙

云原生 Cloud 云平台 SAP 10月月更

CentOS下搭建Gitea-自己的git服务器

麦洛

git Gitea

欧美开源法案频出,你准备好了吗?

安势信息

出海 #开源 SBOM 软件供应链安全 开源合规

前端必会手写题总结

helloworld1024fd

JavaScript

redis实现分布式锁(二)

zarmnosaj

10月月更

【LeetCode】可能的二分法Java题解

Albert

算法 LeetCode 10月月更

解React框架核心原理

夏天的味道123

React

redis实现分布式锁(一)

zarmnosaj

10月月更

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