[关闭]
@niunux 2016-04-15T16:01:35.000000Z 字数 3313 阅读 648

在云端创建一家“轻公司”

南极圈


开场:各位南极圈极创营的小伙伴们,大家下午好。
(自我介绍)
随着移动互联网,云计算的发展,现在的创业,已经和几年前呈现出完全不同的模式。作为一家云的服务商,我们其实一直都在思考,思考一个很有意思的话题:“到底什么样的产品研发模式,是适应现在涌现的这些新兴的创业公司?“,是华为中兴的模式吗?是腾讯阿里的模式吗?显然都不太适合,所以我今天带来了这样一个话题,来和大家一起去探讨。

这是今天的主要内容,大家可以先了解一下

在开始之前,我想给大家分享一个故事,一个16人的公司所演绎的传奇故事。Instagram这家公司你们有多少人听过?想必比较早期关注互联网创业的人,很多都应该知道,2012年,Facebook 10亿美金收购了Instagram。很多媒体都关注Instagram的产品体验,商业模式,但是我更关注它背后的技术驱动力。这家公司有两个不同于以往其他公司的特点,一个就是增长非常快,另一个是人少,被收购时只有16个人。我这里给大家分享一组数据。2010年10月,上线第一天,吸引了2w用户,3个月后是100w用户,被收购时师3000w用户,收购后两个月,很快增长到5000w用户。目前是4亿月活跃用户。如果不懂技术的人,看到的是非常令人兴奋的数字,而懂技术的人,其实应该明白这其中面临着什么样的巨大的技术的挑战。他们的联合创始人麦克.克里格(Mike Krieger)在instagram engineering 上道出了其中的秘密。总结起来,有下面几点:

所以,现在创业公司技术演化的两个重要的趋势就是云计算,和开源。如果把十年前的创业比作是驾驶一辆汽车,那现在的创业,就好比是在开飞机。而云计算和开源,是飞机的两个非常重要的引擎。

分享完这个故事,我们先看看什么是轻公司。这里的轻公用,不等同于小公司,或者是初创公司,用户量很大的公司,也可能是一家轻的公司。就像Instagram。这里,我用一句话来定义一家轻的公司:”企业依托独特的技术平台,利用云+开源的能力,聚焦在自己核心的业务领域,将非核心领域外包给服务商,将公司做小,将用户做大“。这里的非核心领域,包括支撑型的技术,也包括IT基础设施。你们可以思考一下,你的公司,是否也是这样的。

既然要做一家轻的公司,那么,这家公司这家公司选择一种什么样的技术路线呢?这里,我想先问大家一个问题:”创业之前是否选择了自己的技术路线?“
我问过很多创业者,听到这个问题时,一般有这样几种反应:

那可能有人会问,什么是技术路线。下面这张图是我前几天在拉钩上截的一个公司招聘启事上的几幅图。这些就是技术路线。包括你使用的语言,框架,客户端类型等。这是一家做汽车o2o的公司,可以看到,他们后端采用的PHP,同时有web/ios/android三种客户端类型。数据库使用了mySQL,并且很有可能使用了Zend Framework这样的开发框架。

为什么技术路线很重要呢?我这里给大家在分享一个故事。有个兄弟,出去创业,找了个很牛的程序员,这兄弟平时很喜欢新技术。所以项目一开始使用golang去开发的。过了几个月,这兄弟走了,论道CEO傻眼了,市面上根本找不到golang的程序员,即使能够找到,也很贵。只好匆忙找了个PHP的程序员,用PHP语言重写。

如何选择技术路线呢?这里有三条经验:1. 技术合伙人最熟悉的技术 2.成熟的技术 3. 使用范围广泛的技术。

