50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

MySQL实战四十五讲基础篇总结(七)

一个有志气的DB

MySQL 性能

leetcode练级-两数之和

幸福三寸日光

算法 LeetCode js

谈谈我的云笔记使用之路

读钓

学习 个人成长 写作

数据与广告系列二:计算广告和推荐系统

黄崇远@数据虫巢

数据挖掘 大数据 互联网 广告 推荐系统

MySQL实战四十五讲基础篇总结(六)

一个有志气的DB

MySQL 读写锁

【万字图文-原创】 | 学会Java中的线程池,这一篇也许就够了!

一枝花算不算浪漫

并发编程 jdk源码 线程池

从引用聊一聊 Java 垃圾回收

Rayjun

Java 引用 对象

其实,还是让我挺震惊的,程序员的换行率竟然高达 40%

非著名程序员

程序员 程序人生 自我思考

音视频会议系统-Janus的安装与布署

音视频专家-李超

音视频 WebRTC

Tomcat学习分享

GeekYin

tomcat

MySQL实战四十五讲基础篇总结(五)

一个有志气的DB

MySQL 索引

谈即时编译优化-以异常堆栈丢失为例

寻筝

青春期的打油诗

GeekYin

随笔

Algorithm week 1: Merge Two Sorted Lists

猫吃小怪兽

算法 链表 ARTS 打卡计划

编程入门整理

紫枫

读书笔记

鄙视链 & 全栈

伯薇

学习 能力提升 全栈

云直播平台的选型与使用

音视频专家-李超

RabbitMQ-AMQP

云淡风轻

RabbitMQ

谈谈控制感(9):提升控制感排名第一的武器

史方远

职场 心理 成长

关于工作的一点总结

GeekYin

工作思路

Java 数据持久化系列之JDBC

程序员历小冰

Java JDBC 持久化

ARTS week1

紫枫

ARTS 打卡计划

MySQL实战四十五讲基础篇总结(四)

一个有志气的DB

MySQL 索引结构

k8s 上运行我们的 springboot 服务之——我们的springboot能够在k8s上运行

柠檬

k8s istio springboot

使用 webpack 搭建一个简单的 React 脚手架

张张张小烦

react.js

ARTS打卡Week 01

teoking

android WebRTC

时间管理的本质

史方远

职场 心理 成长

Spring Security密码登录流程源码分析

读钓

源码分析 spring security springboot

宏在C++中的替代解决方案

老王同学

c++ 模板 template

《陆蓉行为金融学讲义》 - 读后感

石云升

读书笔记 投资 行为金融学 理性 公平

ArrayList 源码分析

读钓

Java 源码分析 jdk源码

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