曾勇:大家好,我就职于和你出行,负责技术部的管理。可能有很多人都不知道和你出行是什么样的一家公司,所以先给大家做一个简单的介绍。介绍我们公司主要是这三个关键词:
1.我们是在创业路上的公司,我们公司注册成立日期是2018年1月30号,截止到现在一年半,所以我们还是非常非常年轻的一家公司。一年半的时间里我们做出了什么样的事情?目前在线运营三百辆车,下一步在济南,已经在规划中,目前在采购的车辆已经有500辆。
2.分时租赁,就是做共享出行,共享汽车,我们主打的概念是乐趣、绿色、便捷、出行。我们选的车型都比较科技范儿、年轻化,大家会有良好的驾乘体验。绿色,由于我们选择的车都是电动汽车,我今天开车来的,什么车?电动车,(对话的人)转身走了。为什么开电车不开油车?这是小玩笑。
3.我们做的是共享平台,我们不仅对用户做分时出行这样的一个共享,我们另一个共享,其实我们的车并不是我们采购的,都是车主采购的,依托在我们平台运营。以上是给大家做一个简单的介绍。
我们公司的系统架构。简单按照三层的形式给大家做一个展现,上面全都是业务的UI层,往下是业务逻辑,再往下是数据对应的服务。可以看到我们所对应的管理后台,以及车主的管理后台,以及H5,我们自己的运维端,还有我们的图片服务,因为我们图片是有分级的,就是公共的图片,比如说车辆的照片都是存在于云上,比较保密的是放在自有的图片服务器上。
然后就是我们C端的APP及采用restfull api形式的接口服务端。我要重点说的是最右边的那一块,各车厂的车控设备,因为我们其实也在做车控设备,也和其他厂商有合作,这样做的主要目的是互备,如要把鸡蛋放在多个篮子里。就会存在一个问题,我们要和多个车控进行交互的时候我们有对应的服务,第二个是跟车控厂商的平台做交互和通信。所以会往下来到我们的治理平台里。为什么重点说这块?因为我们的车辆在静止的时候是每十秒钟上报一次,但是在运营的时候会达到三秒钟上报数据量,按照现在300辆车的数据请求,其实每天要请求大概200多万,将近300多万次,其实数据量、存储量,还有后台服务的的计算量是要求蛮高的。
在这儿我想给大家分享一个小故事,这个小故事也是我个人的黑历史。曾经我凭我自己的一己之力,让我们以前一个公司的整个后台整整消失了三个多小时,连仓库都没有办法干活,怎么做到的呢?因为我刚入职,大概是六年前,我那时二十多岁,要做出一点事,所以我在我负责的业务里重构了所谓的库存计算的这套体系和服务,当时我非常自豪,一己之力把这个做好。因为原来的库存计算规则是一条云对应一个数据库,数据库自己算,因为做开发的都知道,这样给数据库带来的压力会非常大。后来我改了以后,很多计算是分在程序执行,我只要告诉数据库,你给我更新就可以了,我觉得这没问题,挺好的,当天晚上和我们的运维团队负责人聊想上线,他说好啊,不错嘛,可以上线,没问题。当天晚上就上线了,上线完以后很开心,就和朋友回家了。
我记得很清楚,那天我和朋友在餐厅吃饭,吃到第三口的时候我的电话响了,当时负责仓储业务的负责人打电话:“曾勇,你今天干什么了?”“怎么了?”“仓库都没法干活了,客服也说这个系统没有办法访问,你到底做了什么事情?”“我就上了一个服务。”经过后运维团队的抢修,在三个小时之后恢复了。
在场如果有做运维的应该也能想得到,因为我刚才已经把那个过程讲了一下,就是原来库存计算是让数据库做计算的时候会产生一条数据库日志(binlog),原来计算所有库存只是丢给数据库一条更新的语句,所以只会产生一条binlog,当我改的程序以后,就会变得好多好多,所以日志无限增长,跟我的体型一样,两年前还挺瘦的,增长很快,瞬间就达到磁盘满了,所以数据库挂机,宕掉了。数据库都宕了,所有的数据库肯定就没有办法应用了,所以这就是我的壮举,其实分享这个故事就是告诉大家基础运维真的很重要,如果没有基础运维提供的支持,其实我们做的再多的应用,写得再好的软件架构没有地方部署,也没有办法运行。这是给大家分享一个我的黑历史,也是一个小故事,主要要给大家讲的是运维真的非常重要。
什么叫一个月上线?刚才的架构图大家都看了,我们一开始从0到1完全是按照这种架构规划的,其实这样的工作量是非常大的,但是我们达到了一个月上线,上线第一版就达到可以演示、可以公共测试的。我们当时是从2018年1月16号第一行代码开始,上线日期是2018年3月7号。可能有人就会说,你是不是不会算数,这都快到2个月了,但是大家别忘了,2018年2月份有一个春节,过年得放假吧。所以从开发、测试一直到上线只有一个月的时间。
有人可能会说一个月上线不难,因为按照那个架构来看,反正我只要开发资源足够就可以了,那好,我现在给大家看一下我们的人员结构组成,我们的开发大约占了60%,但是上线第一版的时候开发只有十几个人,大约十一二个人,基本上是一个萝卜占俩坑,什么意思?就是“一人多用”完成开发,到现在我们团队大约是30人左右。大家看我们人员架构有没有发现什么问题?运维部门的人呢?
刚才说运维团队很重要,但是我们的公司又没有运维团队,哪儿去了?可能大家会有这些问题:监控怎么办?架构怎么办?安全怎么办?尤其是我刚才说的数据库怎么办?谁管?
说到这儿就不得不提一个了,云管服务,但是我一般会很亲切叫它“云管家”,因为显得没有界限,比较亲切,我们的云管家就是贝斯平,他们给我们提供运维和云管理的事情,还有对应的物理架构的规划。其实我们用的是用多云,当然,多云里面没有私有云,我们全用的是公有云,因为初创公司嘛,不知道大家还记不记得我们才一年半,创业公司钱很重要,怎么把一分钱当八分钱花?这是我们要解决的问题,所以我们会怎么性价比高怎么用。
但是多云使用就会存在一个监控问题。大家知道现在云很多,各种各样的云,我不知道怎么样选,他们会给我们做这样的一个评估报告,以及对应的技术咨询。甚至咨询到什么样的细节?大家注意看图中有一个词"nginx",怎么能能让它提高性能、提高并发?最简单得办法就是增加服务器。不过我们想要的是不增加预算的情况下,所以给他们提出了好多苛刻的问题,不过最后都得到了很好的建议和提供很好的服务,所以我们现在所有的运维全都是交给我们的云管家。
讲完云管家,刚才说了琳琅满目的云,随着技术的日新月异,发展得非常快,五年前你要说有这么多云,大家都觉得不可能,但是五年后的今天呢?如果哪家技术成熟比较好的公司出去聊天,跟一群同行业大佬们吃饭,如果不说我们自己家有私有云,或者我们能够提供云平台,都不好意思张嘴。
所以在众多的云中怎么选?我就直接交给贝斯平,你给我选吧,我的要求反正就是便宜、好用,我就不想多花钱,我就想用好用的东西。
刚才我说了,由于我们企业用的是多云的架构体系,所以在云监控上是一个很头疼的问题,每家的云都有自己的一套监控平台,你都可以看到这些数据指标(这些素材是阿里云上的)。如果用阿里云可能就会很熟悉,很基础的监控都会有,但问题我们是用多家云,服务器指标监控就是一个严重的问题,我总不能开多台电脑,或者安装好多显示器来分别查看对应云平台的监控吧?从我们用了贝斯平的OpsNow后,我打开一个系统就可以看到所有云的情况。
结合我们公司技术和云管服务的资源,还有他们给我们提供的服务,所以就提出这样一个问题,到现在我们小企业还在选择闭门造车吗?我还要建立我的运维团队、我还要优化自己的数据库吗?我还需要招这样的安全人员吗?这是我们的问题,我们这样中小企业、创业公司的问题,作为我来管理我们公司技术部,所以我说不需要,为什么?因为现在云管家能为我们提供很好的运维工作,包括监控,有时候服务器出问题它比我知道得早,他们给我打电话说:云资源出问题了,有备用方案,用不用考虑?我说:那还等什么?赶紧弄,所以我不需要管我的服务器,对我来说我需要用的时候我只需要告诉他们我的目标是什么,我给他们提需求的时候永远一句话,他们需要给我做评估,随后告诉我这样的一个时间和方案,跟我们的CEO对我们提的需求是一样的,都是一句话需求。其实做开发挺苦的,是吧?。第二个就是我会积极地使用和拥抱云计算,为什么?云服务器,还有各个中间件在这个时候都很成熟了,所以为什么还要闭门造车呢?
总结一下,因为我和云管家合作,就是MSP和CMP的使用,所以可以让我把我们的精力更专注于我们的技术实践开发,而且开发得非常快。举一个例子,当时业务部门告诉我们要做报表,就是BI,如果我们自己开发的话需要很长时间,所以我就选择使用当时阿里云的Max Compute和Quick BI结合使用,,就可以很快速、很方便地实现,我不需要做那么多组件性的东西。剩下的产品UED就可以专注于用户优化。第三个节省技术成本,我们公司没有运维团队,如果按照运维团队最小的配比(三个人),运维工程师、DBA再加上安全人员,如果费用按照平均1.5万每人(费用算得还是比较低的,一般高的几万,最低得几千),一年我将会节省54万,对于我们这样初创公司来说还是挺多的,如果可以拿出20万升级我的云计算资源,多买点服务器,让用户用得更丝般顺滑,这样好不好,再或者拿省下的费用和兄弟们一起吃个饭做一下团建好不好?
再有我们系统的迭代速度能达到15天或者30天发布一个版本,当然,发布的东西改页面、改文字不算发布,一定是功能性的发布。基本中小企业要达到这样效果,常规技术团队基本上是40人左右,但是借助了云,让我们加速实现业务。
谢谢大家。