当前位置: 首页 > 科技观察

Serverless将把工程师带到“不归路”!

时间:2023-03-12 10:39:20 科技观察

不要被标题吓到。技术的发展从来不以个人意志为转移,程序员的一些分工也会随着技术的演进而消失。在开始之前,我们先了解一下Serverless是什么概念。Serverless直译为“无服务器”,并不是说代码不需要在服务器上运行。意味着在以后的开发中,不需要关注服务器等相对底层的设施,代码直接跑起来。这些资源将变得不可见。危险的!基础运维人员。想象一下Java应用程序的开发过程。需要经过开发、测试、部署,才能正常上线。如果是高并发应用,需要预估一个峰值,比如需要100台服务器来支持用户请求。有的产品经理头脑发热,加上了秒杀的功能,那你的峰值就需要按照秒杀的峰值来设计,即使峰值过程持续不到10秒,过一段时间所有资源都会空闲.换句话说,即使那里没有使用服务器,您也必须为此付费。老大捂着心说疼,突然就死了。事情会变得更复杂,随着服务器数量的增加,你需要考虑如何快速部署;每台机器的配置都需要详细计算,包括JVM应该分配多少内存,如何配置网络安全策略,高可用等,生活在不同的地方……,很多细节需要大量的准备和基础设施。这种情况,我们现在的很多程序员,乐在其中。就拿基本的组件和一些中间件来说,分库分表,缓存,数据同步,监控,虚拟化,CI/CD....内容都差不多,但是每个大公司基本上都自己做放。这养活了一大批从业者,但从整个社会的投入产出来看,是不合理的。面试为什么要造火箭,因为这个东西在这个阶段有时候真的很有用。事情正在发生变化。当一个公司发展到一定阶段,就会有大量的内部制度。比如运维系统、财务系统、员工管理系统等。除了少数开发者不断迭代这些系统,后续的用户实际上变相扮演着“运维”的角色。你需要申请一台机器。好的,填写工作表。工单审核通过后,后台“运维”人员点击,创建虚拟机。您需要获取系统的用户列表。好的,填写工作表。审批完成后,“运维”人员会为你开通一个token,拿着token到我们的微服务拉取信息。这些抽象的服务器和用户界面不需要您准备硬件或网络。只需填写工单,唾手可得。它已经具有无服务器外观。但是,它在企业内部,规模有限。在这里,我们需要了解几个缩写名词。IaaSInfrastructure-as-a-Service(基础设施即服务)。这部分属于基础设施,比如服务器的采购和建设,与虚拟化、容器等技术密切相关。PaaSPlatform-as-a-Service(平台即服务)。比如操作系统、虚拟机,以及在其之上提供的与业务弱相关的基础组件。通常,一些耳熟能详的术语,比如持续集成、中间件、公共组件、微服务等,都属于这个专栏。SaaSSoftware-as-a-Service(软件即服务)。在生活中,我们几乎每天都会接触到SaaS云服务,但它们一般指的是集中式部署服务商。在这种模式下,商业模式变成了租赁,销售变成了运营,项目变成了产品。这四个名词的首字母表示工作环境的变化。比如IaaS的完备性,让专攻基础设施服务的工程师逐渐没有发展空间;PaaS的完备性缩小了平台开发工程师的就业机会。除了少数能享受到平台红利的,大部分只能向更高层次的抽象过渡。这三个大家都很熟悉,但是还有两个缩写,是Serverless的关键。BaaSBackendasaService(后端即服务)。它是指公司为移动应用程序开发人员提供集成云后端的边界服务。这个词很可怕。按照我们上面的逻辑,当它流行起来的时候,大部分后端开发工程师都会死。稳定了这么多年的后端技术栈终于要作死了。FaaS函数即服务(FunctionasaService)。可以广义理解为功能服务,也可以理解为功能服务。使用FaaS只需要关注业务代码逻辑,而不需要服务器资源,所以FaaS也与开发者不需要关注服务器Serverless密切相关。可以说,FaaS提供了一种更加细分和抽象的面向服务的能力。可以想象,如果所有的设施都齐全了,只需要一般水平的前端集成人员就可以完成企业级的开发。信息革命的本质是自我升级再自我更新,程序员可以选择的路会越来越窄。计算机技术将回归工具本质,人人都能用,不再是某些人的专利。你可能会想,这个东西和现在的云环境有什么区别?还是有区别的,不然也不会有那么多大公司抢着来。现阶段Serverless是云厂商的事情,与普通开发者关系不大。但最终,这些新事物会慢慢侵蚀我们的传统领地。弹性!成本!我们已经在上面给出了一个例子。在这个阶段,服务端软件开发需要按照峰值进行设计。买了服务器后,即使是云主机,大部分时间都是空跑。空跑还要收费,这也是企业IT成本居高不下的原因。它不得不花钱买很多根本不需要的东西。Serverless按需收费,用多少用多少。比如当你的服务QPS是10w的时候,就给你配10台机器,当降到2W的时候,给你配2台机器,这样可以节省4/5的钱。这种灵活性看起来很神奇,但它也是基于当前的一些技术。比如kube、docker等。不过这是云厂商的事。对于企业来说,意味着服务具有巨大的灵活性,可以节省大量的成本。等大佬们尝到这个功能的甜头,怎么还有一帮人眼里只有技术?时间!敏捷!Serverless的形态一定是一个大生态,就是有很多完善的功能积木,开发人员去组装。云厂商会保证功能功能、升级迭代、向下兼容等特性的正常运行,企业根本不会在一些已有的功能上投入精力。例如,构建直播基础设施非常昂贵且耗时。如果Serverless提供了这样的功能模块,企业可以直接使用。这种租赁方式不仅便宜,而且快捷。过去产品构思需要一年半的时间,而现在上线只需要几天时间。这就是重用的魔力。可以看到一些变化,在这个模式下,很多职业都会发生变化。运维工程师?不再需要了。您只需在后台进行操作和配置,即可获得稳定、安全、廉价的主机。中间件工程师?需求减少了。企业将不再支持这些昂贵且难找的人来做这些基础设施。你只需要操作配置后台,使用云厂商暴露的功能,就可以漂亮的完成工作。后台开发工程师?需求变小了。不需要很复杂的逻辑,前后端分离,复杂的分布式锁和数据同步等,只关注业务逻辑。前端工程师?这个时候前端还叫前端吗?应该叫全栈。只要会玩乐高积木,就可以根据图纸拼接零件。在功能模块足够丰富的前提下,这些都不算神奇。程序员的API不再是Kafka、Redis等,而是云厂商提供的大量自定义函数。对于安于现状的工程师来说,这是一个真正的挑战。其实从这几年云主机的普及就可以看出,有些职业真的慢慢变成了后台管理员。本质上,这与淘宝小二的运营背景没有什么区别。其实质就是:了解平台的规则(功能),并做出相应的推广(整合)。Serverless的编程要无聊得多。在时代的浪潮中,个体总是容易被抛弃,而我们无疑已经进入了终身学习的时代---尤其是勤奋的程序员。工具抽象程度高并不代表对工程师的素质要求低。由于Serverless没有任何标准,只是一个概念,所以各个厂商的实现方式肯定是不一样的。作为企业的老板,肯定会有这样的担心:总不能把鸡蛋放在一个篮子里,被厂家绑架吧。比如现在有些老板用的是阿里云,也会考虑腾讯云、信仰云等等。使用A平台提供的功能开发的应用很难迁移到B平台,厂商都希望垄断,但往往做不到,这会增加工程师的学习成本。此外,Serverless厂商能力有限,无法覆盖所有基础业务功能场景。肯定会有厂商采用开发者平台吸收外部功能组件。开发这种分工功能组件的开发人员也有更高的要求。我估计以后会有一个插件模式的云功能市场来丰富这个生态。各种开源软件的版权也要改。就像现在的云主机一样,靠开源软件赚大钱,白白浪费了这么多年,软件开发者却无法从中获利,这是严重不合理的。未来的程序员是什么样的?平台开发工程师。构建云Serverless平台,保障基础设施完善。这是大厂才会玩的东西。插件功能工程师。根据平台规则,开发相应功能,享受销售提成;或被特定公司聘用以开发此类功能。这是工程师的相对负责人。业务开发工程师。从大量的功能组件中寻找构建块来构建产品。这和在gayhub上找功能,集成到项目中是一样的。这是最大的人员比例。一旦Serverless流行起来,它将把大多数工程师引向不归路。幸运的是,由于各大厂商并非铁板一块,它们相互竞争、相互攻击,这会让建设过程持续很长时间。当然,如果是一家独大,那就不用担心了。原因有三:一是世界大势所趋,久分必合,久合必分。大厂的霸权,会让人背叛自己的亲人。造成一定程度的技能倒退。第二,怀旧能使人如痴如醉,很多东西不会死去。比如,我还是喜欢超级马里奥。第三,让我们等到我们能活到那一天。可能会与传说中的人工智能一起到来。话不多说,我要去研究一下AWSLamba。作者简介:品味小姐姐(xjjdog),一个不允许程序员走弯路的公众号。专注于基础架构和Linux。十年架构,每天百亿流量,与你探讨高并发世界,给你不一样的滋味。