写点什么

来自 MailBox 的应用扩展经验

  • 2013-06-22
  • 本文字数:2092 字

    阅读完需:约 7 分钟

MailBox 可以算是创业社区的一个奇迹,从应用推出到被 DropBox 以 1 亿美元收购,仅仅用了不到 1 个月的时间,这样的成绩自然与其产品的受欢迎程度密不可分。最近,有国外媒体采访了MailBox 应用的开发主管Sean Beausoleil,深入了解了MailBox 如何成功地处理用户数量迅速增长所带来的扩展性问题。

据Beausoleil 透露,因为电子邮件应用设计到很多数据来源,所以从一开始,开发团队就做好了大规模后台系统的准备,无论是心理上的还是代码上的,但是百万用户的增长速度仍然超过了开发团队的预期。所以,他们通过一次次的迭代过程不断扩展MailBox。

Beausoleil 把 MailBox 的扩展历程分为三个步骤,分别是:

  • 设计阶段,通过迭代过程慎重地考虑规模扩张。
  • 模拟阶段,通过对用户量的测试模拟来发现并修补产品存在的扩展性问题。
  • 反馈阶段,一旦产品上线,就对用户的负载压力快速做出响应,及时解决问题。

具体来说,“系统模块化”是开发团队在设计阶段的主要选择,这有利于迭代期间专注的处理某一个模块的具体问题,而不会被淹没在整体系统的复杂性之中。

而为了更好地模拟用户负载,MailBox 的开发团队搭建了相关的测试系统和模拟工具,这使得他们在产品发布之前发现了不少扩展性方面的问题,Beausoleil 认为如果这些问题在发布之后被发现,那么修补的成本和压力都会很高。

不过,无论在前期做了多少工作,发布的产品总不会是一个完美的系统,这也是开发团队的共识。所以,面对产品发布之后的问题,开发团队总是快速做出反应,深入分析问题的原因,并做好设计和约束方面的评估,然后付之于行动。

对于一款移动应用,用户体验是必须要重视的。MaiBox 很清楚这一点,作为一家聪明的创业公司,他们选择了一种聪明的方式来降低用户负载的增速——排队系统,这类似于饥饿营销,但是让用户又能够接受。MailBox 上线初期采用了排队注册的方式,虽然应用提供免费下载,但是下载后会自动开始排队,用户必须耐心等待获得注册。通过这种方式,开发团队获得了宝贵的喘息机会,他们对产品的扩展性迅速做出调整,满足了后续的发展势头。

Beausoleil 特别提到,MailBox 扩展性好的一个重要原因是限制了技术的数量,也就是说,开发团队专注于把自己熟练掌握的几门技术来打造一款出色的应用,而不是百花齐放,掺入过多的不同技术,一方面会让开发人员受到不断学习的压力(在项目上线初期,精力和时间是何其宝贵),另一方面也影响团队快速做出反馈的信心和实际效果。

MailBox 的后台基础设施采用了 Amazon 的 AWS 云服务,对于创业公司来说,这是一个不错的选择,没有太多的人力资源来管理一个专用的数据中心,AWS 的成本对创业者来说很划算。

Beausoleil 在回顾了 MailBox 发展过程之后表示,整个系统扩展的问题在事后总结时会觉得在发布之前就应该想到和解决,但实际操作过程中,只有开发团队经历之后,才会想到这些解决方案,所以只有通过不断的迭代、迭代、迭代在产品上线后随机应变地解决实际的扩展性问题。

