庄周梦蝶

生活、程序、未来

昨天、今天和明天

| Comments

这题目非常俗套,不过同名的本山大叔的小品我却是很喜欢,哪怕很多人说有歧视的嫌疑。

其实这篇博客就是吹吹水,总结下我过去 5 年做了哪些微小的工作,为什么加入蚂蚁金服以及加入蚂蚁金服准备做什么。

2012 年我从淘宝离职加入了 AVOS 中国公司,很多人看来不理解,为什么放着到手可得的股票而去加入一家前途未卜的创业公司?其实很简单,当时我在淘宝呆了三年,一直做消息中间件相关的工作,先是 Notify(蚂蚁这边叫 msgbroker ),后来是发现了 kafka,所以有了 MetaQ。。以当时的眼光看,MetaQ 很多东西都是更强大,功能更全面,比如高可靠的复制方案、事务消息乃至支持 XA 协议的分布式事务。但是做久了,确实腻歪,然后去转岗,最后半年去做 TAE(Taobao AppEngine)项目,第一次接触和引入了 Storm,当然,更重要的是结识了 Clojure 这门语言。顺其自然,国内玩 clojure 的人这么少,就认识了现在 LeanCloud 的 CEO 江宏,在杭州咖啡馆聊了一次,没过多久,我就决定加入了。所以说原因很简单,一是我想换个环境,当时的眼界和心境决定了我没法继续在阿里呆下去,我想离开工作了三年的熟悉环境,换一门新语言,换一个完全不同的工作环境,认识不同的人,尝试下创业是什么感受。二是江博士的个人影响力,我认同他的许多观点,也庆幸能参与到他组建的这个优秀团队。

如果以这些原因来看,我的目的完全达到了, AVOS 中国办公室当时是一个非常牛逼的团队,我认识了很多远比我优秀的工程师,无论是国内的,还是国外的,有一些现在还保持着很好的联系。我经历了数个产品的从生到死,并且全程参与到最终 LeanCloud 这三年来的成长和发展。这 5 年来我也基本一直在用 clojure 写代码,不敢说完全精通,但是至少可以吹牛逼地说,我是国内少数的几个有丰富 clojure 实践经验的工程师。更重要的是这 5 年来经历的一切,对我来说是完全全新的体验。创业非常艰难,同样,创业也非常激动人心。

AVOS 中国团队经历了好几个产品,美味书签开始,我们先是想尝试做 delicous 的中国版本,加上社交和设计类的元素。但是总所周知, delicous 已经死了。我这个阶段还是主要在后端,做一些文本抽取算法、后端服务之类的工作,也帮助 delicious 基于 Solr Cloud 做了新的搜索系统,解决数亿文档的搜索问题。在美味书签失败后,类似无觅这样的基于兴趣 tag 订阅的阅读类开始兴起(其实今日头条也是),我的同事孙宁开始主导美味爱读的开发,基本是参照着 Prismatic 来做,我又参与进去,记得是做后端 API 和分类算法,第一次接触了聚类推荐算法相关的东西。美味爱读真的是非常好的产品,可惜他的原型 Prismatic 也死了,不过他们留下很多美妙的 clojure 库,比如 schema。在美味爱读的开发的同时,另一拨同事做了玩拍这个短视频项目,因为当时短视频 Vine 非常火,我们“又”赶热潮去做了玩拍。玩拍的做的还是算是比较成功,火过一阵子,但是很可惜,仍然是没有坚持下去,加上没有持续的内容运营,更重要的是团队上大变动,反而当时对标的秒拍坚持到了现在。玩拍第一个版本的后端 API 是我设计和实现,后续因为参与美味爱读和 Delicious 重构,就退出了这个项目。然后同事朱老板一直很关注 parse.com,认为移动大潮下,这个东西还是有价值的,说要不我们做一个试试。LeanCloud 就这样横空出世。很夸张,但是却是现实, AVOS 中国公司的末期有三个产品在齐头并进。

总结前面这几个产品,本质上的问题还是整个团队没有一个明确的方向,像无头苍蝇一样乱串,但是这帮“苍蝇”很牛逼,做的产品还可以,可惜最终由于公司变动、团队短板上的问题,没有坚持下去,一些关键点的抉择都有值得复盘总结的地方。

