写点什么

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

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

关注

评论

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

ALB Ingress 发布!轻松应对云原生应用流量管理

阿里巴巴云原生

阿里云 容器 云原生 ALB

学生管理系统详细架构文档练习

御道而行

架构实战营

测试策略实践之移动应用的测试策略与测试架构

刘冉

软件测试 软件自动化测试 移动测试

性能测试之问题与思考

刘冉

软件测试 性能测试 软件自动化测试

区块链在营销方面的应用探索

石云升

区块链 区块链应用 11月日更

Lua-复合变量

Changing Lin

11月日更

今天参加了“2021全球架构师峰会”...

后台技术汇

11月日更 全球架构师峰会

【LeetCode】检测大写字母Java题解

Albert

算法 LeetCode 11月日更

自动化测试之框架分类与思考

刘冉

软件测试 自动化测试

外包学生管理系统设计文档

波波

「架构实战营」

周边生态 | StreamNative 宣布开源 AWS SQS Connector

Apache Pulsar

开源 云原生 消息中间件 AWS SQS Connector 周边生态

外包学生管理系统架构文档

zjluoyue

进击的Java(五)

ES_her0

11月日更

今年双 11,阿里业务 100% 上云,云原生有哪些技术亮点?

阿里巴巴云原生

阿里云 技术 云原生 双11

Android C++系列:JNI调用时的异常处理

轻口味

c++ android jni 11月日更

【高并发】深度解析线程池中那些重要的顶层接口和抽象类

冰河

Java 并发编程 多线程 高并发 异步编程

架构实战营-模块四

瓜子葫芦侠

「架构实战营」

在线文本转拼音工具

入门小站

工具

Prometheus HTTP API 查询(七)管理员接口

耳东@Erdong

Prometheus PromQL HTTP API 11月日更

mongoDB 简单的索引类型

liuzhen007

11月日更

【Promise 源码学习】第六篇 - 实现 Promise 的链式调用

Brave

源码 Promise 11月日更

Vue进阶(幺柒捌):延伸阅读Sass、Scss、Less与Stylus编程特性

No Silver Bullet

CSS Vue 11月日更

#低码系列#低代码来了,程序员会失业吗?

布鲁

低代码开发 低代码平台

架构训练营 - 模块 3 作业

焦龙

架构实战营

了解一下OpenVINO的API

IT蜗壳-Tango

11月日更

聊聊开源精神

baiyutang

11月日更

软件测试新趋势-2018

刘冉

软件测试 软件自动化测试

如何用20分钟就能获得同款企业级全链路灰度能力?

阿里巴巴云原生

阿里云 微服务 云原生 MSE

CSS页面设计稿构思与实现(五)之border-radius

Augus

CSS 11月日更

linux检测系统是否被入侵(下)

入门小站

Linux

.NET6新东西--Random.Shared

喵叔

11月日更

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