highscalability 网站总结了这次采访的要点,主要包括:

  • 对产品发布后的信息提前进行收集。预热视频可以让用户对产品产生兴趣,同时也可以让你预见产品发布后的效果,并得到反馈信息,从而提前做出准备。产品拥有一些独一无二的特性。有特别之处才可以吸引用户,将创新之处列出清单,并逐个实现。
  • 开发团队了解产品背景。比如电子邮件业务对资源的需求就很高,并且对产品要求苛刻,所以需要尽快的扩展。Mailbox 初始只针对 Gmail 以及 iPhone,清晰狭窄的目标可以让你在产品设计上投入更多精力,做出更有针对性的项目。
  • 因为初期设计就是一个模块化系统,这样就可以根据需求对不同的组件进行迭代。建立模拟系统用以发现问题,这些测试解决了许多项目在运行过程中难以解决的问题,而这个重要的步骤一般被许多初创公司所跳过。将技术的数量限制到最小。因为精力是有限的,谁都不可能成为许多领域的专家,专注自己的产品开发才是王道。
  • 关注用户行为。核心基础设施的调整、分解或者删除宗旨在于适应用户的使用模式。云具有成本效益和高效两大特性,云是快速和有限资源构建应用的最佳搭档。
  • 通过排队系统限制新用户的增长速度。早期 Mailbox 的排队系统比产品更加出名,有些类似于“饥饿营销”,不仅刺激了用户,还以一种可控制模式有效的引导负载。这里的关键在于用户体验,而不是吸引新用户。开发者不断的修复故障并完善系统,在早期的开发中应该着重对待,这也是项目整个周期最高效的一个阶段。
  • 应用不可避免会发生故障并且进行修复。任何测试都是有条件的,许多未知的问题在特定的环境下就会爆发出来。通过不停的迭代,你将更加了解你的系统、数据和用户行为。 如果你现存的技术不再适合目前的环境,果断使用可替代方案去替换。花时间去做新的技术选择,然后在这些技术上下功夫。
  • 注意过程的重要性。经历整个产品周期,这是团队和产品磨合的重要组成部分。
  • 选择时机被收购。在 Mailbox 产品发布的一个月后就被 Dropbox 收购,原因是 Dropbox 可以帮助他们增长的更快、更大。
  • 良好的客户沟通。如果关注 Mailbox 的博客,你就会发现其团队在解释目前正在做的事情上做了很多的努力,足够多的细节让用户感到的是欣慰而不是困惑。
2013-06-22 08:411108
用户头像

发布了 501 篇内容, 共 238.5 次阅读, 收获喜欢 55 次。

关注

评论

发布
暂无评论
发现更多内容

Java StringBuffer 动态字符串

爱好编程进阶

程序员 后端开发

java 通过 SmbFile 类操作共享文件夹

爱好编程进阶

程序员 后端开发

AliIAC 智能音频编解码器:在有限带宽条件下带来更高质量的音频通话体验

阿里云视频云

语音 音频 视频云 音频编码器

ETL自动化运维调度管理工具 TASKCTL 流程文件系统

TASKCTL

程序员 DevOps 运维 ETL 大数据运维

CRUD勿进,全身心投入才能读懂腾讯P8亲码的“Java微服务

爱好编程进阶

Java 程序员 后端开发

Go流程控制——条件语句

爱好编程进阶

Java 程序员 后端开发

【INFOCOM 2022】支持任意网络拓扑的同步流水线并行训练算法,有效减少大规模神经网络的训练时间

阿里云大数据AI技术

神经网络 机器学习 算法 并行训练算法

java poi 读取Excel中的手机号或电话号码,手机号变成1

爱好编程进阶

程序员 后端开发

FastDFS 和nginx整合

爱好编程进阶

Java 程序员 后端开发

4月份,我月更了 25 篇文章,撸了 4w 多字

杨成功

程序员 数据结构 前端

IDEA的Docker插件实战(Dockerfile篇)

爱好编程进阶

Java 程序员 后端开发

Java 生成随机数的 5 种方式,你知道几种?

爱好编程进阶

Java 程序员 后端开发

刷了三个月leetcode算法,顺利拿下百度、阿里等大厂的offer

Java架构追梦

Java 后端开发 数据与算法

GNN在下拉推荐的应用

爱好编程进阶

Java 程序员 后端开发

GroupingComparator分组

爱好编程进阶

Java 程序员 后端开发

CTO 说了,用错 @Autowired 和

爱好编程进阶

Java 程序员 后端开发

一个学渣对于stack的顿悟(2):穿越虚拟内存的迷雾

计算机漫游

线程 cpu 堆栈 进程

Day200

爱好编程进阶

Java 程序员 后端开发

EL和JSTL基本使用

爱好编程进阶

Java 程序员 后端开发

造孽啊!阿里内部的神级项目和JDK源码阅读指南竟惨遭GitHub开源

Java架构追梦

Java 程序员 后端开发

CoProcessFunction实战三部曲之三:定时器和侧输出

爱好编程进阶

Java 程序员 后端开发

一个学渣对于stack的顿悟(3):溯源 goroutine 堆栈

计算机漫游

golang 堆栈 协程 stack goroutine

Java面试前的敲门砖:多线程+微服务spring源码+Redis+docker+Git

Java架构追梦

Java 后端开发 程序员面试

Java 类型信息详解和反射机制

爱好编程进阶

Java 程序员 后端开发

来自MailBox的应用扩展经验_移动_崔康_InfoQ精选文章