# 增长黑客营销的四大步骤

  1. 产品研发阶段,捕捉并扩大PMF(产品—市场契合度)
  2. 找到并培育种子用户
  3. 植入病毒式增长因素
  4. 以数据为支撑,以实现产品最优化为目标,重复以上步骤

# 用户增长如何以PMF开始

  1. 产品—市场契合度是指产品满足市场强烈需求的程度。

  2. 从最简可行产品开始,并在用户反馈中进步。

  3. 使用已得的数据和信息支持提升PMF。

  4. 尽可能早的了解客户的需求

    1. 例如,亚马逊员工在项目开始之前便提供内部通讯稿以收集反馈。
    2. 例如,沃纳·威格尔建议为你正在开发的产品编写常见问题解答/关键用户体验/用户手册=概念+操作+参考。
  5. 用苏格拉底反诘法找出答案

    1. 这个产品是给谁用的?他们为什么要用它?我又为什么要用它?
    2. 是什么让你喜欢上了这个产品?又是什么阻碍了你把产品介绍给别人?这个产品缺失了什么?而它的亮点又是什么?

从优秀到卓越

345 2018-11-05 15:02

带领公司从优秀走向卓越等同于通过如下三个因素,推动巨大的飞轮,实现突破

  1. 纪律严明训练有素的人
    1. 五级领导力:卓越的领导者>富有成效的领导者>能干的管理者>乐于奉献的团队成员>能力精干的人
    2. 先人后事
  2. 纪律严明训练有素的想法
    1. 直面残酷的现实
    2. 先做个刺猬,再做个狐狸
  3. 纪律严明训练有素的行为
    1. 训练有素的文化
    2. 技术是发展动力的加速器
  1. 针对几百或一千个关键人物,而不是数百万人
    1. 例如,Dropbox在首次发布时以一个有趣的演示视频开始。人们可以注册但需要等待使用它。用一些新颖且令人兴奋的东西来吸引用户
    2. 又如,2012年eBay与Gogo合作,在航班飞行期间提供免费无线网络连接ebay.com。它的高明之处在于可以跟踪数据,通过看它是否有益来决定是否继续合作
  2. 不要针对所有人 - 针对合适的人
    1. 例如,优步为奥斯汀的西南偏南会议提供了多年的免费乘车服务,这一举措吸引了成千上万的年轻且有高收入的技术爱好者
    2. 小技巧
      • 说服媒体网站写关于自己的内容
      • 在Hacker News, Quora 和 Reddit上发表帖子
      • 写博客
      • 使用Kickstarter众筹
      • 通过 www.helpareporter.com 来联系记者
      • 免费或通过一些奖励来邀请用户
    3. 大技巧
      • 用“仅限邀请”创造排他性的饥饿营销
      • 创建虚假用户以使其更加活跃。 (Reddit采用了这种方法)
      • 专注于单一平台(PayPal和eBay)
      • 逐个用户群组扩散到另一个用户群组(Facebook和大学)
      • 吸引有影响力的人,因为他们有广大的受众和良好的声誉
      • 在电子商务网站的子域上做慈善捐赠(Amazon)
  3. 专注于新用户注册(获取)而非品牌意识
  4. 增长技术 = 市场营销 + 工程
    1. 例如,爱彼迎(Airbnb)制作工具同时向 Craigslist 交叉发布帖子
    2. 肖恩·埃利斯曾经说过:“坚持专注于获取客户而不是’创造品牌意识’往往需要克制… 诚然,如果公司到了一定规模,品牌意识/品牌建设是有意义的。但是,在最初的一两年内这就完全是在浪费钱”
    3. 无效的行为
      1. 盛大的发布
      2. 一厢情愿地认为,桃李不言,下自成蹊 (而亚伦·斯沃茨认为,用户必须被吸引才会来)

设计一个短网址系统

503 2018-11-01 02:32

设计一个系统,可以将用户给的网址变成短网址,用户使用这些短网址可以访问他们原来给的网址(下面简称长网址)。描述这个系统是怎么运作的,需包括但不限于下面的问题:怎么分配短网址?怎么存储短网址和长网址的映射关系?怎么实现跳转服务?怎么存储访问数据?

假设:在一开始的问题描述中不包含这些假设。一个优秀的面试者在得到一个具体设计的时候会问关于系统规模的问题。

  • 长网址的域名大概有上万个
  • 新的长网址流量大概是 10,000,000/天 (100/秒)
  • 使用短网址访问长网址的跳转服务的流量大概是 10B/天 (100,000/秒)
  • 提醒面试者这些是平均数字 - 在一些高峰期的时候这些数字会大很多(一种时间导致的高峰期,比如用户刚工作完回家的时候, 另一种是事件导致的高峰期,比如春节联欢晚会的时候)
  • 最近的数据(比如今天的数据)应该被提前收集好,并且在用户想要看的时候可以在五分钟内得到。
  • 每天计算历史数据

# 假设

