作者:半佛仙人
1
从商业的角度来看,无论是技术还是产品,过于极致的稳定都是一种累赘。
有人讲过一个故事,有一个公司生产出了绝对不会故障和损坏,可以永久使用的产品。
顺理成章的,这个公司的产品迅速占领了市场,把竞争对手打得落花流水。
接下来会怎样?它会更加迅速地倒闭。
这同样很合理:他们既不能向客户提供售后维修服务,也没法向同一个客户卖出第二台机器。
对绝大多数商品来说,一定范围内的产品故障率并不是坏事。
如果没有故障,怎么来的维修业务,怎么卖配件,怎么促进客户购买迭代产品?
就好像苹果把卡顿问题解决得太过完美,导致真正的果粉可以死守苹果6一样。
绝对安全且绝对稳定的技术,其实是反商业的。
一般的商业领域允许出错,甚至会贩卖错误。
如果一家企业只考虑商业利益,它当然没必要吹毛求疵,追求投入产出比的最大化就可以了。
但是当一种技术蔓延到商业秩序之外,开始承担社会责任,甚至是转型为基础设施的时候,普惠与稳定,就会变得比赚多少钱更重要。
对这种技术来说,如果不够先进,就没有承托起社会运转的能力。
如果不够稳定,就无法负担起牵一发而动全身的责任。
问题是,先进和稳定,其实是对冲的。
技术的发展总是遵循这样一个规律:
越先进,就越不稳定。
越精密的技术,涉及的因素越多,单一变量容易影响全局,整体出故障的概率越大。
如果有一天世界末日了,人类要留下一个标志告诉外星人人类文明的存在,怎么保存信息才能存储得最久,最不容易被意外破坏?
不是任何先进的技术,正确答案是在花岗岩上刻字。
在石头上刻字,是人类至今最稳定的信息储存技术。
这很魔幻,但很真实。
想要在保持技术先进的同时,做到绝对稳定,这是一个犹如西西弗斯推石上山般的挑战——石头总会在到达山巅的前一刻滚落,看似能够逼近终点,但余下的路途遥遥无期。
2
双11是电商行业的盛宴,也是对阿里云技术能力的一场考验。
营销人和电商从业者会关注最后的GMV,但峰值数字才是衡量这一年双11技术难度的重要标准。
对负担双11云服务的阿里云来说,它必须要承载得起峰值时刻的冲击,才算“过了关”。
今年的11月11日0点26秒,天猫双11的订单创建峰值达到了58.3万笔/秒,这是2009年第一次天猫双11的1457倍,也是目前全球最大规模的流量洪峰。
12年来,双11的流量峰值一次次刷新,在提高技术挑战难度的同时,也在倒逼阿里云的工程师们马不停蹄地攀登下一个极限。
往往刚通过了上一个考验,还没来得及满饮庆功酒,下一个挑战就接踵而至。
他们必须和时间赛跑。
阿里云一旦跟不上、扛不住,出问题的不光是双11。
整个淘系电商,乃至阿里云给外部企业租用的云服务,这些都是由阿里云的技术底座所承载的。
如果阿里云有十分钟不能提供服务,这期间所有交易,所有账目显示都会暂停,影响到的,将是整个社会的商业秩序。
离不开这份技术能力的,还有物流。
云计算对线上交易有多重要不必多说,但很多人不知道,在物流领域诸多物流公司背后,同样是阿里云在提供基础技术的支撑。
很多主流物流公司都把核心技术系统托付给了阿里云,今年双11前菜鸟物流网络平台也把核心系统全面迁到了阿里云上。
假如在双11爆单的时候阿里云掉了链子,从交易到物流的整个链路都会陷入混乱。
如果说这些影响还停留在互联网行业,那么阿里云在传统行业扮演的角色,就更加不允许它行差踏错。
云计算在工业生产领域的应用,被认为是“鼠标+水泥”故事的新版本。
鼠标,指的是互联网技术,水泥,在这里象征的是工业生产。
形象地说,阿里云正在用最先进的算法模型为最土味、最厚重的锅炉完成原材料配比的优化。
有个钢厂在引入阿里云“工业大脑”,对产线做了全面优化后,每年的能耗支出节省了两千多万。
亚洲最大的水泥供应商借助智能制造平台和销售物流平台,让已有的140条生产线多创造了十亿元的效益。
比云计算混搭工业更朋克的,是把农业搬到云上。
中国最大的贵妃鸡数字化养殖基地,在和阿里云合作配置AI养殖系统后,完成了养殖的自动化和数字化。
在基地的帮扶下,当地的贫困农户也开始养殖起贵妃鸡。
但规模化的养殖不比散养,疫病预防,鸡舍清洁,鸡苗选育,这些知识和经验无法一蹴而就。阿里云就每天通过手机给他们发通知,提示疫苗种植和喂养流程。
不光是那些极大的、宏伟的商业,阿里云同样服务于那些极小的,小到一个个普通人,乃至他们身后家庭的民生。
这些事情困难吗?对阿里云来说,技术难度可能只是小菜一碟。但关键是,它的服务不能放弃,不能中断,更不能出错。
无论是作为商业还是民生的基建,阿里云都错不起。
3
既然错不起,那就要想办法面对。
工程师们没有在“创造出金刚不坏的技术”上面死磕,他们选择了另一条道路:
提高系统的容灾和容错能力。
让技术获得韧性。
技术的韧性,这是一个很有趣的概念。
指望一个技术绝对不出错,这是不可能的。
无论你怎么堆料,把标准提得多高,承载系统的硬件设备也总是有使用寿命和故障率的。
但假如它仍然会犯错,仍然会有故障,但在犯错后系统可以迅速自查和修复,而且不会造成后果,其实在客户端的感知上,就等价于没有犯过错。
阿里云的技术哲学,不是不犯错,而是把错误变得可控。
阿里云的服务器可能会坏吗?当然是会坏的,没有绝对不会坏的服务器。
但工程师们预留了大量的冗余服务器,它们的作用就是随时待命,在那些正在工作的服务器出现故障的时候,立刻接替上去,让系统能够迅速把数据“飘”到冗余服务器中。
阿里云有个标准,任何故障都要在十分钟内完成修复。
这个修复,不是当即把故障的机器修好,这不现实——天知道故障出在了什么地方,等检测出来,黄花菜都凉了。
修复,指的是让服务和应用恢复正常。
我只需要按预案行事,做好隔离,启用冗余,该提供的服务照样提供,该保留的数据一个不少,没必要在故障的机器或产品上纠结。
总会有各种原因和各种理由让一台服务器发生故障的,可能是过载了,可能是老鼠咬线了,可能是冷凝液泄露了,甚至可能是被知乎用户派人炸了。
知乎上有人问过一个问题,如果阿里云数据中心崩了或者被人炸了,是不是淘宝就不能用了?账单就不用还了?
这个问题看似无稽,但阿里云其实已经解决了。
应对的办法,就是冗余和异地多活。
冗余,就是本来用二百台机器就能满足的数据运算量和储存量,我可能准备六百台机器。其中二百台作为备份,另外二百台作为备份的备份。
异地多活,就是在不同城市建立独立的数据中心,这些数据中心彼此并联,互为备份。
阿里云一开始只有杭州的数据中心,后来发现运算量越来越大,服务器和机房不够用,而且抗风险能力太弱了。
万一着火了怎么办?万一天降陨石怎么办?万一外星人不讲武德,一个闪电五连鞭偷袭我们的数据库怎么办?
所以阿里云这帮工程师又去上海建了一个超级数据中心,建完以后还是觉得不放心,又找地方继续建。
到今天,阿里云一共建成了五个超级数据中心,其它大大小小的数据中心超过一百个,分布在全球22个地域。
一台服务器崩了不要紧,同一栋楼内,我直接把数据飘过去,连延迟都没有多少。
整个超级数据中心都崩了,我还有四个独立的数据中心,还能继续备份和溯源。
就算五个数据中心都崩了,小型的数据中心我还有一百个。
“突然被人炸了服务器”还不是最极致的抗灾准备,工程师还为台风,极寒和极热等各种极端气候都准备了应急预案。
唯一值得庆幸的是,他们至少不需要研究气象学,因为他们可以看天气预报。
为了抵御各种可能出现的破坏性状况,阿里云的工程师们,把自己变成了真正的“被迫害妄想症”。
比如说,为了应对突然断电的情况,阿里云所有数据中心都有起码两条不交叉的输电线路。
即使道路施工的时候不小心被挖断了一条,还有另一条。
如果两条一起被挖断了——这个概率极小——还有可以立刻供电的备用电池。
如果备用电池刚好也故障了,还有30秒内自动响应、能撑8个小时的柴油发电机。
如果柴油发电机刚好没油了,阿里云还跟附近至少两个加油站签了协议,2个小时之内必须紧急供油。
如果加油站也没油了,一些数据中心还有太阳能电池。
那你问太阳能也没用了怎么办,那阿里云说我也没办法了。
你说太阳能没用了,是不是太阳没了。
太阳都没了不就世界末日了,世界末日了我还上什么班。
毁灭吧,累了。
4
由于边际效用的存在,为了规避最后一些边边角角的小问题,往往需要花掉比解决大问题多出无数倍的努力。
完美的系统不但不现实,即使能实现,也会付出过高的成本。
不去强求毫无风险,但把风险的危害性变得可以承受,这是比追求完美更聪明的选择。
当然,这条道路同样困难重重。
最大的困境就在于,在问题出现前,你永远不知道还能有什么问题。
这就像盲人骑瞎马,夜半临深池。
进亦危,退亦危。
唯一的办法,就是“自虐”。
在阿里内部,有一个“突袭”传统,技术人员会分为红蓝军两方对抗,一方搞破坏,一方来救场。
这些突袭不会事先通知,玩的就是心跳。
早几年,有个阿里云工程师在家里睡觉,忽然部门的总负责人打电话给他,说你们的机房没了,他吓得背起包就跑。
到了才知道,其实是内部突袭,攻击方把一个小型数据中心的网断了。
现在看起来,阿里云好像对各种风险都胸有成竹。
但这些工程师们,也都是从稚嫩中走过来的。
有个很令人汗颜的细节:破坏方对阿里云的突袭,前面几次无一例外都是成功的——什么叫成功,就是搞破坏的人无一例外都搞成功了。
防守方的技术人员根本防不住这些突袭,他们的角度太刁钻了。
当然搞破坏的机子都是冗余的机子,不会影响到用户,不然工程师们已经可以通过把投诉信卖废纸致富了。
毒打挨多了,也就习惯了。
就像古早漫画《圣斗士星矢》里的梗,“同样的招式无法对圣斗士使用两次”,搞破坏的人逐渐黔驴技穷,防守方逐渐驾轻就熟,甚至学会了“抢答”。
什么叫“抢答”,就是预先猜到会出什么问题,设置自动触发的处理机制,让系统自己维护自己。
今年双11期间,阿里做了最后一次全链路压测。
凌晨2点临近结束的时候,阿里云的工程师们遇到了一次突袭。
那一瞬间,交易曲线下跌40%,然后慢慢爬升,在1分28秒内恢复到了正常。
1分28秒,慢一点的电脑可能才刚刚开机,阿里云已经从一场突发困境中破局。
这是阿里云那些工程师们秀出的肌肉。
最强壮的肌肉,长在大脑里。
Netflix 的一位前工程师写过一本叫《混沌工程》的书,里面提到过一个很有趣的思路:
可以开发一个工具,模拟一只讨厌的猴子在系统中上蹦下窜,不停捣乱,直到搞挂你的系统,而你要想办法在遭受破坏的同时,通过各种方式维系系统的稳定。
破坏不是关键,关键是,在被一次次破坏的过程中,你可以了解到系统自身的薄弱之处,然后提前设置解决预案,在问题发生的时候自动触发。
也许有一天,这些突袭和模拟可以穷尽所有可能出现的问题。
到那时,阿里云的技术,就成为了真正的“金刚不坏”。
当然,这一天也许永远不会到来。
穷举法的尽头,也许还是穷举。
但过去经历的一次次突袭,一次次在系统中模拟出主动且可控的破坏,又确实造就了阿里技术的韧性。
这就足够了。
功不唐捐,玉汝于成。
5
在所有关于阿里云工程师的传说里,我最喜欢的不是那些商业上的暗涌,也不是他们攻克技术难关的意气风发,而是那些温暖的小细节。
当年阿里云还只有杭州数据中心的时候,团队小事情多,数据高峰的时候,为了保证业务的稳定性,数据中心7×24小时都要有人巡检。
数据中心的地址很偏僻,团队里的男孩们担心女孩子夜里回家不安全,主动提出他们多轮值一班,让女孩可以早点回家。
在这个故事里,他们没有停在云端,而是饱尝人间烟火。
给阿里云穿上无敌铠甲的,不是什么住在神坛上的极客高人,他们就是一群生活中特别常见的普通人。
下机房也会累,走夜路也会怕,在女孩面前,他们也会温柔。
后来这样的故事渐渐变成了往事,因为阿里云数据中心配备了巡检机器人。
这个叫作“天巡“的机器人系列,到今年双11的时候已经升级到了第二代。
通过技术手段,它可以自动完成很多原本需要人力来完成的故障预测、诊断和修复工作。
虽然数据中心还是离不了人,很多工作只有工程师能做,但至少他们不再需要高频次进入机房,工作量也减少了许多。
“虽然做不到完美,但可以做到更好”,这是工程师们工作环境的改变,也是整个阿里云发展的缩影。
即使到了今天,阿里云仍然只能承诺在一年中99.995%的时间里保持绝对稳定,持续的努力,是把“9“的位数不断往后推移,但不可能真正变成百分之百。
技术当然不可能做到完美。
这不是任何思路或付出所能解决的问题。
所谓的“完美“终究只是一个抽象的概念,可以一点点逼近,却永远不可能实现。
阿里云的工程师们,其实比外界任何人更清楚技术的局限性。
但那又如何?他们当然知道自己不可能做到完美,但这并不妨碍他们努力去把技术变得更好一点点。
哪怕只进一寸,也有进一寸的欢喜。
无法触达完美,这是凡人的悲哀。
但也是凡人的幸运。