技术开发 频道

Github的严重潜在问题:会成为单点故障

        【IT168 技术】用“我爱你”不足以表达我对Gitbub的喜欢,我不止在当展现代码的复查过程时向别人推荐它。在Mozilla,Web开发团队用Github作为我们的代码检查工具,因此行注释和代码推送需要与我们的代码检查完美的结合到一块。Gitbub可以使一个大的代码贡献团队的程序员虽然不在同一个地方工作,但仍然可以将代码结合到一块。

  然而,最近Github对于它的性能遇到一些问题。谢天谢地,这些问题中的大多数是无关痛痒的。但问题却暴露了用Github来检查开发过程的一个严重的潜在的缺点。

  Github是一个单点故障。

  Github和Git是如何共同工作的

  Git允许每个开发人员独立工作,并保留一份repository的拷贝。所以,除了开发人员的数据没有共享给其他人之外,不会带来任何的数据丢失的风险。这有别于集中版本控制的系统,例如subversion。

  除了在项目提交的时候会提供标准的集中repository,Github其他情况下都没有改变这个模式。每一个fork实际就是每一个开发人员自己所拥有的独立的repository,而本地的repository又是另外一个拷贝。开发人员提交代码,同时Github的pull request实际上就是尝试把其中一组commit代码合并到另外一组;这样就可以保证开发人员上游的共享他们工作。

  对于开发人员和公司的潜在问题

  从设计来看,每一个开发人员都保留一份完整的repository的拷贝。这样像使用Github这样的服务的公司,出现数据丢失的风险非常的低。但是,当Github被多个公司的开发流程中使用时,问题就会出现。

  例如,公司当中某些开发人员在本地完成了一些代码,然后想提交代码并发布到Github,但是他们并没有托管这些代码的基础设施的控制权。如果他们需要发布,但是Github却宕机,那他们就没办法发布代码。

  Github同时还共享public和private repositories的基础设施,从而导致付费用户会受到免费用户宕机的影响。这就意味着,Github实际上是,向没有对外界公开代码的公司和开发人员收费,但提供没有任何保证正常运行的服务水平协议(SLA)。

  Github提供企业服务选择,允许公司在自有的服务器上管理自己的Github。但这个选择并不适用于所有的机构,只适合于有充分IT预算的公司。Github没有提供任何类似于著名的服务水平协议的套餐。

  解决办法是?

  很不幸,对于这个情况,我也没有任何的解决办法。Github是同类软件中的佼佼者,并且比其他类似软件都优秀,例如Google code。The Object Oriented PHP Masterclass这篇文章很好的解释了如何通过Github工具帮助学生们修正代码中的错误。我抱着怀疑的态度,我们开发组将来会使用其他软件替代Github。

  我很乐意看到开源社区里面会出现替代Github的产品,虽然Github的动力来自于金钱,而且这会带来更大的动力去创建更好的产品。

  我相信,Github将会继续成长,而且稳定性的问题会逐渐解决。但是我还是对单点故障感到疑虑。

  更新:Gitlab可能是Github的替换产品。Gitlab是开源产品,以MIT协议发布,并托管于Github。值得注意的是,Gitlab是使用Ruby on Rails开发的;你需要了解Ruby on Rails的安全性之后,才去使用Giblab。

0
相关文章