每天有1B新网址,100B的短网址访问 短网址越短越好 数据的展示(实时/每天/每个月/每年)

# 网址编码

http://blog.codinghorror.com/url-shortening-hashes-in-practice/

方法1. md5(128位,16个16进制数字,冲突,生日悖论,2^(n/2) = 2^64) 再短一些?(64位,8个16进制数字,冲突 2^32), 64进制。

  • 优点:哈希比较简单 而且 易于横向拓展。
  • 缺点:太长,怎么去处理过期的网址?

方法2. 分布式的序号生成器。(62进制: a~z, A~Z, 0~9, 62种字符, 62^7), 分区:每个节点包含一些序号。

  • 优点:容易淘汰过期的网址,网址更短
  • 缺点:不同分区之间的协调(zookeeper)

# 键值(KV)存储

MySQL(10k 每秒访问量,慢,没有关系不需要关系型数据库),键值(100k 每秒访问量,Redis, Memcached)

一个优秀的面试者会问关于短网址的预期使用期限,设计一套系统可以自动清理已经过期的短网址。

# 跟进

问题:怎么生成短网址?

  • 一个差的面试者 会提议用一个id生成器(单点故障)或者要在每个id生成的时候需要id生成器之间协同合作。 举例,使用自动增值的主键(auto-increment primary key)的数据库。
  • 一个可以接受的面试者 会提议用md5,或者一些UUID生成器可以在一些结点上自己生成id的。这些方法可以在分布式系统上生成不冲突的ID,所以可以生产大量的短网址。
  • 一个优秀的面试者 会设计一个方法利用一些id生成器,每个生成器先从中央协调器(例如ZooKeeper)保留一块id序列,这些id生成器可以单独从他们的id序列中分配id,有必要的时候在自己的id序列中做一些清理。

问题:怎么存储长网址和短网址之间的映射关系?

  • 一个差的面试者 会建议使用一个单一的,非分布式,非关系型的数据库。它只是一个单纯的键值数据库。
  • 一个优秀的面试者 会建议用简便的分布式系存储,例如 MongoDB/HBase/Voldemort 等。
  • 一个更优秀的面试者 会问关于短网址的预期使用周期,然后设计一套系统可以清理过期的短网址

问题:怎么实现跳转服务?

  • 一个差的面试者 会从头开始设计这套系统来解决已经被解决的问题
  • 一个优秀的面试者 会建议使用一个现成的HTTP服务器加上一个插件,用这个插件来翻译这个短网址的id,在数据库中找这个id,更新访问数据,返回303,跳转到长网址。 现成HTTP服务器比如 Apache/Jetty/Netty/tomcat 等。

问题:怎么存储访问数据?

  • 一个差的面试者 会建议每次访问都写到数据库。
  • 一个优秀的面试者 会建议由几个不同部分去做这件事情生成访问流数据,收集整理,每过一段时间写到永久数据库中

问题:怎么分上一个问题优秀面试者提出的存储访问数据的不同部分?

  • 一个优秀的面试者 会建议用一个延迟较低的信息系统去暂时存储访问数据,然后将数据交给收集整理部分
  • 面试者可能会问访问数据多久需要被更新一次。如果每天更新,一个比较合理的方法是存储在HDFS,用map/reduce去计算数据。 如果是要近乎实时的数据,收集整理的部分就要计算出所需的数据

问题:怎么阻止访问受限的网站?

  • 一个优秀的面试者 会要求在键值数据库里维护一个域名的黑名单。
  • 一个好的面试者 可能会提出一些先进的技术, 可以用在系统规模变得很大的情况下, 比如bloom filter。

失效转移:失效转移(failover)是一种备份操作模式,用于提高系统稳定性和可用性。当主要组件由于失效或预定关机时间的原因而无法工作时,这种模式中的系统组件(如处理机、服务器、网络或数据库)的功能被转嫁到二级系统组件。

冷备份:冷备份是将关键性文件拷贝到另外的位置的一种说法,使用特征或指标/警报来跟踪故障。系统在发生故障时提供新的备用节点,当然,冷备份仅适用于无状态服务。对于备份Oracle数据库而言,冷备份是最快和最安全的方法。

热备份:保持两个活动系统承担相同的任务角色,也就是系统处于正常运转状态下的备份。两个系统中数据几乎是实时镜像的,且拥有相同的数据。

温备份:保持两个活动系统,除非发生故障,否则次要系统不占用流量。

检查点(或类似于Redis快照):系统在处理任务之前使用预先写入(write-ahead)日志(WAL)记录请求。备用节点在故障转移期间从日志中恢复。

  • 缺点
    • 大量的日志恢复起来很耗时
    • 自上次检查点以来丢失数据
  • 用户案例:Storm, WhillWheel, Samza

双主机(或全部主机)模式:将两个活动系统保留在负载平衡器之后。主机之间是平行的,且数据复制是双向的。

© 2018 硅谷IO
Built with ❤️ in San Francisco