BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Medium迁移到基于React.js和GraphQL的架构

| 作者 Sergio De Simone 关注 12 他的粉丝 ,译者 无明 关注 0 他的粉丝 发布于 2018年5月21日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

看新闻很累?看技术新闻更累?试试下载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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

图是用什么工具画的 by Zhou Ansen

我很想知道,这图是用什么工具画的?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT