写点什么

GitLab 是如何从 Azure 云迁移到谷歌云的?

  • 2019-05-30
  • 本文字数:1828 字

    阅读完需:约 6 分钟

GitLab是如何从Azure云迁移到谷歌云的?

最近GitLab.com刚从Azure迁移到了谷歌云平台(GCP),GitLab 认为新平台能更好地处理关键负载,提供最低的错误率和最高的可用性。网站并没有经历漫长的下线维护时间就完成了迁移工作,而做到这一点背后的关键就是 GitLab 的镜像切换能力。


GitLab 决定迁移到 GCP 的原因之一是希望新平台能提升性能和一致性。GitLab 的 Chrissie Buchanan 还提到,GCP 对 Kubernetes 的支持是另一个显著因素。但将 GitLab 完全转移到 Kubernetes 上来运行的项目被推迟到迁移完成后才继续进行。


GitLab 团队很早就意识到,简单地关掉GitLab.com,将所有数据从 Azure 复制到 GCP,更改 DNS 以指向新服务器,然后重新启动服务这条迁移路线是不可行的。实际上,光是复制大约半 PB 的数据然后验证所有数据是否正确传输就需要漫长的下线维护时间了。。


因此 GitLab 的工程师走了另一条路子:他们加入了一项新功能,将网站镜像到了多个自同步的 GitLab 实例上。平时,这些镜像可以在云服务内分发数据时提升性能和可靠性;而在这次跨云迁移的任务中,团队只要关闭基于 Azure 服务的镜像,然后启用在 GCP 服务上运行的新镜像(也就是故障切换)就可以了。


这项新功能称为 Geo,通过它可以在主服务不下线的前提下迁移 GitLab 的所有数据。所有数据传输完毕后,GitLab 的工程师就开始关闭 Azure 上的镜像,启用 GCP 上的新镜像,然后将后者设置为主镜像。这一过程非常精巧,需要漫长的的迭代、试错过程才能完美实现目标。


InfoQ 采访了 GitLab 联盟副总裁 Brandon Jung 和基础设施工程师 Andrew Newdigate,了解了更多细节。


InfoQ:你们介绍的迁移流程其实很简单直观,核心就是使用镜像解决问题,只有最后的镜像切换步骤麻烦一些。能否介绍一下你们遇到了哪些困难,又是如何解决的呢?


Andrew:举个例子。有一个小问题被我们长期忽视了:

  • GitLab公司在几乎所有工作流程中都用到了GitLab.com,其中故障转移流程在 GitLab.com 上还用 markdown 做成了方案模板。

  • 因为我们是在对暂存实例进行故障转移,而我们的工作流程是在 GitLab.com 的生产实例上运行的,所以后者在前者故障转移期间都是可用的。

  • 结果迁移过程快结束的时候才有人发现,生产实例故障转移的时候是没法在 GitLab.com 上继续展开工作的。

  • 事后看来这是显而易见的问题,但不知何故我们都忽略了它,可能是因为我们太习惯使用自家产品了。

  • 解决方案很简单:我们使用 GitLab 的推送镜像功能在单独的内部 GitLab 实例上维护迁移项目的副本。对 GitLab.com 所做的任何更改都将复制到镜像中。在故障转移期间我们使用这个实例代替生产实例。


InfoQ:GitLab.com 报告说每日错误率和整体服务可用性都有了显著提升。为什么迁移到 GCP 会有这样的效果?


Brandon:GCP 的一致网络是 API 端点性能提升的最大功臣。

Andrew:Brandon 提到了网络这一因素。我还在一篇博文中讨论了其它 5 项因素,而且不是所有因素都是技术层面的。


InfoQ:在这些提升中 Geo 可能带来的贡献有多大?


Andrew:Geo 是一种数据复制和异地镜像解决方案,也能用作灾难恢复方案,但它本身并不能提升 GitLab.com 的可用性。

事实上故障转移完成后我们就在 GitLab.com 上禁用了 Geo。几个月前我们又启用了 Geo,用作异地备份用途。如果发生数据中心层面的重大中断事故,我们就会开始故障转移到备份镜像上,但它平时不会直接接收生产流量。


InfoQ:迁移过程并非易事。GitLab 团队从迁移到 GCP 的经历中学到了什么?


Brandon:总体来说,我们能够成功地从微软 Azure 迁移到谷歌云是我们重视开发和开源的企业文化的功劳。

Brandon:GitLab 迁移到 GCP 后用户就能更容易使用 Kubernetes 了,同时网站的性能、可用性和客户服务水平都得到了提升。

Andrew:GCP 迁移项目是 GitLab 迄今为止开展的最大工程项目之一。它需要整个组织内多个团队之间的协调——包括工程(Geo、CI、计划)团队、QA 团队、基础架构、营销、支持等。这些团队需要协调交付多个工作流。GitLab 有一个非常清晰和成熟的工程交付流程,非常适合我们的远程文化;但我们需要调整并扩展这些流程,以便按时、安全地交付全公司共同参与的项目。由于我们在为 GitLab(产品)做内部测试,因此还能向产品经理提供反馈来改进网站,以使网站能更好地支持大型多团队项目。产品管理团队反应迅速,我们的大部分反馈现已获得网站采纳了。


如果你有兴趣了解 GitLab 迁移到 GCP 过程的详细情况,可参阅我们上面链接的博客文章。


查看英文原文How GitLab Managed to Migrate from Azure to Google Cloud Platform


2019-05-30 08:007748

评论

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

基于HTML+CSS实现七夕浪漫情人节表白代码(附源代码)

小魏写代码

情人节 表白 HTML5, CSS3 爱心代码

做SAST工具的我们,出路在哪里?

maijun

SAST工具 SAST工作方向 SAST技术方向

小灯塔系列-中小企业数字化转型系列研究——企业邮箱测评报告

向量智库

新媒必看!如何利用文件传输软件拿到一手资料!

镭速

文件传输 大数据文件传输

iOS IPA包的制作和上传步骤详解​

证书 开发 上架 Windows ios

怎样快速选择正确的可视化图表?

树上有只程序猿

数据可视化

阿里云 MSE 助力开迈斯实现业务高增长背后带来的服务挑战

阿里巴巴云原生

阿里云 微服务 云原生

斩获“年度突破成果”奖!天翼云构建强大AI算力基础,制胜人工智能新时代

天翼云开发者社区

云计算 云服务 云平台

软件测试/测试开发丨Selenium Web自动化测试基本操作

测试人

Python 软件测试 自动化测试 测试开发 selenium

生产制造关键业务模型拆解与平台化演进

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 8 月 PK 榜

NFTScan 正式上线 Base NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT\

英特尔和新思科技深化合作,提供基于英特尔先进制程节点的领先IP

E科讯

买堡垒机成本有哪些?可以产生哪些收益?

行云管家

网络安全 信息安全 堡垒机 堡垒

数据科学教学必看!如何最大化利用和鲸的资源与平台赋能教学工作

ModelWhale

人工智能 大数据 数据科学 高等教育 数据资源

大数据平台和数据中台的定义、区别以及联系

行云管家

大数据 数据中台 数据仓库 大数据平台

MatrixOne内核1.0.0-RC1版本正式发布啦!

MatrixOrigin

数据库 云原生 MatrixOrigin MatrixOne 矩阵起源

GitLab是如何从Azure云迁移到谷歌云的?_软件工程_Sergio De Simone_InfoQ精选文章