一家轻的公司,到底具备哪些特征呢?我总结了一下,主要有下面这五个特征。我们首先看它的IT资产,一定是服务化的方式去获取的,也就是固定的IT资产投资是0,一切在云端,通过服务租用的方式去使用IT资源。我相信在坐的各位应该都是这种模式吧,没有哪个公司,在开始创业之前,会先去建个机房,采购几台服务器,然后建自己的网络。当一切通过服务化的方式去获取IT资源时,我们IT维护的工作方式会发生根本的转变。也就是所谓的工作方式去IT化,去IT化不代表砍掉IT部门,而是他们的工作模式发生变化。传统的IT部门,主要职责是做IT预算,采购,配置管理。而轻公司的IT主要是规划业务架构,监控,管理资源。随之而来,产品研发模式也会发生根本的改变。我在传统的IT公司呆过五年。传统的IT企业,要设计一个系统时,往往是组织一个几十人,上百人的团队,从头研发所有的东西。他们与世隔绝,设计每一个模块,然后在一套复杂的机器上运行起来。而轻公司的研发模式,有点像搭积木,大量使用现成的服务和技术,像搭积木一样把这些东西按照自己的业务逻辑拼装起来。实现产品的快速上线。当然,轻公司,一定是采用了现代化的架构,让自己的架构能够随着业务增长能够灵活的伸缩。譬如分布式,或者最新的微服务都是普遍采用的架构。除了这些意外,云上的灵活扩展的能力,也是一个必备的属性。最后,一个轻量级的基础设施,一个灵活的架构,一个敏捷的产品开发模式,肯定离不开一个一直灵活,快速响应的团队。小团队作战,持续持续集成,是轻公司非常典型的团队组织模式。

如何构建一家轻公司呢?这里,我总结了三个关键点。从业务架构,到产品研发模式,到团队组织管理。谈到架构设计。很多人都有一种完美主义情节。在公司创建初期,往往会提出一个非常奇怪的问题:”我如何设计一个能向亿级用户平滑演进的架构“。对于这个问题,我能给出的答案是右边这个:”其实你想多了“。架构从来不是设计出来的,也没有所谓向亿级用户平滑演进的架构。架构从来都是自然生长出来的,不是设计出来的。

这里的架构法则,其实都是腾讯十七年海量用户运营经验最精华的总结,如果是从腾讯出来的兄弟,应该都非常的清楚。整个内容,可能需要一个非常系统化的课程去学习。这里我就讲一个柔性设计的案例。柔性设计有很多种方式,有的可以通过产品层面去做,有的可以通过技术层面去做。例如大家熟知的微信摇红包,每到特定的场合下,譬如春晚,流量会几十倍的增长。但是微信抢红包服务却一直非常的正常。这里用了一些非常有用的柔性设计的技巧。例如他们讲摇红包的场景,拆分成摇红包和领红包两个场景,这两个场景,用户的核心诉求是不一样的,摇红包需要快,但是不一定每次都要有红包,当压力较大时,在客户端对摇动次数进行合并。并且每次不一定要有红包出来。领红包需要快速响应,同时一定要成功,不能出错。当银行接口响应慢时,放弃了立即入账。将入账进行排队,延后处理。因为99%的用户不会马上去提现。所以延后入账他们几乎感知不到。当有人要提现时,马上进行插队,有限处理入账。这样最后达到系统的最终一致性。

提到研发过程,刚才也讲到了,传统的产品开发模式是左边这种模式。从最基础的东西开始做起。轻公司的研发模式是右边这样。利用现有的能力,快速去组装。现在在线直播比较火,不知道在坐的有没有做直播的?大家思考一下,要做一个直播的APP,我们如何去做,需要花多少时间。这个APP是我们做的一个直播的Demo,其实一个星期就完成了,只是自己做了一个UI,将云的能力进行了一下整合。其实用了腾讯云的音视频能力。快速开发直播应用的一个非常典型的案例。目前很多大家非常熟知的直播平台,都使用了我们提供的基础的音视频的能力,因此,他们能够在非常少的人力情况下,快速开发出体验一流的产品。

最后一部分,谈到团队的组织方式。20世纪60年代,有一个非著名的程序员,提出了一个著名的康威定律。左边这个是这个定律的定义。不过我们说人话:”有什么样的业务架构,就会有什么样的团队组织结构“。如果轻公司是一种完全的分布式,或者是微服务之类的架构,那边它一定存在与之匹配的团队架构。那么,轻公司的团队组织有下面这几个原则。首先一定是小团队作战。并且没有专门的运维团队,一般是谁构建,谁运维。当遇到特定的技术问题时,譬如性能,架构,故障等,会有专门的特种部队去处理。当然,团队和团队之间的沟通,用于都是最大的问题。未来一切皆API,团队之间彼此提供服务,通过API去通讯。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注