最近几个月,我已经中止写关于Serverless的博客了。这有不少缘由,但不少缘由都是由于我感受已经没有太多的东西来增长讨论了。不是由于我没有什么新鲜事要说,而是由于我已经在之前的博客帖子、Twitter帖子或录音谈话中说了不少。过了一阵子,这些谈话和要点对我来说并不新鲜了,一遍又一遍地说一样的话,对我来讲真的很难,也有点毫无心义。
程序员
但我已经清楚的是,对于使用Serverless做为术语的我的,以及正在构建服务并称之为Serverless的供应商,仍然有一些基本方面须要澄清。服务器
因此,让我带你去了解一下为何我认为Serverless是Cloud 2.0的开始。网络
1、代码为王的时代架构
在技术发展的很长一段时间里,构建网络化应用程序依赖于软件。要知道发生了什么事情,你必须很是了解的软件,或者了解从某个地方下载并部署的软件。app
开源运动在必定程度上是对试图控制互联网软件供应的主要软件公司的反应,这致使了一些难以置信的工具和服务的惊人爆炸式增加。less
在20世纪90年代末和21世纪初,咱们看到了一些开源技术的出现,尤为是LAMP技术栈,为围绕着互联网的使人难以置信的一系列创新奠基了基础。运维
随着虚拟化技术的出现,“代码为王”彷佛是不可避免的,这致使了云服务和可以改变技术方向的巨无霸云供应商。ide
云服务成为了规范,尽管许多公司仍然停留在内部私有云时代,但它确定正在成为企业的事实标准。函数
全部这些都是以可以将本身的代码上传到云端为前提的。工具
代码为王,程序员正在制造新的国王。https://thenewkingmakers.com/ —正如Redmonk的Stephen O’Grady所说,这句话由来已久。
这就是好久以来的状况。开发人员开发软件,运维团队管理基础设施,虽然DevOps运动为这些团队提供了更好的合做方式——CI/CD、流程自动化、理解的改进——但这种分离仍然存在。
2、Serverless模糊了开发和运维边界
很快Serverless来了。而不少人会争论何时Serverless出现(以及它是什么!)我绝对会把Serverless的诞生与2014年在Re:invent推出的AWS lambda联系起来(我不会解释为何我要在这里这样作,这并不彻底相关)。Serverless!=FaaS,FaaS是Serverless的主要推进者,这是一个突破,意味着它成为主流。
对我来讲,关键是,Serverless依赖的开发人员,须要比以往任什么时候候都更高的层次去理解运维。也就是说,开发人员须要了解软件如何实现容量伸缩的行为,包括:怎么扩容到100和缩容到零,以及数据访问行为等,诸如:使用峰值如何影响数据访问或相似的状况。
我对Serverless的定义也是经济层面的:
“一个Serverless应用程序是指在无人使用的状况下运行它不须要花费任何成本,但不包括数据存储成本。”
所以,这依赖于开发人员至少在必定程度上理解他们是业务的一部分,而不是孤立于业务决策。当涉及到云计算时,这一般更像是运营团队职责的一部分。
当您使用全部这些元素时,与之前的范例相比,开发人员在新的Serverless世界中承担更多的责任。
对于开发人员来讲,不了解Serverless解决方案中更改的影响以及发生的意外后果(具备财务影响)要容易得多。
Serverless的转变依赖于他们对基础设施如何工做的理解,实际上更少地依赖于他们的代码质量多好或多差。
这给咱们带来了一个有趣的观点。
3、“代码就是王者”时代已过期,“基础设施”是新王者
当您以Serverless的方式构建时,您一般更依赖于云提供商提供的服务。正如人们常常提到的,Serverless不是一个好名字,“服务型的”多是一个更好的名字。
这是有道理的。了解要使用的服务以及何时是构建一个好的Serverless应用程序的关键元素。
但这只是Serverless模式转变的一部分。第二部分并不老是那么明显。
您实际上须要尽量少的代码。
由于代码是一种责任。
我不是惟一一个从上面的tweet看出结论的人。其余人,如:Joe Emison,谈到在Serverless的范例时,认为LOC(代码行数)须要保持尽量的少。
由于若是代码更少,那么复杂性就更少。
这包括您的基础结构,它应该是某种定义语言的形式,容许您部署应用程序。由于当您构建一个Serverless应用程序时,您正在建立链接服务的基础结构和业务逻辑,以及一些“代码”,其中“代码”只是您编写的代码,以实现服务没法实现的功能。
事实上,您的代码远不如您如何设计应用程序重要。这仍然很重要,但比之前要少得多。如何利用云服务成为您的应用程序。
我建议这样作:
最终的Serverless应用程序中根本没有代码
4、Cloud2.0:基础架构为王
为何我把这个叫作“Cloud 2.0”,并把它变成一个“新事物”,好像它在某种程度上有所不一样?
这真的很简单。
到目前为止,云计算的概念一直是关于构建应用程序和部署到服务器、实例容器上。
Serverless,“Cloud 2.0”再也不是那么回事了。
Serverless的目标是将代码减小到零,并使用云供应商服务尽量多地完成工做。这就是为何当有人跟我说“在K8S上运行FaaS”是Serverless的时候,我以为这很使人困惑。对我来讲,这严重地增长了代码的数量,减小了正在使用的服务的数量,与Serverless的想法彻底相反。是的,它使用“函数”,若是这是使某个东西变得Serverless的惟必定义,那么很好,可是若是您看一下上面的内容,这种方法就变得荒谬了。
上世纪90年代末,我在一所大学的数据中心开始了个人技术生涯,而且是一名系统管理员。我知道运行实际的机器和处理全部问题意味着什么。我整个职业生涯都在努力避免那些问题。
云供应商花了十多年的时间来构建服务,以便用户没必要构建复杂的系统。
若是您能够简单地从云提供商处购买服务,那么为何您要在K8S之上运行本身的服务功能,或者在云提供商上运行相似的服务功能?从LOC/维护/时间/努力的角度来看,这真的没有意义,除非你必须使用on-prem或相似产品,不然我不理解。
若是你还想,那就去吧。
但几乎能够确定的是,你再也不须要了。
5、Cloud 2.0:谁创造了新国王?
以Stephen O’Grady和他书中的词组为例,我想知道新的国王会是谁?
我有一些想法。
我认为会是那些掌握了这种新的“基础设施就是王者”模式的人。
我认为会是那些明白了完美的代码再也不是成功的必要条件的人。
我认为会是那些明白了不管你今天写的代码,都是明天的技术债务的人。
我认为会是那些明白了工做背后的商业规则比技术成就更重要的人。
我认为会是Serverless的架构师……
......以及那些理解高伸缩性和可用性云服务,并知道如何编写高度优化和最小化的代码来将它们链接在一块儿,并对技术债务持很是务实的观点的人。
6、可是,咱们仍未到达......
这个新世界缺乏工具、故事和英雄。
目前,咱们正在使用Cloud 1.0工具来尝试提供Serverless解决方案。
目前,科技界尚未为这些新工具作好准备。
不过咱们离得不远。
Cloud 2.0是Serverless
这就是咱们将要结束的地方。我敢确定!
原文连接:
https://medium.com/@PaulDJohnston/cloud-2-0-code-is-no-longer-king-serverless-has-dethroned-it-c6dc955db9d5