虎嗅注:2010年10月,Instagram发布了第一版。在发布之初,Instagram仅支持iOS平台,在2012年4月时推出了Android版本,如今Instagram迎来了自己五岁的生日。Instagram创始人Mike Krieger在Medium上面发表了如下这篇文章来讲述产品的五年之路。本文来自Medium,作者Mike Krieger,虎嗅编译。


在2010年,Instagram v1版本发布的前夜,我们联合创始人Kevin和我打了个赌,赌在毫无营销手段的情况下我们发布首日的下载量会是多少。Kevin赌是2500,而我,极其乐观地下赌25000。第二天,我都不敢相信下载量居然真的如我下注的那般。


现在,Instagram迎来了它的5岁生日。它在全世界已拥有4亿用户,每日产生8000万条照片和视频短片分享。回首过去,我们已经在产品工艺性和简单性之间取得了很好的平衡。仅在去年,我们就完善了“搜索与发现(Search & Explore)”功能,并推出了一个全新的私密共享功能Instagram Direct,发布了新颖的工具如拼图工具Layout。


当我们的团队在过去5年中不断成长进步,始终坚持把简洁放在首位,并将它作为我们下一个5年计划的核心。现在我想和大家分享一下在过去的5年中,Instagram创下的一些最具里程碑意义的事件,这里有好有坏也有惊喜。我希望这些也可以为你的团队和公司提供一些值得借鉴之处。


里程碑1:3个月内收获1百万用户

里程碑背后:最大的挑战


我们发布产品后的第一个月的工作状态简直是一团乱麻——服务器在凌晨3点弹出警告页面是常态而非例外。在收获了我们发布首日的25000名用户后,我们很快就将其扩张到了1百万。


这背后的驱动力都因为人们实实在在地喜欢使用我们的产品,我们为了更好地满足用户不断增长的需求,必须进入快速发展阶段。我们项目刚起步的时候,一切运行都仅依靠一台位于洛杉矶的服务器,运算能力还不如一部Macbook Pro。鉴于产品发布第一天的战绩,我们马上向托管提供商请求了另外一台服务器,但他们要求一个为期4天的周转期,如果我们很急的话,2天也可。但考虑到我们用户数的惊人增速,我们最终决定使用亚马逊的Amazon Web Services云服务。


由于我们团队没人有过很深厚的基础构架经验,只能尽可能地汲取所能接触到的一切知识。我们看了QCon(译者注:软件开发大会)和Velocity的会议视频,也看了很多发表在Facebook、Netflix和Twitter等媒体平台上的优秀文章。不仅如此,我们还将这些成长和学习心得写成了工程日记发表出来,我认为将产品技术开放是公司做得最棒的事情之一。


干货拿走:我们的目标是—— “简洁至上”,这是在最初几周到几个月就确立的。因为当时团队只有我们两个人,所以我们面对每个新挑战时都不得不作出最快最简的选择。如果每做一件事都要先证明其可行性的话,我们可能会陷入无事可为的窘境吧。确定下来首要解决的问题,然后再选择最简单的解决方案,就这样我们创造了用户的指数级增长。


里程碑2:发布安卓版

里程碑背后:最受期待的产品发布


我们发布Instagram的头两年,Kevin和我每次在公众面前都会被问到同一个问题: “什么时候会有安卓版本啊?”


我们最初只做iOS版本是因为我们希望产品能够进行快速的迭代,毕竟我们只有两名工程师。但进入2012年后,我们认为这是向多平台扩展的时机了。延续了Instagram的简洁行事风格,安卓版app由三名工程师用三个月的时间就搭建完成了。这三名工程师中,Philip曾负责Gowalla安卓版开发,如今领导着Instagram移动端的业务,另外两名工程师是安卓开发新手,师承Philip。


这次,我的角色之一变成了 “专业的eBay买家”,因为我们想在尽可能多的设备上测试我们的app,甚至包括什么 “华为M865 Ascend II 2 Touch”之类的。那段时间,我们几乎都在做开封新手机、安装app,再为运行效果而惊讶的事情。由于安卓设备众多,这为我们带来了不小的挑战,尤其是当我们搭建Instagram Video的时候。但是当我们看到app可以在不同的设备上顺利运行时还是十分振奋的。


requied.jpg

安卓版发布的头12个小时,我们就收获了超过100万的用户,完全出乎了我们的意料。照例,当时我也写了一些搭建基础构架时的心得。,我们的安卓版app不断完善,更加适应安卓平台,如今,它已经成为安卓平台上发展最快、排名最好的app之一。


干货拿走:始于单平台发展让我们更加专注,迭代更快,因为一切功能不必实现两遍(在Instagram内部我们经常说“少做则好”)。当向多平台发展那天到来的时候,我们创建了一个由资深安卓开发师和两个安卓开发新人组成的小团队。一段时间后,我们就有了成熟的安卓团队,可以让我们的app与安卓平台更加契合。


里程碑3号:度过了2012年的维吉尼亚风暴

里程碑背后:最严重的停电事故


