当微软收购GitHub时,许多开源的GitHub用户并不高兴。 至少有10万人对此有些担心而转向GitHub的主要竞争对手GitLab。 现在, GitLab正在将其代码库 从 Microsoft Azure 移到 Google云平台 (GCP)。
GitLab的Google云平台迁移项目负责人Andrew Newdigate解释说, GitLab正在采取措施 改进服务的性能和可靠性。
具体来说,该公司之所以这么做,是因为它相信Kubernetes才是未来。Kubernetes“使大规模的可靠性成为可能”。GCP是他们的自然选择,因为他们想在Kubernetes开办GitLab。毕竟谷歌发明了Kubernetes, GKE拥有最健壮、最成熟的Kubernetes支持。
一旦迁移完成,GitLab将专注于“通过使用GKE将我们的员工团队迁移到Kubernetes来提高GitLab.com的稳定性和可扩展性。此举将利用我们的 Cloud Native图 表,它与 GitLab 11.0 现在处于测试阶段。“
为了做到这一点,GitLab将使用其Geo产品。 Geo允许用户能够创建完整的只读GitLab实例镜像。 Geo实例也可以用于克隆,获取项目,并在这种情况下迁移GitLab项目。
GitLab没有采取这种举措来与微软保持距离。 在微软收购GitHub之前,GitLab已经开始着手这方面的工作。
早在交易完成之前,Newdigate写道:“我们在GitLab.com上维护着一个名为gprd.gitlab.com的地理辅助站点,该站点运行在Google云平台上,该辅助站点保持最新的大约200TB的Git数据和2TB的PostgreSQL关系数据,最初我们也复制了Git LFS,文件上传和其他文件,但之后这些文件被同时迁移到Google Cloud Storage对象存储中,并进行了并行处理。“
由于后勤原因,GitLab使用的是位于南卡罗来纳州的GCP的us-east1站点。它目前的Azure数据中心位于弗吉尼亚州的美国东部2号。这是800公里的往返距离,也就是3毫秒。这意味着两个站点之间的ping时间为30ms。
Newdigate继续说道:
由于我们需要在Azure和GCP之间同步大量的数据,我们最初关注的是这种额外的延迟,及它可能对我们的地理转移带来的风险。然而,在我们最初的测试之后,我们意识到网络延迟和带宽并不是传输中的瓶颈。
同时,GitLab正在将所有文件工件迁移到 Google云存储 (GCS),即Google的托管对象存储实施。大约有200TB的数据。
直到最近,GitLab使用网络文件系统(Network File System, NFS)将这些文件存储在NFS服务器上。正如您所知道的,NFS是单点故障,并且难以扩展。通过切换到GCS, GitLab可以利用其内置的冗余和多区域功能。这反过来将有助于提高GitLab的可用性并消除单点故障。这是将NFS留在后面的更长期战略的一部分。
作为GitLab Git RPC服务的 Gitaly项目 是同一项计划的一部分。将GitLab.com从NFS迁移到Kubernetes也是将GitLab迁移到Kubernetes的一个先决条件。
根据Newdigate的说法:“我们故障转移的高优先级是确保我们保护用户数据的完整性,一旦我们完全确信所有严重问题已经被解决,没有风险,并且我们在Google云平台上的新环境已准备好用于生产工作负载,我们才会进行转移。“
如果进展一切顺利,GitLab将于2018年7月28日星期六采取行动。