九卷读书:淘宝从小到大的发展 -重读《淘宝技术这十年》
这算是一篇长文了,不知不觉就写了这么多,在这个快餐时代如果您读完了,能有点点启发就好。
一:前言
《淘宝技术这十年》
--子柳著,北京.电子工业出版社。
我又把这本书重新读了一遍。
为什么重读?
因为以前读的时候,囫囵吞枣,只是看看而已,看过了就过了,了无痕,一点思考也没有留下。
作者自称一个“比较低阶”的人员,这是作者谦虚的说法。我们可以从一个角度看看淘宝是怎么从一个小网站发展到当今世界最大的电子商务平台。
这本书书名说的是技术,但是内容绝不止于技术。
当然,当时时代发展的机会在那里。但是想一想,为什么当时易趣没有发展起来,还有慧聪。
淘宝,现今这个世界最大的电子商务平台,
- 当初它是从哪里开始起步的?
- 最初网站有哪些功能?
- 它又是怎么一步一步发展起来的?
- 在当时的强敌易趣,ebay环视下,是怎么突围的?
- 业务的发展历程又是怎么样的?
- 技术在里面又起了怎样的作用?
- 技术的发展历程又是怎么样的?
- 经历过哪些挫折、失败、痛苦、欢笑和泪水?
... ...
等等很多问题,都值得我们去探寻。
二:起步
个人网站
在2003年4月7日,马云从阿里巴巴集团抽调10位员工,到他的湖畔花园小区,给这10人布置了一个任务,在最短时间内开发出一个C2C(个人对个人)的商品交易网站。
假如你是一个创业团队,让你来做,你怎么做?
怎么最快实现老板的业务需求?
书中说:当时还有个原因,当时eBay和易趣在资本方面正打得不可开交,我们可以趁虚而入,等他们反应过来就危险了。
(感想:说明当时的竞争还是很残酷的)
背景交代了,那么怎么在最短时间内把一个网站从零开始建立起来呢?
书中说:淘宝是在2003年5月10日上线,2003年4月7日到5月10日,只用一个月时间,就上线了。
怎么做到的呢
答案是:买一个过来。当时买了一个LAMP(Linux+Apache+MySQL+PHP)架构的网站。
这种架构模型的优点就是发布快速,不需要编译时间。
买一个显然比自己做一个时间要快很多。因为竞争时间窗在那里,时间只有那么点时间。时间错过了,机会也就错过了,不会在来。
但是光买来用,肯定不行,还要自己人能进行低成本维护,能进行二次开发,能快速发布。因为需求变化很快,买来的功能有些不适应发展需求,需要进行二次开发。根据业务发展,还需要增加新功能。
(感想:
在激烈的市场竞争环境中,一个业务的开始,考虑的一个重要因素就是:时间窗。怎么用技术在短时间内快速的实现业务,这就涉及到了技术架构的选型,技术怎么适应这样的业务需求?在当时环境下选型的标准:能进行二次开发,低成本维护,快速发布应用。当然,现在这些标准也没有过时。现在有更多的技术理念来做这些事情,比如敏捷,微服务,DevOps等等理念。先是业务,后面在根据业务发展需求,进行技术选型,然后进行技术开发,功能发布。
所以说,找准业务,理解业务,也很重要,它是一个事情开局最重要的阶段)
发展
发展离不开当时的环境。
当时的市场环境,非典的肆虐使得大家都不敢出门。
跟现在的新冠病毒一样,大家都不敢出门,所以在线教育就出现了一个很好的机会。
回到当时说的非典,大家都不敢出门。所以就给在线购买商品提供了一个很好的机会。
当时的C2C网站易趣也忙得不亦乐乎。2002年3月,eBay以3000万美元收购易趣公司23%股份,2003年6月又以1.5亿美元收购易趣剩余67%股份。
这里说明当时淘宝的竞争压力还是很大的,因为淘宝当时还很小,跟大块头易趣,这种有强大外资的公司比起来,淘宝竞争力显然不够。
这里谈到了,怎么跟大公司竞争?
竞争
淘宝怎么跟易趣竞争的呢?
淘宝:
- 淘宝允许买卖双方留下联系方式
- 允许同城交易
- 整个过程操作简单轻松。
- 为了不引起eBay注意,整个2003年,淘宝一直声称自己是“个人网站”。
当然,淘宝的创业团队市场开拓和运营能力也很强,所以淘宝网迅速发展。 - 推广-利用中小网站来做广告,突围eBay在门户网站上对淘宝的广告封杀,这时eBay终于看到了淘宝这个后起之秀。
eBay:
- 它是收费的,收取交易佣金,eBay禁止双方买卖,这必然增加交易的难度。
- 当时eBay为了全球统一,把易趣原来的系统替换成了美国eBay的系统,用户体验一下子变了,操作十分麻烦。
很多在易趣混不下去的用户,就跑到淘宝上去了。
淘宝的快速发展,没有引起管理层的注意。易趣内部员工在内网发帖,忠告管理层警惕这个刚刚起步的网站,但管理层似乎无动于衷。
- 过了一段时间,eBay终于注意到了淘宝,它买断了当时新浪、搜狐、网易的电子商务类型广告,还签署排他型协议。
(感想: 从这里看,eBay似乎轻视了这个竞争对手,没有重视这个对手。也许与当时的环境有关,eBay自身太强,所以有点傲慢的样子。)
淘宝第一版技术的发展
淘宝第一版功能:商品发布、管理、搜索、商品详情、出价购买、评价投诉、我的淘宝等功能。在2003年10月增肌了一个功能点:“安全交易”,这是支付宝的雏形。
随着用户和流量的不断增长,服务器也由一台变三台,一台负责发展Email,一台复制运行数据库,一天运行WebApp。
2003年7月,又把阿里巴巴中文站的搜索引擎iSearch搬过来。
但是随着访问量飞速上涨,问题很快出现,第一个就是数据库。当时用的MySQL是第4版,用的MyISAM存储引擎,这个引擎会锁表,同步延迟等等问题。当年的这个MySQL不能和今天的MySQL比了。
三:技术升级和业务创新
小网站想变大,变大总会遇到成长的烦恼,淘宝网的工程师用什么思路来解决问题?在解决问题之余,又用到了哪些创新手段来超越竞争对手?
- 数据库从MySQL 到 Oracle
- 支付手段创新 - 支付宝
- 交流方式创新 - 淘宝旺旺
(感想:
其实上面提到的这些技术、产品和手段都已经存在,当时最大的支付PayPal,实时交流的MSN、OICQ、Skype,也许还有名不见经传的QQ吧,淘宝只是根据自身需求把这些技术整合到了淘宝里面。可以叫融合或者整合能力,在整合业务上它也许是“创新”)
MySQL到Oracle
推广运营做的广告,带来了就是迅速上涨的流量和交易量。到2003年底,MySQL已经撑不住了,技术替代方案非常简单就是换Oracle。换成Oracle就是它容量大,稳定,安全,性能高,还有人才方面原因。在2003年,阿里巴巴有一群很强大的DBA团队。
换了就万事大吉了吗?
恰恰相反,换的过程中,也出现了很多问题,比如PHP和Oracle的交互怎么更流畅,数据的存储问题。时间到2004年春天,在数据的连接换成了SQL Relay之后就噩梦不断,这个代理服务经常死锁,最快的解决办法就是“重启”它的服务。以至于工程师们不得不24小时开着手机,一旦收到“SQL Relay进程挂起”的短信,就得打开电脑,连上机房网络,重启服务。
做这事最多的据说是三丰,他现在是淘宝网总裁。所以说:任何牛B的人物,都有一段苦B的经历。
支付手段的创新 - 支付宝
“好的架构是进化来的,不是设计来的”。的确如此。还可以加上一句“好的功能是进化来的,不是设计来的。”
在架构进化过程中,业务的经过也是非常迅猛的。
业务出现的问题?
最早的时候,卖家大钱给卖家都是通过银行转账汇款,有些骗子收了钱不发货,干脆逃之夭夭,很快很多人学会了。
出现了这个问题,该怎么解决?
淘宝这伙人 开始研究防骗子的解决方案,他们看了PayPal的支付方式,发现不能解决。
研究了类似QQ币的东西,想弄个“淘宝币”出来,发现也不行。
后来几个人把这些想法糅合起来,突然想到了“担保交易”这种第三方托管资金的办法。
于是2003年10月,淘宝上线了一个叫做“安全交易”的功能。
到了2012支付宝年会上,公布的2011年的交易笔数已经是PayPal的两倍。
这个创新,就是不断思索的过程中的灵光乍现。
(感想:
一些好的想法,都是在业务不断发展过程中遇到的问题,想去努力的解决这些问题,从而不断的思考最佳解决方案,最终结果就是带来业务上的创新。然后创新促使业务飞速发展。良性循环。
当然创新,也可能失败,最终检验它的还是业务是否因此而发展。
也不能因为失败了就气馁,要不断的思考,不断的思考,不断的思考,不能停止思考好的解决方案)
有了一个好的想法后,怎么才能落地?
因为从想法到执行这个过程中,中间会遇到很多困难。
开发“安全交易”功能,必须与银行一家一家的对接。但是银行用到的技术五花八门,什么技术都有,所以很辛苦繁琐。而且银行网关不保证用户付钱后就一定能扣款成功,不保证扣款成功后就一定通知淘宝,也不保证通知通知淘宝后就一定能通知到,以及不保证重复通知。这导致当时淘宝技术必须每天手工核对账单,少一分都不能睡觉。
(感想:
所以从想法到落地,中间的距离也很远,因为你不知道这段距离中有多少困难在等着你,但是为了让这个想法能落地执行,必须一一的去克服中间的困难,即使历经千辛万苦。)
交流方式的创新 - 淘宝旺旺
商品的在线聊天,一个核心功能,就是砍价。中国的大爷大妈最喜欢干的事情。跟淘宝竞争的eBay也许体会不到,所以一直不允许买卖双方在线聊天,收购Skype后也没有用到电子商务中去。
这个就是淘宝和eBay当时差异化的竞争了。
当然旺旺的开发也不是一帆风顺的。
“想法到落地这个过程中,总有你意想不到的情况或者困难出现”
旺旺没推出多久,就惹了一个法律方面的麻烦。有个做雪饼的厂家找上门,说我们侵权了。
然后我们就在旺旺前加2个字,叫“淘宝旺旺”。
刚开始旺旺很少人用,为了支持旺旺的工作,淘宝工程师们用的IM工具仅限于旺旺。
在那个野蛮生长的阶段,很多产品想到什么救做什么。比如,还做过一个聊天室,但是一段时间聊天室门可罗雀,就关闭了。
四:技术再次升级 - 企业级java网站
给一个网站更换语言。
为什么要更换? 怎么更换才能不影响业务发展?
要解决的是什么问题?
问题:性能、容量和成本控制。
这些问题有哪些解决方案?
淘宝网在2004年就从PHP语言换成了Java语言。
更换语言
当时情况:到2004年上半年,淘宝网运行了一年时间,也积累了大量的用户,也开发了很多功能,当时这个网站已经很庞大,新需求也在源源不断增加。
把一个庞大的网站换掉语言,无异于脱胎换骨,在换的过程中还不能拖慢业务的发展。
“给正在飞行的飞机换引擎”
面对这种情况,你怎么办?
答案:请人来换。请了Sun公司的人,创造java语言的那家公司。
世界上主流大网站普遍采用java,其中一个就是eBay。当时eBay的系统刚刚从c++改到
了Java,就是请的Sun的工程师给改造的。
现在问题是:用什么办法把一个庞大的网站从PHP语言迁移到Java?
而且在迁移过长中,不停服务,原来系统的bug和功能不受影响。
你是架构师,你怎么做?
他们大致的方案就是:给业务分模块,一个模块一个模块渐进式替换。
如用户模块,老的 member.taobao.com 继续维护,不添加新的功能,新的功能在新的模块
上开发,跟老的模块共用一个数据库,开发完毕之后放到不同的应用服务器上,另开一个域名
member1.taobao.com,同时在替换老的功能,替换一个,就把老的功能模块上的功能关闭一个,逐渐把用户引导到member1.taobao.com上,等所有的功能替换完之后,关闭member.taobao.com。
后面技术历程
后面的加入小型机,分库分表,缓存,CDN的建设,搜索的建设。
五:创造技术
用钱能解决的问题都不是问题。当你变成业内最强之后,你的问题没人碰到过,这就意味着你自己动手解决问题。于是,淘宝走上了技术创新的道路。
(感想:
这个跟华为的发展也很相似,前面已经没有领路人了,该超越的公司都已经超越了,西门子,洛基亚,北电网络等等,华为已经进入无人区了,得自己去创造技术,去寻找发展空间。)
- 淘宝文件系统 - TFS
- 淘宝KV缓存系统 - Tair
- 分布式数据库 - OceanBean
- 负载均衡 - LVS
等等
六:分布式电子商务操作系统
- 服务化
- 中间件
- Session框架
- 开放平台
最后的感想
一个网站从小发展到大,中间经历了很多事情,需要很多人努力, 才能发展到今天!
技术的发展,也是根据业务的发展不断发展,从PHP技术到后来的java技术,到MVC,到分库分表,cdn,分布式缓存等等。
都是一步一步发展进化来的,是从小发展到大,而不是一蹴而就的事情。是一个发展的过程。
IT人的发展也是如此,要从低级别程序员发展到资深程序员,再到架构师,或者CTO,中间要经历哪些过程,做哪些事情,才可以达到自己想要达到的目标。
上面说的只是一种发展的路径,还可以有其他的路径。
比如说:你还可以向产品经理转型,项目经理,管理者,这条路走下去。
比如说:你还可以向自由工作者转型。
... ...
重要的是你:你要了解自己,选择适合自己的路。“鞋,只有自己穿起来走路,才知道合不合适”。
看淘宝技术这十年,网站从小发展到大,是随着业务的不断发展,技术也跟着业务不断的前进。因为技术要适应业务的发展。
对了,重点是:向前发展。而不要停滞不前。
就像人们常开玩笑说:把1年工作经验重复了10年。最怕自己浑然不知。
为什么会造成这种情况:
一是:温水煮青蛙式的,自己身在其中,当时浑然不知。到了关键节点,才给你重重一击。比如公司业务不好要裁员的时候。
二是:坐井观天式的,被自己眼界束缚了。只看到了井口那么大的天空。所以眼界不要太狭小,开阔眼界也很重要。
三是:得过且过式的,当然如果这是你想要的生活,也无可厚非。这也是人的一种选择,对自己的选择负责就好。
我们要注意上面这些情况,尽量避开它们。