8
2011年,在我们发布第一个版本的Instagram前夜,我与联合创始人Kevin在打赌会有多少人会在第一天下载这个应用。Kevin猜测2500,我更乐观些,我猜会有25000人次下载。结果,第二天的下载量真的超过了25000,我们简直不敢相信。
现在,Instagram迎来了它的5岁生日,它在全球拥有4亿用户,每天有8千万相片或视频在上面分享。回首过去的5年,我们在简洁的设计与适当多的功能间取得了平衡,在去年,我们改进了“搜索与发现”界面,启动一个新功能——私密分享,并持续地改进排版等编辑工具。
5年来,我们的团队一直在发展壮大,但我们仍对功能增加保持着克制,以维持轻量化的产品特点,我们认为这一特点是我们在第一个五年里取得成功的核心原因。下面是我总结这五年以来我们的重要里程碑事件,其中有好有坏有惊喜。但愿这里的一些经验能够对年轻的创业者有所帮助。
里程碑1:三个月内取得一百万用户
产品发布之后的第一个月是我们的噩梦——每天凌晨3点服务器由于流量过大发出警报成为了家常便饭。这是因为在第一天的爆炸性的25000用户之后,我们的用户继续迅速增长到100万!
用户很热情,争先恐后地注册我们的产品,我们感到很振奋,而我们也曾经对用户保证能够承受住巨大的访问流量。起初,我们在洛杉矶买了一个独立的服务器,但性能不高,比Macbook Pro还差点。我在第一天过后,第一时间打电话给主机供应商,让他们换更好的服务器以应对巨大流量,它们说需要4天的时间,如果我们要加价的话,可以48小时内完成。我们等不了那么长时间,用户不会给你第二次机会,我么决定将服务器转到亚马逊的云服务器上。
有了初步的成就,服务器等基本设施也已完备,我们想打广告,让更多人知道我们。我们请了两家公司QCon和Velocity制作广告视频,并将之放在Facebook、Netflix、Twitter等平台上。当今社会对新鲜事物的包容,追求最新的科技潮流的文化使我们获益良多,而我们的开发博客也吸引了不少人的关注。
提要:创业初期,面对纷繁的工作,我们有一个共识:“先把最简单的事情搞定。”这指导我们度过了起初的艰难时光。一开始我们只有2个人,当我们面对挑战时,我们往往从简单处着手,找到最高效的解决方案,这支撑着我们的团队一步步发展壮大。
里程碑2:安卓计划——众望所归的项目
在Instagram的这几年,我和Kevin多次讨论过一个问题:安卓版的Instagram什么时候发布?
一开始,为了让产品能快速推出市场,快速迭代更新,我们仅仅发布了iOS版本,毕竟我们只有两名工程师。2012年到来的时候,我们有了更充裕的时间和人员开发多平台的应用。我们的安卓应用花了三名工程师3个月的时间,打造出一款拥有典型的Instagram风格的安卓App,有两名工程师是初次接触安卓开发,由我们的王牌工程师Philip带领他们。他首次在安卓应用中支持了Gowalla(安卓2.1中基于地理位置的分享服务),并至今担任我们的安卓团队队长。
在那时,为了使我们的应用能够尽可能地良好支持各式各样的安卓手机,甚至包括华为的M865 Ascend II 2 Touch这样的冷门手机,我扮演一个“职业eBay买家”的角色。大多数时候,一款新的手机寄到我们的办公室,我们立刻把Instagram装上去,如果能够良好运行,我们会感到万分欣喜。安卓设备的宽度各不相同,这对我们是一个很大的挑战,特别是我们的Instagram视频。回过头看,对哪怕销量极小的安卓设备都有良好的支持仍是一个不小的奇迹。
Instagram刚刚上线的12小时,用户量就突破了100万——真让人难以置信。在那时,我写下了《在基础设施方面的几个教训》这篇文章。之后,我们在安卓平台上发布了与原生安卓风格接近的Instagram。直到今天,得益于我们良好的优化,Instagram仍然是最流畅的安卓应用之一。
提要:单一平台的起点让我们能保持专注、快速迭代、没有兼容性的包袱。当推出多平台的版本时,我们成立了一个对安卓有深刻见解的小团队,拥有一个才华横溢的领导。在那之后,再将安卓团队的人才慢慢完善,让我们把应用程序更贴近原声安卓的风格。
里程碑3:2012弗吉尼亚风暴
2012年,当我在波特兰享受我为期3天的短期假期时,手机突然响个不停,接通电话,立即有个声音大喊:“Instagram.com宕机了!(服务器挂了)”。经过小小的测试,发现不只是Instagram,Netflix和其他网站竟然也挂了。我赶回到我们的公寓,打开笔记本电脑,看到亚马逊云服务器发来不幸的消息:“美国东部发生了意外事件,部分服务器受到影响。”弗吉尼亚州的一个巨大风暴造成我们一半以上的服务器停电。在接下来的36小时,我们不得不重建我们的服务器等基础设施。还好有些服务器尚可工作。
在那时,我们的后端团队由我,我们第一个工程师Shayne,刚加入Instagram不久的Rick组成。没有用户数据丢失,但这次事件暴露了我们应该更多利用自动化来工作。
这次的宕机事件虽属意外,但基于稳定性考虑,我们需要一个更可靠的系统提供服务。一年之后,我们把所有不稳定的脚本转换为一个全自动系统,并大幅减少了后端团队的成员。
我们此前对于亚马逊EBS数据备份系统极度依赖,而我们现在也转移到了WAL-E和Postgres两套预写日志系统。我们也采用了可靠的交叉数据中心,这使得我们可以将数据分布式地放到不同的地方。
提要:利用脚本自动化后台,需要前期的漫长准备工作,但能够给工程师们带来大量的经验,比如在应对意外事件的时候。我很高兴我们有十分优秀的工程师,当我们面对意想不到的灾难时,Shayne和Rick二话不说迅速投入了艰苦的战斗,堪比《火星救援》。
里程碑4:迁移数据
用户增长里程碑:
2010年10月6号首次上线:2.5万用户
2010年11月:1百万用户
2012年:3千万用户
2013年:2亿用户
2013年时,我们拥有了2亿月活跃用户,每个月超过200亿张相片被上传分享。我们的团队在成长,但仍然非常小,我们对Instagram社区的活跃感到激动不已。
随着时间流逝,我们一直在寻找一种能把数据从亚马逊不知不觉的迁移到Facebook的数据库中的办法。(Instagram于2012年4月被Facebook以10亿美金收购,他们的站点完整性(Site Integrity)系统可以帮助我们抵抗垃圾内容。但这件事情如果在亚马逊的云服务器上很难办到,而越晚迁移数据,难度越大,成本也就越高。毫无疑问,我们必须尽早找到迁移数据的方法,但迁移上亿张相片的过程必须是不被用户感知的、无缝的、不能使服务器关闭。所以迁移开始时就像是在时速100公里的汽车内切换驾驶员。一个由Facebook与Instagram工程师组成的小团队首先为数据的迁移打造了一个共有网络,并使用Neti工具将数据从EC2移到了亚马逊的一个虚拟专用云(VPC),然后谨慎地迁移我们的系统和工具,其中包括通过一个ig命令行工具为数据迁移在Facebook的服务器上搭建了类似的开发环境。最后我们使用最小的代价完成了数据的迁移。
教训:不要重新发明轮子。通过迁移到Facebook的服务器,我们的服务器运行更加迅速,速度更快,一个效率更高的数据中心,比如我们充分利用的Facebook的反垃圾程序。我们能够保持灵活,小而美的团队,归功于将基础设施及服务器维护交给了Facebook来做,他们拥有强大的资源及丰富的经验,升级也更快。
里程碑5:Instagram新趋势
在今年早些时候对搜索&发现功能进行了改进,让发现周围新奇事物的过程变得更加容易及有趣。我们引导用户添加标签、地点等元数据(meta data),且建立了一个新的机制用于筛选,并推荐给Instagram用户新出现的最好内容。
我们第一次采用算法对正在流行的事情进行统计在2010年,也就是Instagram刚刚发布的时候,我们设计了一个“流行”页面。“流行”的算法非常简单:算出每一张照片的点赞数,每4小时清零一次。这在我们的用户数量还很少的时候挺管用,但随着用户量的迅速增长,我们需要更细致的算法推荐。
随着用户数量迅速增长,我们致力于更加个性化的“发现”功能,我们改为无限滚动的卷轴界面,里面的照片和视频都是针对每一个用户定制。在一个月之内,比起非个性化推荐,我们的用户的浏览量增加了5倍。今年,我们把之前的“流行”标签重新拾起,一个可以快速浏览Instagram流行趋势的功能,与之前的“流行”相仿。正好,我们团队新加入一个机器学习的专家,使我们有能力通过一系列复杂的算法感知Instagram社区的流行趋势。
教训:在一开始,把事情简化,不代表这永远有效。我们让我们的产品持续进化,把我们建立的数据处理团队应对日渐庞大的社区。
最近五年,对我们来说都是一次激动人心的冒险。在Instagram 5周岁生日之际,停下来回顾往事,展望未来,我坚定的相信我们的用户数量还会持续增长,我们的产品会变得更棒,在Medium上,从来就不缺乏“回顾我的十年”这样的文章,我想,五年之后我也能写一篇,到时再分享人生经验吧。
via Medium
雷峰网原创文章,未经授权禁止转载。详情见转载须知。