2012年,当我正在波特兰享受着我的三天小长假时,手机收到一条消息: “Instagram挂掉了”。我立刻上网确认了这个消息,同时了解到受停电事件波及的不止Instagram,还有Netflix等。然后我火速回到了酒店,打开笔记本,却在亚马逊云服务器上得到了一个令人绝望的消息: “此次断电故障范围为美国东部”。这是发生在整个维吉尼亚州的巨型风暴,这场风暴导致了我们半数的设备断电。那之后的36小时,我们开始了对整个基础框架的疯狂重建。当时只有下面这张图能给我一丝力量:


ins.jpg(Instagram挂了,你就口述一下你中午饭就行了。)


那时候,我们整个后端团队只有我、Shayne(Instagram团队的首位工程师)和Rick(只加入了Instagram团队不到一个月)组成。幸好事故没有造成任何用户数据丢失,但这次停电事件暴露了我们基础构架无法自动化的弱点。


它我们敲响了警钟,我们需要更可复制的服务器配置过程。在那之后的一年里,我们把服务从脆弱的Shell Scripts转为了Chef系统,也有效降低了团队新成员熟悉我们框架的成本。


同时我们也解决了对存储在亚马逊Elastic Block Storage上的数据备份的过度依赖,取而代之的是使用WAL-E和Postgre的WAL的复制机制。


干货拿走:拥有一个可编写脚本的基础框架需要很多前期工作,但一旦建成,这对于新工程师们是极其有利的,能够有效为灾难性复原提供帮助。另外,我很庆幸我们雇佣了很优秀的工程师团队,当我们遭遇无法想象的情景时,Shayne和Rick可以立刻圈起袖子为修复系统而全力以赴。


里程碑4:Instagram的服务器迁移

里程碑背后:最雄心壮志的工程项目


Instagram用户数:
2010年10月5日:0用户

2010年10月6日:25000名用户

2010年11月:1百万用户

2012年:3000万用户

2013年:2亿用户


到2013年,我们已有2亿月活跃用户和超过200亿张图片信息。我们的团队虽小但在不断成长,也为Instagram的不断成长而激动。


一直以来,我们都在寻找与Facebook后端系统整合的可能,比如他们的Site Instegrity(译者注:Facebook的anti-spam系统)系统就有效地帮我们解决了垃圾邮件问题。但这些整合很难在亚马逊服务器上完成,而且时间越久就越难将Instagram的基础框架迁移到Facebook上。


不过,很显然我们应该将后端迁移到Facebook的基础框架中去,但是我们不想在这一过程中中断百万用户和上亿张图片的服务。随后我们便开始了任务,虽然我认为这就像拆解一辆时速100的汽车一样不可完成。由Instagram和Facebook工程师们组成的8人小团队开始搭建一个共同的网络以便将Instagram从EC2迁移到亚马逊Virtual Private Cloud(VPC),团队创建了名为Neti的内部工具以完成这个任务。之后我们耐心地将我们的系统和工具进行迁移,其中包括我们构建的“ig”命令行工具,开发成员可以利用它从原来熟悉的亚马逊服务器(AWS)过度到新的Facebook数据中心环境中。结果就是我们用最小的损失完成了一场大规模的迁移。


干货拿走:不要白费力气做重复工作。把Instagram转移到Facebook的服务器上可以使我们的基础架构更加高效,同时也能够将Facebook的工具利用起来,比如那个反垃圾邮件工具等。我们能够在保持产品精小的同时利用Facebook的资源和心得,使成长更快。


里程碑5:Instagram的趋势标签

里程碑背后:产品的下一个大赌注


今年初,我们修整了“搜索与发现”功能,让用户更容易发现时下发生在Instagram上最有趣的事情。我们还推出了热门标签和地点,并搭建了全新的系统用以用户识别、排序和推送Instagram上面最优质的内容。


我们推出“趋势”这一功能最早要追述到2010年Instagram刚发布时,当时我们做了一个名为“Popular”的页面。这个算法非常简单:就是根据每张照片的点赞数目进行图片推荐,发布4小时之后的照片则会从推荐页面上撤下来。这个方法在Instagram用户数少时非常有效,但久而久之,我们意识到我们需要更加细致的算法去发现趋势性照片。


随着用户数扩大,我们在2014年时推出了个性化的“发现”功能,为每个用户推送可无限刷新的照片和视频内容。短短几个月,用户与内容的互动量就有之前非个性推送时的5倍。今年,我们重新关注了最初的Popular页面,做成了像是整个Instagram热门一览,整合成为“趋势”产品。随着排序算法和机器学习专家的加入,我们已经能够使用最先进的趋势算法去发现社区里发生的事件。


干货拿走:简洁为先并不意味着你的解决方案会永远奏效。我们要开放性地发展产品,确立明确的团队目标,快速地发展用户群。


过去5年,我们的成长速度像飙车般疯狂,我很开心能够在我们生日之际进行这样的暂停和反思。我相信随着用户的不断增长,产品的不断发展,当我在Medium上发表 “回顾过去的10年”时,我将没有遗憾。现在,让我们迈向下一个五年吧。