当前位置: 首页 > 科技观察

Github系统内部使用了哪些开源软件?

时间:2023-03-13 14:41:36 科技观察

有时处理规模的最好方法是让事情简单化,并尽量避免它。这是GitHub采取的方法。十年前,林纳斯·托瓦兹(LinusTorvalds)开发了Git源代码控制工具。GitHub为这个工具提供了一个存储库服务。开发,成为开源软件开发工作的重点之一。可以理解为什么程序员会挑选他们用来创建代码的工具并与其他人共享,而其他人又会调整和改进这些工具。有一种非常真实的感觉,源代码版本控制系统的工作方式可以在软件开发人员“居住”在这些系统中之后对协作者的创作过程产生积极或消极的影响。GitHub的成立最早可以追溯到2007年,其创始人包括现任公司首席运营官(COO,首席运营官)PJHyett,首席执行官(CEO,CEO)ChrisWanstrath,前**执行官TomPreston-Werner,首席信息官(CIO,ChiefInformationOfficer)ScottChacon。这些人都在Rails上开发Ruby应用程序,并希望有一种更好的编码协作方式,因此他们开始构建GitHub,预计将于2008年启动并运行。他们的开发更多的是拥有一个工具,而不是商业计划帮助他们自动化软件开发工作。事实证明,GitHub是世界上最大的RubyonRails应用程序,而GitHub系统负责人估计SamLambert已经与ThePlatform(译者:某网站http://www.theplatform.net/)进行了一次关于系统的小讨论。Lambert不愿意公开讨论GitHub有多少行代码,也没有公司公布有多少行代码托管在GitHub存储库中,但Lambert确实给了我们一些关于GitHub使用量增长以及系统如何支持的指标数据它。为大约60,000个机构或个人工作的大约1000万程序员维护着2600万个开源项目。“基本上这是一个简单的堆栈,对我们来说真的很重要,”兰伯特说。“我们试图通过尽可能少地使用来保持堆栈简单。”另一方面,2008年是创业公司的分界线(两年后AmasonWebService发布了EC2计算云),GitHub可以使用云,并且第一次不需要投资基础设施。但是,公司创始人和他们聘请的工程师并没有这样做,而是勾画出技术堆栈,通过聊天工具、软件部署工具和基本IT操作购买了一堆创造性的系统管理,所有这些都在GitHub上运行。当然公司在GitHub上有自己的私有仓库来开发GitHub。虽然Lambert没有透露构成GitHub的Ruby应用程序的确切大小,但他告诉我们该平台在GitHub存储库中有250,000次提交,数百人贡献了他们的代码并提交了这些更改,尽管并不是每个人都在工作GitHub。“GitHub最初是为我们创建的,我们基本上是软件工程师,所以我们想要一个好的开发工具,”Lambert说。“我们使用GitHub来构建GitHub,这就是我们每天所做的事情。管理一切的东西。人力资源和法律团队在他们的工作流程中使用GitHub。不仅仅是程序员使用GitHub。我们很幸运能够完成我们的代码以其他公司不一定能做到的方式。如果你雇用一些开发人员来开发广告系统,他们不会这样做,除非他们不在乎他们是否讨厌广告。我们所有的开发人员都喜欢Git和他们所有的工作围绕着它展开,所以我们有幸使用我们每天使用的工具。”Github堆栈的底部是硬件,它由分布在世界各地数据中心的数百台x86服务器组成。(Github没有说明这些服务器的位置,但Lambert确实表示,由于其不断增长的全球用户群,Github正在考虑在世界其他地区建立数据中心。)“我们使用标准的现成机器供应商,”兰伯特说,但没有提及供应商的名称和配置。“我们为软件运行做了很多优化,但我们没有对硬件进行过度的大规模定制。随着规模的扩大,我们试图让软件更具容错性,并将数据复制到一次性机器上,这样我们就不必修理机器了。您只需要销毁它并将数据重新放在另一台机器上即可。这使得购买机器更便宜,扩展成本更低。“我们真的需要构建一些定制的和不寻常的东西,因为一旦我们这样做了,我们就失去了社区正在做的事情的好处。这也告诉我们如何选择数据库,因为MySQL是每个人都使用的数据库。如果你有一个使用它时出现问题,其他人也会,而且你不会出现没人能理解的故障。“硬件显然没有那么有趣——尤其是对软件工程师而言。但Lambert对GPanel感到特别兴奋,这是一个用Ruby开发的本土部署系统,可以连接到Puppet配置工具,允许公司中的任何人配置机器并在上面发布软件。”这使我们能够像在公共云上一样部署软件,同时让我们享受拥有自己硬件的所有好处。“Github的软件基础当然是Linux,Lambert也说公司肯定有足够的专家来运行自己的Linux。但它并没有那样做,只是简单地使用了CanonicalUbuntu分布式服务器。至于存储Git代码和Github代码repository访问控制系统其他部分的数据库,Github依赖MySQL关系型数据库,Github本身维护Linux和MySQL软件,同时也维护Ruby和Rails,Github雇佣了Ruby和Rails社区的主要维护者,所以它可以推断,Github在社区做自己的技术支持。但事实上,Github在应用程序扩展的同时,也有自定义版本的Ruby和Rails。forkthecode“当数据进来时,这确实是一个规模问题对我们来说,我们正在使用一种高度可用的方法来弹性存储数据,”Lambert说,“这是关于使Git具有可扩展性和易用性,因为它从未考虑过这一点。根据我们的衡量,GitHub是最大的RubyonRails程序之一——没有多少公司大规模运行Ruby。我们保持精益并进行优化以保持这种状态。我们还没有完全处于这个阶段,不像Facebook的HipHop和Facebook用PHP所做的那样,但是我们有人将他们的核心奉献给Ruby以使其更快、更精简。“GitHub调整了Ruby解释器并创建了自己的垃圾收集例程,但它也热衷于尽快定位Ruby和Rails错误并将代码修复到GitHub、应用程序并输出到Ruby和Rails社区(Ruby开发是托管在GitHub上,因为那是针对Rails的。MySQL开发刚刚转移过来,甲骨文花了一些时间来做这件事。)GitHub可能是开发人员疯狂分叉代码的机器——嗯,至少是疯狂分叉代码——这让GitHub成为一个痛苦的地方不足为奇屁股。”Lambert解释说:“我们将GitHub保留为RubyonRails应用程序的原因是它非常容易学习。人们在公司的第一天就开始在Github上工作。我们真的需要一个定制和独特的构建,因为如果我们这样做,我们将失去所有社区利益。这就是我们选择数据库的原因,因为每个人都在使用MySQL。如果您对MySQL有疑问,这是众所周知的,您不会收到没人知道的模糊错误消息.没有你找不到答案的奇怪错误,因为有人已经遇到了你遇到的问题”。GitHub的基础设施有网络服务器、代理服务器、身份验证服务器,以及其他一些执行分析的东西repositories,上传commit分析,一个承载百万item分析的系统,但是真正的核心是repository本身。这些数据大部分是文本,当然不会占用太多空间,而且比较杂乱比一些更丰富的照片、视频和音频iomedia互联网背后的磁盘驱动器。奇怪的是,GitHub并没有使用传统的数据压缩来压缩文本数据,但它有自己的压缩方式来节省空间。如果一个项目是分叉的,那么只有对原始项目的更改才会保留在分叉中。(我们假设这种方法还可以让您轻松找到更改,遍历每个分叉。)如果GitHub保留每个更改,每个分叉,它很快就会变得数不清PB级的数据,而传统的数据压缩会降低系统速度。事实证明,即使每天从程序员那里接受数百GB的新数据,整个GitHub存储库的大小也以数百TB为单位。有段时间,网上流传了很多猫照,所有的猫照都来自猫照大师,按照change方式存储在Fork中(开个玩笑。)“有很多很多公司声称他们拥有数TB和PB级的数据,而你问他们这些数据是什么,通常都是胡说八道,”Lambert笑着说。“大多数大数据公司只是存储事件——这基本上是无用的。我们很自豪我们已经精简和优化了,我们不会存储大量无用的数据。与我们的竞争对手相比,存储与存储库显示我们非常非常精简。我们尝试存储尽可能少的数据,因为我们在后端有一些非常智能的东西让我们保持松散和分叉。我们有很多Git,但我们仍然尽力而为尽可能优化。”回顾GitHub的开发经历,从公司到oldschool,都可以快速便捷的获取指定的存储和计算能力并启动。“我们总是领先一步,我不能说这是压力驱动的,但我们确实有压力”兰伯特没有具体说明集群增长的速度有多快。“我们每天都有数百GB的新数据,仓库使用规模正在迅速增长,但我们已经创建了一个能够跟上业务增长步伐的基础设施。”这是因为我们的计划做得很好,而且现在还没有变慢的迹象。“如果GitHub像其他超大规模者一样,它的基础设施发展将滞后于驱动基础设施的因素的发展。很难扩展服务、存储和用户,这就是为什么超大规模者有如此多的工程创造力。使用公共Github存储库是免费的,但上面的代码可以被任何感兴趣的人获取和分叉。GitHub提供收费的私人存储库,这就是它计划赚钱的方式。个人计划的价格从每月7美元起,有5个私人存储库程序员团队125个私有存储库的200美元共享业务计划。对于那些需要在内部搭建Github来开发代码的公司,可以购买GitHubEnterpriselicense,费用为2500美元,每年可以安装10台主机,外观和Github一样。GitHubEnterprise可以托管在本地、AmazonWebServices或MicrosoftAzure公共云上。目前GitHub和GitHubEnterprise由同一个支持团队维护,但如果您在GitHubEnterprise上进行内部开发并想将源代码开源到GitHub,则没有自动化的方法可以做到。但兰伯特说还有空间。除了将GIT中的代码存储到文件服务器的核心RubyonRails应用程序和存储算法外,GitHub还在开发其他应用程序。“有些技术是你不能下架的,因为我们是世界上最大的代码托管人,我们在定制领域有很多问题,”Lambert说。未来的重点领域之一是为程序员提供更丰富的项目和工作分析,因为许多公司正在使用开源软件作为吸引人才的一种方式。这就是GitHub将扩展到新市场的原因,对文档进行了许多更改,并且分叉是协作过程的一部分。就像GitHub内部使用该工具跟踪项目的团队一样,建筑师、音乐家和其他工匠开始使用该工具,这可能会为GitHub带来另一波增长。GitHub在2012年7月的第一轮风险投资中从AndreessenHorowitz筹集了1亿美元,今年7月的第二轮从红杉资本和AndreessenHorowitz、ThriveCapital和InstitutionalVenturePartners那里筹集了另外2.5亿美元,该公司尚未公开披露,但考虑到它的资金,它的估值约为20亿美元,并有现金来扩大其基础并扩大其潜在市场。ChatOps文化和分布式开发GitHub的一个重要创新,严格来说不属于代码,但绝对属于公司Hubot,是公司使用的聊天机器人系统管理界面。这种方式常被称为ChatOps,将部署操作别名化,通过chatbots使用chat来做DevOps。GitHub中的所有内容都使用它。