# 创始人告诉你，Instagram 成功的 5 个经验

- 作者：黄 美菁
- 发布时间：2015-10-30 11:33
- 分类：公司
- 原文：https://www.ifanr.com/578214

[![Instagramcake](https://s3.ifanr.com/wp-content/uploads/2015/10/Instagramcake.jpg)](https://s3.ifanr.com/wp-content/uploads/2015/10/Instagramcake.jpg)

2010 年，我们推出 Instagram 第一版的前一夜，联合创始人 Kevin 和我打赌，在没有任何推广的情况下，第一天会有多少人下载我们的 app。Kevin 猜是 2500 人，而在那个特别乐观的瞬间，我决定把数目定高，猜测会有 25000 人。结果第二天，我都不敢相信，下载量恰好就是我所估计的数目。

如今，在我们第 5 个生日之际，Instagram 在全球已经拥有 4 亿用户，他们每天上传 8000 万张图片或视频。往回看，我们在最初的产品上就实现了简洁与精细的平衡，而在上一年，搜索和发现功能得到更新，Instagram Direct 上线了全新界面，并且有创意小工具不断推出，比如 Layout。

在我们团队发展的这五年中，我们一直忠于我们的原则：先做简单的事。而在我们的下一个五年，也会把它继续作为核心。下面是我们在过去五年创立 Instagram 过程中的一些大的里程碑——有好的，不好的，还有令人惊喜的。我希望其中会有你可以带走的经验，帮助你去发展你自己的团队和公司。

### 里程碑 #1：3 个月内拥有 100 万用户

总结：最大的挑战

在 Instagram 推出后的第一个月，情况几乎是混沌的—— 凌晨三点服务器警告页面的出现是常态而不是例外。在第一天激增至 25000 名用户后，我们的用户数继续快速增长，直到达到 100 万。没有什么刺激比人们真的想用我们的产品更强烈的了，于是我们换到了“高速档”，确保我们可以支撑增长的需求。当我们刚开始的时候，Instagram 只在洛杉矶的一个服务器上运行，它的运算能力比一部 Macbook Pro 还要差。在遭遇到第一天快速增长之后，我跟主机服务提供商打电话，要求增加一台服务器，他们说需要 4 天才能实现——如果我们很急的话可以缩短到 48 小时。考虑到我们的增长看起来那么不可预测，我们决定转移到 AWS（亚马逊网络服务）。

考虑到我们在基础架构上都没有太多的经验，我们不得不快速地吸收尽量多的知识。QCon 和 Velocity 上有非常好的会议视频，Facebook，NEtflix，Twitter 还有其他网站上也有很多相关文章。共享技术性想法的这种开放文化是我们这个行业最好的东西之一，也是促使我们更新技术博客的主要因素。

**可借鉴的经验**：我们的原则——“先做简单的事”在最开始的时候已经成型了。因为当时我们只有两个人，因此，每一次面对新挑战的时候，我们都需要确定一个最快速，最简单的解决办法。如果当时我们对一切事情都作长远考虑，那么我们可能会因为什么也做不了而瘫痪。选择最重要的问题去解决，选择最简单的解决方法，这样才能支撑起我们指数式的增长。

### 里程碑 #2：登陆 Android

总结：最令人期待的发布

在 Instagram 的最初几年，每一次我和 Kevin 上台时都会遇到同样的一个问题：“Android 版本什么时候推出？”

我们刚开始只发布了 iOS 版本，这是因为我们希望可以快速迭代我们的产品——要知道我们当时只有两个工程师。但进入 2012 年，拓展到更多平台上的时机已经到来。在典型的 Instagram 风格下，我们的 Android app 在三个工程师的三个月努力下搭建起来。团队里除了有两位为完成这个项目而学习 Android 的工程师外，还有从 Gowalla（一家基于位置服务的社交网络公司，在 2012 年关闭） 的 Android 部门过来的 Philip，他领导 Instagram 的移动业务直到现在。

在那段时间里我部分的工作是成为一个“专业的 eBay 购物者”，因为我们希望在尽可能多的设备上测试我们的 app，包括一个叫“M865 Ascend II 2 Touch”的手机。通常的流程是，拆开送来我们办公室的新手机，安装我们的测试版 app，然后赞叹 app 在上面的良好表现。Android 设备的广泛给我们带来了一些挑战——特别当我们开发 Instagram 视频产品的时候。但是，在很小的改动后，我们的应用就能适应如此多设备，这让我们非常兴奋。

[![Instagram&#95;Android](https://s3.ifanr.com/wp-content/uploads/2015/10/Instagram_Android.jpeg)](https://s3.ifanr.com/wp-content/uploads/2015/10/Instagram_Android.jpeg)

当 Android 版本发布后的 12 个小时，有超过 100 万新用户加入 Instagram——这是一个非常难以置信的结果。在那个时候，我还写了一些在基础架构上学到的东西。随着时间的推移，我们的 Android 版本不断更新，越来越像平台上的原生应用了。到了今天，它已经成为增长最快、评分最高的 Android 应用之一。

**可借鉴的经验**：从一个平台上起步，这使得我们可以专注其中，并且，我们可以快速迭代而不需要任何东西都重复实现两次（在 Instagram 内部我们经常说“把更少的事情做好”）。当到了需要拓展到更多平台的时间，我们搭建了一个小团队，里面包括 Android 的专家和一些对这个平台不熟悉但有才华的工程师。组建一支成熟的 Android 团队让我们的 app 可以逐渐适应那个平台。

### 里程碑 #3：2012 年弗吉尼亚风暴

总结：最糟糕的断电

当时，我正在波特兰享受三天的长周末，电话响了：“Instagram.com 宕机了“。我立刻上网查看，发现除了 Instagram 之外，Netflix 和其他网站也出现了同样的问题。我跑回旅馆，打开笔记本，看到 AWS（亚马逊网络服务）的状态页面上有一条让人惊慌的消息：“us-east 可用区（位于美国东部）出现电力问题”。一场大风暴席卷了弗吉尼亚，我们的虚拟服务器几乎一半都失去了电力。接下来的 36 个小时里，我们艰难地重建了几乎全部的基础设施。可以苦中作乐的是，由于此事，出现了下面这幅搞笑图片：

[![Instagram3](https://s3.ifanr.com/wp-content/uploads/2015/10/Instagram3.jpeg)](https://s3.ifanr.com/wp-content/uploads/2015/10/Instagram3.jpeg)

（Instagram 宕机了，跟我说说你中午饭吃了什么）

当时，我们全部的后端技术团队只包括我自己、首位工程师 Shayne 和 Rick——他加入 Instagram 的时间不到一个月。用户数据未遭受任何损失，但是，此次断电揭示出了我们在自动化运维上的短板。

这次断电倒逼我们采用重用性更高的服务器配置过程。在之后的一年中，我们将所有配置从一大堆容易出问题的 shell 脚本迁移到了 chef （一个开源的配置管理以及自动化运维工具），这大幅降低了新团队上手的门槛。

除此之外，我们还使用了开源项目 WAL-E 和 Postgres 内置的 WAL （预写日志）替代了依赖于 Amazon ELB （Amazon AWS 提供的块存储方案） 的数据库备份方案，并实现了数据库同步 (replication)。除此之外，我们也成立了一个可靠性工作组，这个工作组使 Instagram 拥有了运行在物理分布式的数据中心上的能力。

**可借鉴的经验：**尽管构建一个脚本话的基础构架需要不少前期工作，但是在基础设施运维组有新成员加入时以及在灾难恢复工作进行时，这些前期工作将得到回报。除此之外，我也很高兴的看到，我们招聘的工程师非常优秀——当遇到状况外的糟糕状况时，Shayne 和 Rick 都紧张的投入了工作，让我们重新恢复了服务。一次解决一个问题，像 Mart-Watney（电影《火星救援》的宇航员）那样。

### 里程碑 #4：Instagram 式的融合

总结：最具野心的工程项目

2010.10.5 : 0 用户 ?  
2010.10.6: 25,000 用户?  
2010.11: 100 万用户?  
2012: 3000 万用户?  
2013: 2 亿用户?

到了 2013 年，Instagram 的每月使用人数达到 2 亿，存储照片达到 200 亿张。尽管团队在扩张，整个团队仍然是个小团队，而且，我们激动地看到了 Instagram 社区的持续成长。

随着时间推移，我们不断思考如何与 Facebook 的现有后端系统进行整合。例如， Site Integrity(站点完整性)系统可以对抗垃圾信息。但是，因为基础设施运行在在 AWS 上，这种整合就很难进行。而且，我们等待时间越长，不断扩张（而且愈加昂贵）的基础架构就越不容易迁移。

很显然，我们需要迁移到 Facebook 的基础设施上面，但是，当我们迁移上亿用户和数十亿图片时，我们不想影响自己的服务。于是，Instagration（这是作者创造的复合词，instagram+intergration，Instagram 式的整合）开始了。对于这件事，我比较喜欢的一个比方是汽车在 100 英里时速的行驶中更换所有的零件。一个包括 Instagram 员工与 Facebook 工程师的 8 人小团队接受了这个挑战。首先，他们开发了一个叫做 Neti （https://github.com/Instagram/neti） 的工具把实例从 AWS EC2 经典网络迁移到了 VPC 上。接下来，他们构建了一个叫做 “ig” 的命令行工具，在 Facebook 的数据中心中模拟了 AWS 的设计模式以及使用习惯。在这一切的周密安排下， Instagram 在做到最小的影响下完成了一次最大的迁移。

**可借鉴的经验：**不要重新发明轮子。转向 Facebook 的服务器后，我们的基础设施变得更快速、更高效。同时，我们还可以利用 Facebook 的其他工具，比如反垃圾工具等等。我们仍然维持了小团队，但是，我们利用了 Facebook 的资源和经验，实现了更快的迭代。

### 里程碑 #5：Instagram 的“热门”功能

总结：下一个大赌注

今年早期，我们重新设计了“搜索和探索”功能，使用户能够更方便地寻找 Instagram 上的有趣时刻——当它们发生的时候。我们推出了热门标签和地点功能，并且构建了全新的基础架构，能够对 Instagram 上最好的内容进行辨识、排序和展现。

我们对热门趋势的首次展现是 2010 年的“流行”页面。这是 Instagram 发布时就有的功能。算法非常简单：用每张照片实际拥有的赞数来排列，而 4 小时之后照片就会逐渐消失。当我们的社区很小时，这是不错的做法，但是，随着时间的推移，我们意识到，我们需要一种更为精细的方法。

考虑到我们已经扩大的社区，2014 年，我们开始了“探索”功能的个性化，为每个人带来了可无尽滑动的图片和视频页面。在几个月里，我们的用户与内容的交互次数达到了“探索”未个性化前的 5 倍。今年，我们让原来的“流行“页面回归——让你一览 Instagram 的全貌——它就是我们的“热门”功能。随着排序和机器学习专家加入我们的团队，我们能够使广为人知的热门趋势算法适应 Instagram 社区的各种需求。

**可借鉴的经验**：先做简单的事并不意味着你的方案永远合适。我们学会了以开放态度对待产品的进化，以及为实现特定目标而组建团队，比如 Datagram 团队。这使得我们可以适应快速扩大的社区。

对于我们中的大多数人来说，过去的五年是一段狂野的旅程。在生日之际，停下来反思，这是一件不错的事情。我相信，我们的社区会继续成长，而我们的产品也会不断改进。当我今后在 Medium 写下“回顾 10 年“ 的时候，肯定还有聊不完的话题。向接下来的 5 年进发！

> 本文全文译自 Medium ，原文标题 [War Stories，Five Years of Building Instagram](https://medium.com/backchannel/war-stories-3696d00207ff#.f7q3s8kzk)，作者为 Instagram 创始人 Mike Krieger。他在文中讲述了 Instagram 这五年来的 5 件里程碑事件和从中得到的经验教训。爱范儿积木、黄美菁翻译出品，感谢爱范儿技术部门对技术细节的核对。

题图来自：[YouTube](https://www.youtube.com/watch?v=1_GnklJw36I) 插图来自：[Medium](https://medium.com/backchannel/war-stories-3696d00207ff#.f7q3s8kzk)
