Github:诞生于 Ruby,60%的员工远程工作

简介:

Github诞生于2008年,现在已经是全球最大的代码托管平台。然而鲜为人知的是,他们使用的技术栈非常简易,Ruby、Shell和C。并且6成员工远程工作,通过Hubot协作。

Sam Lambert 在 2013 年加入 Github 公司,当时的身份是公司的第一名数据库管理员,现在已经是 Github 的技术总监。在去年他曾接受 Derrick Harris 的采访,解释作为一家全球性网站,是如何通过简单便捷的技术栈,成功支撑起超过 1000 万用户,超过 2500 万项目的。

他还谈到 Github 大型的远程工作团队,大概有 60% 的员工通过远程工作,利用一个叫做 Hubot 的自动化工具协作。

image

Github吉祥物(图片来源:Github.com)
SAM LAMBERT 介绍,在内部开发产品和各种服务时,Github 特别推崇 Unix 哲学,采用最简单的技术,实现众多基础性功能,对于复杂臃肿的过度工程化深恶痛绝。对于技术和项目的选择,更讲究实用主义。

很久以来,网站许多关键基础设施,都用的是 Shell 脚本,它们很有效,多年来用着很顺利。

网站创建于 2008 年,至今已经 8 年,最初网站使用 Ruby on Rails 构建,最初的版本是由创始人自己写的,当然 Git 部分用的是 C 语言,处理 Git 请求,数据合并等事项。

当初所有的数据都通过 MySQL 存储,对于临时性质的数据,也会采用 Redis 或者是 memcache 做缓存。

Github 刚成立时,技术栈就这么简单:C,Shell,以及 Ruby。并且在做新项目地时候,也不会盲目尝试新的工具和语言。

随着网站规模的壮大,Github 的开发团队成功吸引到多名 Ruby 的核心开发者,在日后的开发过程中,继续保持技术栈的精简和实用。

对于新技术的态度,LAMBERT 表示其实工程师在工作中的自由度很高,可以试用各种新技术,只不过在实施项目时偏保守。

有趣的是,虽然全世界一半的新项目都由 Github 托管,但事实上 Github 仅采用了为数不多的几个技术栈。

随着时间的积累,Github 的用户量爆炸性增长,后面的技术上也面临诸多挑战。其中最复杂的是要处理 Git 的海量请求,LAMBERT 没有细说具体的技术细节,但表示依然是最简原则,不要重新发明轮子。

一直以来,性能都是工程师不懈的追求,Github 技术团队也是。除非这个功能足够快,否则就不要部署。

对于硬件奢设施,Github 没有使用任何云服务,而是自建数据中心,当然,为了满足庞大的使用量,Github 相当于构建了自己的私有云平台,Github 拥有自己的基础设施团队,人数不多,但可以保障 Github 的正常运行。

随着用户量的增长,团队规模也随着扩大。和众多创业公司一样,Github 也面临招聘新员工的挑战,既要具备足够的能力,而且要认同 Github 的文化和发展方向,为了招聘到满足需要的人手,Github 允许员工远程工作,这样可以招聘到其他国家和地区的员工。

在 Github,大概 60% 的员工远程工作,比如 LAMBERT 就曾经周游世界,在不同的地方工作,Github 推崇的正是分布式远程工作的文化。
image

Hubot机器人概念(图片来源:hubot.github.com)
为了让世界各地的员工分工协作,Github 使用 Hubot 工具。比如可以通过聊天的方式,询问 Hubot 现在在哪里,Hubot 可自动回复某成员当前在世界的哪个城市,或者在办公楼的哪一层。

Hubot 支持好几十个命令,可以查询 MySQL 状态,可以做故障切换,可以删除数据库表,可以备份文件,可以复制转移,可以做几乎所有和运维相关的事。

除了查询其他同事的状态,Hubot 还能实现监控功能,比如当某个服务器出现故障,Hubot 可以自动报警。

LAMBERT 认为,Hubot 代表了未来互联网公司的运作方式,他可以适应性地把服务器等基础设施以及分布于世界各地的员工紧密连接到一起,人与机器之间无障碍交流沟通,解决了许多传统企业未能解决的问题。

文章转载自 开源中国社区[http://www.oschina.net]

相关文章
|
Rust 程序员 数据安全/隐私保护
GitHub 上标星 13.4K 的远程软件!太强大了
GitHub 上标星 13.4K 的远程软件!太强大了
3052 0
GitHub 上标星 13.4K 的远程软件!太强大了
|
开发工具 git
关于github默认分支名改为main后可能的处理【git推送到远程不同的分支、github修改默认分支名】
git如何删除本地分支、删除远程分支,由分支的删除可以实现推送到远程不同的分支。 git不允许推送到远程与本地分支名不同的分支上。
944 1
|
网络安全 开发工具 git
远程代码托管平台--GitHub、Gitee的使用(2)
远程代码托管平台--GitHub、Gitee的使用(2)
246 0
远程代码托管平台--GitHub、Gitee的使用(2)
|
Linux 网络安全 开发工具
远程代码托管平台--GitHub、Gitee的使用(1)
远程代码托管平台--GitHub、Gitee的使用(1)
856 0
远程代码托管平台--GitHub、Gitee的使用(1)
|
开发工具 数据安全/隐私保护 git
【Git&GitHub - 6】:Git推送本地仓库到远程Github仓库(git remote命令、git push推送到远程、获取GitHub的token)
【Git&GitHub - 6】:Git推送本地仓库到远程Github仓库(git remote命令、git push推送到远程、获取GitHub的token)
376 0
【Git&GitHub - 6】:Git推送本地仓库到远程Github仓库(git remote命令、git push推送到远程、获取GitHub的token)
|
API 开发工具 git
Idea上的项目如何同步到远程Github上
在平时的开发中需要用到代码管理工具进行协同开发,一般使用的代码管理工具都是git,今天这篇文章就来介绍介绍如何使用git进行代码管理,主要以idea和github(远程代码库)进行演示!
322 1
Idea上的项目如何同步到远程Github上
|
开发工具 git
git使用手册(四)git远程对接github
git使用手册(四)git远程对接github
102 0
|
Shell 开发工具 数据安全/隐私保护
【GIT】使用Git命令窗口将本地工程提交至远程GitHub
1.解决的问题是如何通过Git命令窗口将本地工程提交至GitHub。   2.方便园友的同时也方便自己以后解决此类问题。
122 0
【GIT】使用Git命令窗口将本地工程提交至远程GitHub
|
开发工具 git Ruby
【Jekyll搭建GITHUB个人博客】安装Ruby 环境、包管理器 RubyGems、Jekyll与错误解决
【Jekyll搭建GITHUB个人博客】安装Ruby 环境、包管理器 RubyGems、Jekyll与错误解决
323 0
【Jekyll搭建GITHUB个人博客】安装Ruby 环境、包管理器 RubyGems、Jekyll与错误解决
|
存储
【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )
【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )
323 0
【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )