云平台进十步,开发者进一步:崛起的云平台和架空的程序员

0. 前言


云平台进十步,开发者进一步:崛起的云平台和架空的程序员_第1张图片
流水线上老师傅玩的一手出神入化的流水线,造就一段流传许久的佳话

彼时年少求学,一门《现代控制系统》课程的老师是一位资深的工程师和教师,每每谈起上世纪末常有小变压器厂厂长千里求才的故事,一股矜持的老师傅的骄傲弥漫整个教室。故事里变压器厂长油头满面,秘书小哥点头哈腰,随行司机毕恭毕敬,老师傅千里奔波去厂里指点工人维修一台瘫痪在流水线上的来自德国的半自动绕线机,寥寥几句尽解众人多日苦楚,事了拂衣去,名贵的白酒和特产装满了回程专车。兜兜转转入行,有时回想软件行业很多时候也像一条流水线,只是感叹自己并不是那个降魔伏虎的老师傅。

1. 宠物 vs 畜牲


云平台进十步,开发者进一步:崛起的云平台和架空的程序员_第2张图片
宠物 vs 畜牲

2012年Gavin McCance在CERN的一次演讲中提到了一种流行的服务模型分类方式:宠物模式和畜牲模式,他们有很明确的不同:宠物会被明确命名,宠物是特别的,被主人精心呵护,宠物病了之后,宠物主人会积极花钱把它治好。而畜牲一般来说以编号区分(耳朵或者臀部都是很好的盖戳点),每个畜牲几乎没有太大区别,畜牲病了之后,你会想办法再弄一头来而放弃当前这只生病的。

宠物和畜牲的概念被提出的时候用在描述系统架构的横向扩展和纵向扩展上,横向扩展(Scaling horizontally)指用更多的节点支撑更大量的请求,而纵向扩展(Scaling out)指扩展一个点的能力支撑更大的请求。在计算机领域增大服务器的CPU、磁盘或者带宽就是最常见的纵向扩展,而使用多服务器和负载均衡功能就是常说的横向扩展。


云平台进十步,开发者进一步:崛起的云平台和架空的程序员_第3张图片

随着AWS、Azure和GCP等云计算平台的兴起,借助容器化、模板和自动化工具,云计算平台上的计算、存储资源像是廉价、低成本的畜牲一样能够被快速创建和销毁,这才构成了云计算平台易于扩展和弹性伸缩的极佳特性,成为云计算平台核心竞争力之一。从原始刀耕火种时代走出来的程序员从而得以摆脱冬暖夏热、缤纷满目的机房,不再忍受硬件、网络等一众让人头大的基础设施问题,摆脱了悉心呵护自家宠物(软硬件基础设施)的繁重工作,成为轻易指挥成建制畜牲(云服务器)创造价值的新时代开发者。

那么,如果将公司平台自己组建和维护的软硬件资源比作悉心呵护的宠物,把云计算平台租借给公司的软硬件资源比作是畜牲的话,那么开发者作为主要生产活动的参与者,在两种场景下就分别扮演着不同的角色:在自家自建平台悉心照顾宠物产出价值的是小作坊主,使用租借的基础设施产出价值的是流水线工人。当然如果不牵涉到有意义的讨论的话这种牵强的联想并不能帮助读者理解概念,反倒可能因为游戏术语的乱入导致技术大牛也看不懂技术讨论。下面从小作坊主和流水线工人的角度我们来分析下云平台的进和开发者的退。

2. 流水线秒杀小作坊,云平台的高歌猛进

2.1 云平台的进:规模化带来的成本降低

现代工业发展史有很多工业流水线对私人小作坊实现完美秒杀的桥段,究其逻辑怕是一个大大的“规模化效应”。若将电源或带宽资源、计算资源和进程管理系统等基础设施比作规模化租赁流水线中的洁净的入料、工序和精心设计的作业流程,那么规模化、现代化和自动化的管理带来的优势就是单位生产成本的下降——别的不说,骨干网接入的带宽足以秒杀私人小作坊不稳定的网速,批量订购和维护的硬件设施在价格上远低于只能赶在双十一黑五秒杀硬盘的小企业主,而雄心勃勃在北极圈和南极圈圈地建造的数据中心哪怕机器轰鸣也可保清凉一夏。云平台在规模化的基础上短期的成本优势是企业欲罢不能的优势——不是哪一个作坊主都有充足的资金平地搭建出一个完备的作坊来,而在云平台中这一切都有了可能。


云平台进十步,开发者进一步:崛起的云平台和架空的程序员_第4张图片
价格优势是中小企业难以拒绝云平台的原因

2.2 云平台的进:知识载体带来的完备方案

流水线作为知识的外部载体除了完成生产之外,无形间还承载了整个生产流程的存储功能(在云计算领域,这种特性被引申为“基础设施即代码”),针对于流水线的升级可以迅速无阻碍得提升整个生产流程的效率。整个生产流程的标准化也极大降低了流程对于工人个人能力的依赖性,顽冥不灵恃才傲物的老师傅被请回家,愿意摸索机器零件熟记手册的年轻人成为工厂的主人,哪怕是不太灵光脑袋中不是随时迸发着灵感闪光的员工也能为流程提供一份动力。类比流水线,云平台本身作为解决方案和实施技术的载体,将方案和技术内聚于平台内部,弹性高可用的服务经过一次构建就可以提供给众多用户,哪怕是刚刚在车库创建的新公司都能享有和硅谷深处浪潮之巅的庞然大物使用同一种技术的权利,云平台成为了企业即插即用的外置知识载体,这对于很多并非技术起家的公司来说可以说是难以拒绝的优势。

2.3 企业的进:租赁模式带来的短期成本优势

流水线的构建包括场地选择、机器选型、原料选择和工序设计等一系列复杂的前期准备工作,规模化场景下又多出了很多相应的繁杂工作,但是这些多余的成本当以租赁的方式提供给用户的时候已经被摊薄到了十分低廉的水平。租赁模式在云平台下的使用也是一种非常清晰的盈利模式,各个云计算平台将硬件损耗和贬值以及消耗品价值附加了盈利预期后,以租赁零售价格提供给用户,其价格相对于从平地构建的小作坊来说依然具有十分明显的短期优势——更何况其中重要的时间成本优势难以衡量,毕竟在小公司生命周期如此短暂的时代,很多公司根本无法耗尽硬件的价值即已经消亡。

3. 流水线工人的水土不服:开发者

3.1  开发者的退:平台依赖导致的商业逻辑外露


云平台进十步,开发者进一步:崛起的云平台和架空的程序员_第5张图片
云平台对于企业的商业逻辑带来的潜移默化的影响难以忽视

对于一个强依赖于流水线的公司来说,某一条流水线机器上使用的关键零件的停产有可能导致整个流水线停摆,这似乎是流程化的生产过程对于基础设施的依赖。以Serverless为例,Serverless架构是Amazon、Azure和GCP等厂商推崇的新一代架构模式,Serverless架构将应用业务逻辑放置于FaaS(Function as a Service)架构形成的独立的无状态的容器中,并以API服务的形式向外提供服务。Serverless架构将后台程序切分成了按需取用、按秒付费的计算资源,也降低了开发和运维的成本。类似的云平台提供的深度定制的功能特性在利于企业和开发者的同时,却也造成了企业与平台的强绑定,越是深度使用使用云计算平台提供的特色功能,越难以从云计算平台的组织架构和技术栈中抽身,长久以往企业项目就成为了一种构建于特有云平台的技术混杂体,在山头林立、战况激烈缺乏标准化的云计算平台的场子里应用的无缝迁移成为了空谈。使用云平台后的开发者和应用的命运又多了一个额外的把控者。

3.2 开发者的退:平台依赖导致的个人技能停滞


云平台进十步,开发者进一步:崛起的云平台和架空的程序员_第6张图片
云平台的使用者无疑会缺失许多构建基础服务的场景,长久以来技术架构恐如空中楼阁,虽高屋建瓴但难以落地

从平地搭建起来的作坊,不论是昔日砍伐树木留下的木桩,还是仓促间留下的工作,主人都了然于心,哪怕一刹倾覆虽然手忙脚乱但也有迹可循,但是对于超出流水线工人技术可驾驭范围的产品线,哪怕有一丝一毫的机械故障工人都只能抬头望天。对于软件行业的实施者来说,亲历的复杂的技术场景是十分宝贵的财富,是磨刀石之于刀、猫抓板之于猫,个人哪怕长久深陷专注业务逻辑而毫无技术难度的代码久了都会觉得手生脑卡,那么对于将逻辑与技术实现内聚于内部的云计算平台来说,长久“不劳而获”得使用高可用、高性能的计算、存储和数据库等服务来构建商业逻辑而不深究组建背后的技术细节和居于基础架构之上的系统设计思路,这对于开发者自身的个人技能发展来说并非幸事。所以如何在云计算平台为主的架构中保持开发者的个人技能成长,这是必须要思考的问题。

3.3 开发者的退:被云平台拖拽着前进的败者

云平台带给开发者的“威胁”,甚至超过了“AI编程”支配开发者的恐怖设想,作为知识载体和方案仓库的云平台将开发者放置在了一个进退维谷的尴尬境地,就像前言中提到的驰骋风云的老师傅一样,很多曾经在软件开发的蛮荒时代一路走来、积累了丰富的生产事件的“老师傅”,却极有可能在性价比、方案可靠性上输给云平台,这导致开发者的角色正在潜移默化中重写——设想当云平台三分天下,构建基础组件的工作已经不能给当前的企业带来价值(这部分价值已经由云平台以轻易的方式交付)的时候,初级程序员必将陷入一种难以看透系统本质的迷雾感,只有真正了解了软件整体架构和通用设计思路(云平台上和云平台下)的高级工种才能够融会贯通各种组件和架构,在云平台的开发中保持输入和输出,成为新一代的技术力量。云平台进步的速度超过了开发者的时候,开发者必将成为软件开发中的附庸角色,成为只能被平台拖着走的败者。

云平台与开发者各自扮演的角色下交锋进退,虽是协作却也暗含对立,山头林立的云平台厂商在这个时代推动着产品开发的技术革新,在这场革新运动中云平台进击的步伐中开发者收益颇丰,但是也要时刻保持警醒,要对技术保持好奇心和敬畏心,技术的马车和产品的命运始终要驾驭在自己的手中。

你可能感兴趣的:(云平台进十步,开发者进一步:崛起的云平台和架空的程序员)