后来就是 AVOS 美国那边也尝试了几个产品失败,基本确定要从中国撤离。留给个人的就两个选项,留下继续尝试刚开始做的 LeanCloud,或者离职。回想起来,我当时没有多少犹豫,因为 LeanCloud 早期的后端其实就我和另一个同事广成,我负责存储、网站、推送乃至云引擎(当时还叫云代码)的研发,广成负责实现一个友盟统计。然后 SDK 就一个朱老板,再加上前端长龙和一个设计MM,我们几个个人就这么开工了。LeanCloud 的早期就是这样,每个人负责一个大摊子,拼命地干活,我后来说这个阶段是我工作中的第二个高峰,印象中还记得北京街头凌晨的昏黄路灯 :D。

项目初步做完,上线,没有多少人用,因为 bug 多,功能也不稳定。这里说个趣事,一个外包小团队开始用我们,给央视的在人民大会堂的广告推介会做过一个抽奖环节,为了做现场技术支持,这是我第一次进入人民大会堂的宴会大厅,估计也是最后一次。因为团队很小,开发、测试、因为都要做。就算到现在, LeanCloud 从来都没有过一个专职的测试人员,所有的代码都是开发人员自己完成从研发到测试,乃至文档的所有工作。还有很长一段时间,开发同时还是客服,你可以想象这个压力和负担。当时 [fir.im] 的 CEO 王猛加入过我们一阵子,他也是我认识的人里少数佩服的几个同时有极强的编码能力和产品嗅觉,可惜最终由于他拿到了投资,自己创业去了。LeanCloud 的每个功能模块的开发人员都少而精干,这一点有利也有弊。但是整个团队真的非常棒,这是我呆过最好的团队,战斗力非常强,每个人都专业、努力,感恩、感谢。

慢慢地,推送和云引擎都有了专门的同事负责,孙宁和郭瑞负责推送聊天,原来淘宝的同事陈伟负责云引擎,他们都做的更棒更强大。而我都专注在存储后端和整个网站控制台服务上,以及一些杂七杂八的项目的研发和部分管理工作上。有一段时间,存储的故障频发,主要还是 Mongodb 的各种坑,一路趟着过来,从头梳理了所有服务,从 SDK 到后端各个服务层层隔离、流控、监控和告警,最终慢慢稳定下来。我们也从小作坊式的部署,迁移到了 mesos + marathon 的容器部署架构上,做到了一键部署和伸缩容量。为了推出腾讯云(现已关闭)和美国节点,设计了跨站点异地机房的架构,顺便支持了专有云的部署……整个阶段就是这么一个升级打怪的过程,碰到问题,解决问题,然后碰到新的问题。

一直到了今年,产品仍然有很多可以改善的地方,但是我觉的自己的作用已经到此为止了。我的能力无法再让我负责的东西再上一个台阶,而公司招人上也一直不尽如人意。移动的大潮已经过去,物联网的大潮还未来临,但是我一直认为 LeanCloud 仍然有许多值得努力的方向,比如物联网,比如容器云计算(基于云引擎平台),甚至做自己的文件存储 CDN 等等,不过我的使命已经完成。我现在的老大说我适合做从 0 到 1,而从 1 到 1.x 乃至 2.x ,却不是我所擅长和足以坚持的。回头想想这个过程,他的判断很到位。

离开 LeanCloud 加入蚂蚁金服的原因也不仅仅如此,它不是另一个疲倦期的结束,而是一些现实的压力,经济上的,个人方向上的。经济上,我需要一些收入,个人方向,我想再去做基础性的产品。记得当年初入编程这个行当,给自己立过一个看起来可笑的志向:编写出世界级的软件。十年过去,似乎离这个目标还很遥远。甚至什么是世界级软件的定义,也没有想的很明白。

来了蚂蚁,又回到一个忙碌的节奏,每天排的满满的读书和工作。这一段时间内还是做老本行——消息中间件,做各种改进和功能扩展,入职两个月来也算是干了点事情,突破了原来 RocketMQ 的一些瓶颈,并且尝试扩展 MQ 的功能范围,在这方面 kafka 是我们的榜样。后面,我也不排除去做一些其他事情,只要有趣有挑战,别人也需要,我都愿意去尝试下。其次,希望自己的能力下沉,突破原有的边界,深入到自己过去不敢或者不愿意了解的领域,看能不能做出一点新东西。

二进宫阿里,从心态上,放的很平,也更能放的开,这可能都是年纪的功劳。我就是来干活的,同时要赚点钱的,既然还能折腾,那就继续折腾。也欢迎有兴趣的朋友,跟我一起折腾,想到蚂蚁金服中间件的可以联系我邮箱 killme2008@gmail.com

声明:本博客所有文章,未经允许,禁止转载。部分材料来自网络或书籍,如有侵权,请及时联系删除,谢谢。

涂鸦

« Erlang 调度器初探

Comments