写点什么

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

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

关注

评论

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

百TB级TiDB集群在线更换NVME磁盘优化实践

TiDB 社区干货传送门

性能调优 管理与运维 应用适配 6.x 实践 大数据场景实践

玩转OpenHarmony PID:教你打造两轮平衡车

OpenHarmony开发者

OpenHarmony

银斯微与大敦科技签署MOU,推动UI开发工具在中国的落地应用

科技热闻

聚焦技术,锐意创新,GaussDB给世界一个更优选择

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

骨灰级精品,京东百万架构师亲码的MySQL内部笔记太硬核了

小小怪下士

Java MySQL 程序员

TiDB Operator扩缩容和集群的管理

TiDB 社区干货传送门

集群管理 管理与运维 安装 & 部署 扩/缩容

TiCDC 源码解读(1)-- TiCDC 的架构概览

TiDB 社区干货传送门

20000节点云数仓在大型商业银行的“实践之路”

酷克数据HashData

金融科技 云数据仓库 数据库·

spring高级源码笔记:深入理解阿里spring源码核心思想及框架应用

钟奕礼

Java 程序员 java面试 java编程

如何制作一个实时在线显示评论?

Towify

微信小程序 无代码

cdr2023断网离线激活下载教程

茶色酒

cdr2023

数据库原理及MySQL应用 | 多表查询

TiAmo

MySQL 数据库 12月月更

直播 | 数据智能大咖在线研讨,带你找到适合自己的企业级方法论!

StarRocks

数据库 物流

版本更新 | Towify V1.23.1 有哪些实用新功能?汇总来了!

Towify

微信小程序 无代码平台

Kerberos 身份验证在 ChunJun 中的落地实践

袋鼠云数栈

数据集成 kerberos 大数据 开源

Lightning checksum failed 报错实践案例

TiDB 社区干货传送门

有一说一!项目中引进这玩意,排查日志又快又准

程序员小毕

程序员 面试 微服务 后端 框架

公司刚来的京东架构师:看完我写的spring笔记,甩给了我一份文档

钟奕礼

Java 程序员 Java 面试 java编程

手把手系列:如何将小程序游戏引入自有APP?(iOS篇)

FinClip

系统的混乱并非业务本身之复杂,我们并不擅长处理『简单』

阿里技术

软件工程 复杂度

FinClip 手把手教学:如何将小程序游戏引入自有APP?(Android篇)

FinClip

如何删除数据并刷新列表

Towify

微信小程序 无代码 触发器

马斯克都不懂的 GraphQL,API 网关又能对其如何理解?

API7.ai 技术团队

api 网关 graphql APISIX

Kubernetes:Flomesh 服务网格与多集群通信

Flomesh

服务网格 K8s 多集群管理

介绍四大并发集合类并结合单例模式下的队列来说明线程安全和非安全的场景及补充性能调优问题。

C++后台开发

多线程 并发 后端开发 异步 linux开发

guitar pro2023下载官方版app

茶色酒

Guitar Pro guitar pro2023

TiDB Operator数据导入

TiDB 社区干货传送门

迁移 集群管理 管理与运维 备份 & 恢复

NineData:强大的ClickHouse图形客户端工具

NineData

数据库 云计算 开发者 Clickhouse 数据管理

自研分布式高性能RPC框架及服务注册中心ApiRegistry

车江毅

Java Eureka 注册中心 服务治理 服务中心

什么是制造业数字化转型?制造业数字化转型的核心与意义

优秀

数字化转型 制造业

openGemini v0.2.0版本正式发布:5大特性全面增强

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

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