13
【编者按】本文来自Instagram创始人之一Mike Krieger的博客,由 @陈钧桐 翻译,由 @覃超 整理。Instagram是一家照片分享服务公司,在2012年9月被Facebook以7.15亿美元收购。
2010年,在我们发布Instagram第一个版本的前一晚,我与联合创始人Kevin打赌第一天大概会有多少人下载这款App。Kevin猜有2500人,我当时特别乐观,赌了把大的,押25000人。第二天,我简直不敢相信我的猜测分毫不差。
今天,在Instagram的五周岁之际,我们拥有来自世界各地的4亿用户,他们每天上传8000万份相片和视频。回望过去,我们在初代产品上就做到了在简洁和精巧中取得恰到好处的平衡。同时就在去年,我们回炉重造了「搜索&发现」(Search & Explore)功能,发布了全新的私密分享功能「Instagram Direct」,如「Layout」这样的创意拼图工具也应运而生。
过去5年,我们的团队一直在(谢天谢地)成长和进步,我们坚持恪守我们的信条:简单的事情先做,它也是下一个五年计划的核心。在这里我将回顾从搭建Instagram起过去的五年时间里,其中一些最重大的里程碑事件——有好的,有坏的,还有出乎意料的。我希望这里的一些经验教训能帮你们打造自己的团队和公司,使其茁壮成长。
归档:最大的挑战
上线第一个月的惨状不忍直视——经常凌晨3点睡眼惺忪打开屏幕,上面的服务器警信息接踵而至。自第一天爆炸性地吸引了25000名用户后,数量就持续高速增长直至解锁100万的成就。
请脑补一下这个场面:争先恐后的人们迫切想要使用你的产品!世上没有任何号角能比这更能激励士气的了,所以我们开启996模式以确保我们可以承受住与日俱增的访问请求。我们起步的时候只用了一台位于洛杉矶的服务器,其性能还不如一台Macbook Pro。当我打电话给主机服务商,要求根据我们第一天的增长情况再添置一台服务器时,他们回复说需要4天的周转期,快马加鞭的话也得要48个小时。鉴于我们的增长态势看起来深不可测,我们决定转移到亚马逊的AWS云服务器上面去。
由于我们两个都缺乏系统底层架构的经验,我们只能尽所能地狼吞虎咽相关的知识。在QCon和Velocity的上面有非常棒的会议视频,还有来自 Facebook,Netflix,Twitter以及其他公司的文章。共享技术知识的开源文化是我们这一行最棒的事情之一,它也是我们更新维护日志的主要推动力。
干货总结:我们的信条,“简单的事情先做”脱胎于最初的岁月。
因为只有我们两个人并肩作战,所以每当我们面临新的挑战时,我们不得不采用最快的、最简单的解决办法。假如我们以完美的态度要求每一件事情,那我们很有可能在无所作为中灭亡。通过找出最先需要解决的问题,以及选择最简单的解决办法,我们才有能力支撑起我们的指数型增长。
归档:最众望所归的发布
在Instagram发布的头几年里,Kevin和我每一次在台上都会被问到同一个问题,“安卓版的应用到底什么时候才会出来?!”
我们从iOS版起家——仅仅是因为我们想要在我们的产品上做到快速迭代——毕竟我们只有两个工程师。当跨入2012年后,是时候扩展到其他不同的平台了。我们的安卓版App也是典型的Instagram风格,以Philip领衔的三位工程师在三个月内做出来了,其中两位的安卓开发还是现学现卖的。Philip是在我们开发另一款软件Gowalla的安卓版App时加入的,直到今天他依然领导着Instagram的移动化。
因为我们想要在尽可能多的安卓手机上测试我们的App,甚至包括华为的一款冷门手机“M865 Ascend II 2 Touch”,所以有时候我化身为“eBay皇冠买家”。大多数时候,新手机的屁股还没在办公桌上坐热,我们就立即拆掉快递盒装上我们的半成品App试运行,然后为App的运行效果赞不绝口。安卓设备的产品线之广以至于我们面临了一些挑战——特别是当我们开发Instagram的视频功能时——但最终安卓版App做到了稳定运行在如此之多的手机上而不怎么需要针对某些机型做特殊修改,不得不说太给力了。
安卓版上线刚12个小时,用户量就突破了100万——反响之热切真是太不可思议了。也就在那个时候,我写了几篇关于系统底层架构设计的文章。斗转星移,Instagram的安卓版使用起来更像是原生软件了,如今它也成为了流畅度、评分最高的安卓应用之一。
干货总结:从单一平台上起步允许我们沉下心来快速迭代,并且没有兼容性的负担(我们在Instagram内部经常说“做事要少而精”)。当扩展到多个平台的时候,我们成立了一只全新的、以拥有深厚安卓开发功力的天才工程师为首的小队伍。
斗转参横,羽翼渐丰的安卓开发团队将让我们的应用更接近原生。
归档:最严重的突发状况
2012年中的某个周末,我正在波兰渡假,这时手机嗡嗡地响起来:“http://Instagram.com宕机了。”我火速上网做了测试,发现不只是Instagram——Netflix以及其他网站都纷纷躺枪了。我赶回酒店打开笔记本,AWS云服务器状态页上一条可怕的消息赫然在目:“美国东部的电力供应中断了”。一场巨大的风暴从维吉尼亚州呼啸而过,并且卷走了我们大半服务器的电力。接下来的36个小时俨然成为一场重建几乎整个底层系统的攻坚战。乌云背后唯一的幸福线就是这催生出一张病毒式传播的图片:
“INSTAGRAM打不开了!你午饭吃了啥?就在电话里跟我描述下吧!”
在那个时候,我们整个后端技术团队由我自己,我们第一个工程师Shayne以及Rick组成,Rick加入Instagram还不到一个月的时间。所幸没有任何用户数据丢失,但是这次意外暴露出我们在系统底层架构自动化上还有许多坑亟待填补。
这次意外给我们脸上来了一记响亮的耳刮子,我们需要找到一种可以重复使用的服务器配置方法。
次年,我们把不稳定的shell脚本迁移到了全Chef系统,这也大幅降低了新团队成员上手底层架构的门槛。
与此同时,我们不再依赖亚马逊的持久性数据块级存储卷方案(Elastic Block Storage),取而代之的是WAL-E以及Postgres家的WAL shipping replication方案。我们也建造了一个可靠的交叉数据中心,这让Instagram的数据得以分布式地存储到不同的地理位置。
干货总结:架设自动化脚本的底层架构需要大量的前期工作,不过这可是一本万利,新工程师将能很快融入项目本身,另外这样做也能在突发状况中立功。
另外,我很高兴我们雇佣了点对技能点的工程师——当我们面前摆着这样一个惨不忍睹的烂摊子时,Shayne和Rick都撸起他们的袖子立马开始收拾,遇到这种意外,堪比《火星救援》。
归档:最壮志凌云的工程
2010年10月5日:0用户
2010年10月6日:25000用户
2010年11月:1百万用户
2012:3千万用户
2013:2亿用户
在2013年的时候我们拥有2亿活跃用户,超过200亿张相片存储在服务器上。整个团队虽然在扩张,但规模仍然较小,所有人对于Instagram社区的持续成长感到欣喜万分。
与此同时,我们想要跟Facebook已有的后台系统进行整合——举个例子,他们的Site Integrity系统对帮助我们抵抗垃圾邮件的侵扰至关重要。但在亚马逊AWS云服务器上做这些整合会非常困难,而我们拖得越久,那迁移越来越庞大的底层系统将日益艰巨。
我们迁移去Facebook的后台系统是板上钉钉的事了,但我们想在不中断运营的情况下迁移数以百万计的用户和数以亿计的相片。所以我们开始了Instagration工程,或者我更喜欢将其描述为为给一辆时度100迈的汽车改头换面。一支由8个来自Instagram和Facebook的工程师组成的小队先建起一个共有网络,然后使用自家建造的叫Neti的工具把Instagram从EC2迁移到亚马逊的虚拟私有云 (Virtual Private Cloud)上。接下来迁移我们的系统和工具,其中包括使用一个“ig”的命令行工具,以此在新的FB数据中心搭建类似AWS的开发环境。最终我们花了最小的代价完成了这次大规模迁移。
干货总结:不要重复造轮子。通过迁移到Facebook的服务器,我们的后台系统运行得更快、更有效率,同时也能利用Facebook其他比如反垃圾邮件这样的工具。
利用Facebook的资源和经验,我们的尖刀排不需要扩招变得臃肿,从而使行动更风驰电掣。
归档:下一个大赌注
今年早些时候,我们对「搜索&发现」(Search & Explore)这个功能进行了完善,使得人们在Instagram上能更方便找到世界上每个角落发生的有趣事情。我们引进了「热门标签和地点」,并且搭建了用于甄别以及排序筛选的全新的机制,来给用户推荐Instagram上的精华。
我们第一次对「趋势」的尝试始于2010年发布Instagram,当时采用的是「流行」(Popular)页面。整个算法十分简单:计算每张相片的点赞数,每4小时清零。当我们的社区规模还是比较小的时候,这个算法非常好用。但随着时间推移,我们意识到我们需要一个更细致入微的算法。
鉴于社区规模之庞大,我们在2014年致力于将「发现帖子」(Explore )的功能个性化,其所展示的是针对每一个用户兴趣胃口生成的、可无限下拉查看的相片和视频。与非量身定做的「发现帖子」相比,我们的用户在短短数个月内与内容互动的比例提高了5倍。今年,我们带着最初做「流行」(Popular)页面的理念重新登场,并将其升级为「趋势」(Trending)——其能快速一览整个Instagram上面的内容。随着排序和机器学习专家的陆续加入,我们越来越有能力基于复杂算法生成出更加个性化的「趋势」。
干货总结:简单的事情先做并不意味着你的解决办法能一劳永逸。我们已经学会对产品的演化进步保持开放的心态,有针对性地建立队伍——比如我们的数据科学队伍,以此应对快速扩张的Instagram社区。
过去的五年对于我们中间很多人来说是一次激动人心的狂野之旅。在Instagram 5周岁生日之际停下来回顾反思是极好的。我很确信我们的社区会持续成长,我们的产品也将更上一层楼,在Medium上从来就不缺“回顾我过去十年”这样的文章。让我们为下一个五年干杯!
扩展阅读:Instagram是怎么创立的?来自Instargram另一位创始人Kevin Systrom的回答。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。