learn-tech/专栏/Serverless进阶实战课/00思维构建如何在新赛道下进阶Serverless能力?.md
2024-10-16 06:37:41 +08:00

13 KiB
Raw Blame History

                        因收到Google相关通知网站将会择期关闭。相关通知内容
                        
                        
                        00 思维构建 如何在新赛道下进阶Serverless能力
                        你好,我是静远。

Serverless发展到现今大部分的技术人已经对 Serverless 将引领云计算的下一个十年达成了共识。作为一名技术研发人员“Serverless”对你来说大概率并不陌生甚至你已经在不知不觉中用上了但是它的快速发展也让我们很难对它形成一个较为全面的认知。

那么这节课我们就一起了解Serverless的前世今生重构Serverless思维并选择一个具象化的Serverless形态作为切入点开启后续的学习。最后我也会和你探讨后续学习“升级打怪”的各个阶段让我们的进阶目标更加清晰。

新赛道Serverless的具象化表达

简单来说Serverless是一种架构设计的理念它不是一个具体的编程框架、类库或者工具。随着大家对于Serverless理解的深入用词也越来越精准、具象。从之前“无服务器”的直译到目前“服务器无感知”的理解是各界对Serverless这几年发展和使用的一个跨度的体现。

我们从头看一遍这个新赛道的发展历程。用Martin Fowler的观点来说Serverless是FaaS和BaaS的组合这个简单明了的定义奠定了 Serverless 组成结构的基础。

CNCF在认定这个理念的同时也在它的白皮书V1.0中对 Serverless 架构的定义有了进一步地完善描述它指出Serverless Computing 是构建和运行不需要服务器管理的应用程序。它描述了一种更细粒度的部署模型将一个或多个功能的应用程序打包上传到Serverless平台然后根据实际的需求执行、扩展和计费。

我们发现,这个描述从执行路径和更细的角度进行了具象化的表述。

在2022年7月的云原生产业大会上信通院发布的最新的云计算白皮书针对Serverless的描述中提到“通过多种服务器无感知技术将基础设施抽象成各种开箱即用的服务以API接口的方式提供给用户按需调用真正做到按需伸缩、按使用量收费”又进一步从业务和基础设施服务的协作角度凸显了Serverless的特性。

我沿用信通院白皮书的话来体现这种思想也希望我们能够达成一个共识“Serverless是能够实现业务和基础设施分离提升用户业务创新能力的理念”。

发展历程:从单一到多元

除了理念上的落地我们再说一下Serverless的技术和应用场景向多元化发展的历程。以史为镜可以知兴替理解Serverless多元化的历程才能更完整地构建你的Serverless思维。

雏形阶段

国外可以追溯到2006年Fotango公司推出的PaaS平台Zimki提出了按需使用、按量付费的概念从那时Serverless的核心特征就已见雏形了。到2012年基础设施服务提供商Iron.io的副总裁Ken在《Why The Future of Software and Apps is Serverless》中首次提到“Serverless”这个词它正式走进历史的舞台。我们可以认为这一阶段就是Serverless发展的“雏形阶段”。

发展阶段

AWS 于2014年发布第一款函数计算产品 —— Lambda预览版并于2015年正式商用使用量随后一路飙升随后IMB、Google、Micosoft也于2016年相继发布FaaS产品开源项目也同时出现这里包括比较知名的OpenWisk、Fission、Kubeless、OpenFaaS等。

到2017年国内头部的四朵云阿里、腾讯、华为、百度也相继发布了FaaS产品。同年Azure发布了首个Serverless容器ACIAWS发布Serverless容器服务Fargate。

可以说Serverless的领域内大家追逐和创新的劲头彰显得非常明显。这一段时间出现了函数计算、容器实例、容器服务等产品。从下面的Google Trends也可以看出人们对于无服务器和Lambda的关注度是不断提升的。我们可以认为这是Serverless的发展阶段。

成熟阶段

2018年华为云发布了Serverless容器服务CCI阿里云发布面向应用的Serverless托管服务SAE。在开源方面Knative发布并于2022年3月成为CNCF孵化项目。

时隔一年阿里云、Google、腾讯云先后发布了Serverless容器服务截止到去年各大公司又相继推出了Serverless应用托管服务旨在进一步为用户提供全托管、免运维和高弹性的服务能力一方面可以解决存量的微服务应用上云另一方面可以高效地集成和持续交付等。这一期间直接把Serverless推到了一个相对成熟的阶段。

可以说随着Serverelss技术和价值的体现各大公司都在你追我赶地发展国内厂商虽然是后来者但追赶势头迅猛目前的竞争力也能够和国外大公司相互比肩。

从发展历程中我们也可以看出以函数为起点Serverless的技术和产品逐步趋于多元化。多种形态相互补充为解决更复杂、更多样化的业务场景提供支撑我们通常会把场景分为三类

函数计算FaaS面向函数用户只需关注函数层级的代码用于解决轻量型、无状态、有时效的任务 Serverless应用托管面向应用用户只需要更关注应用本身与微服务结合它融合应用治理、可观测降低了新应用的构建成本、老应用的适配改造成本 Serverelss容器服务面向容器在不改变当前Kubernetes的前提下由于不再需要关注节点大大提升了前期资源的准备过程降低了维护成本使得应用的全生命周期管理更高效。

随着Serverless的内涵持续外延计算的Serverless化要求BaaS服务也具备与之配套的托管能力和极致弹性全链路完整支撑真正Serverless化的应用构建。

那么我们讨论的“Serverless”已经不再是原来狭义上的Serverless——函数即服务了。广义上Serverless的特性应该同时体现在Serverless DB、Serverless消息队列、工作流、工具链等等方面。如今在资源层的Serverless上各大公司也相继研究发布了各种产品如数据库层面的Amazon Aurora Serverless、PostgreSQL for Serverless、PolarDB Serverless等。

除了定义内涵在不断的丰富Serverless的应用场景也在迅猛扩展。它不再局限在小程序、定时任务、简单事件的触发、批量场景的处理了基于AI的集成、大规模数据的处理、IOT数据处理、微服务托管上云等领域都随处可见Serverless的身影。

我再附上一张信通院标准书中的Serverless解决方案图帮助你更好地梳理Serverless的知识要点在课程的开始构建起Serverless的模型和思维。

切入点:升级打怪的进阶之路

了解了Serverless的发展、价值和架构模式具备了Serverless的意识形态之后相信你已经对Serverless这个新赛道脱离了之前的印象了。

Serverless的多而杂一方面让我们更期待它未来的发展但另一方面也的确提升了我们学习的难度。那我们要怎么切入这个新赛道紧跟云计算下一个十年的发展趋势呢

正如开篇词中所说我不希望你面面俱到地学习很多具象化的技术那样只会“杂而不纯博而不精”。我建议你从FaaS形态的Serverless入手为什么要给出这个建议呢

首先Serverless如同太极确实讲究“用意不用力”但学习“太极”也讲究前期的武功招式只是练就到最后应该忘形存神。那么选择一个具象化的产品来学习新赛道下的Serverless是非常有必要的。

其次FaaS作为Serverless意识形态的“元老”级别产品从AWS Lambda的发布到众多厂商的跟进已经发展8个年头了。自定义运行时、自定义镜像、编排、应用中心等也都是基于FaaS打造和延伸的功能。因此FaaS形态的Serverless是你入手的不二选择。

那么我们如何学习Serverelss FaaS这一套“拳法”呢我列了这一个简单示意图下面我依次来跟你讲一下如何达到每一个层级。

Hello World

这个层面最简单你只要具备任意一个云厂商的账号创建一个函数运行起来就算是迈出了Serverless学习的第一步。

在学习的过程中也不需要任何的成本,云厂商一般都有免费的额度,不用担心费用问题,直接上手练习、使用就好。

能用

要想达到这一层,你需要经常去云厂商的网站浏览,学习手册,再找一些公众号等博文资料了解。

完成这一次进阶的你一定已经基本了解了一个Serverless的平台都有哪些功能也能够简单的实操可以做一般的售前解决方案了。不过还并不具备很强的开发能力。

会开发简单业务

这一层开始,就是针对开发层面的学习了。

一方面你需要掌握一门比较流行的编程语言比如Python、Golang等另一方面你还需要持续关注业界公布的各种案例和云厂商的手册跟着来改造你的代码。做到这两方面这一层进阶也就完成了。

会开发复杂业务

达到这一层次的开发同学,必须将函数计算的各种技能融会贯通,知道什么情况用什么策略更好,当然,在社区和云厂商的答疑上也会有一些分享,可以持续关注。

能沉淀公共能力

这个层级属于业务开发的最高级。简单来说,你在开发自己业务代码的时候,能够沉淀出相关的类库、层供你和其他同学或者平台上的其他开发者使用的能力,这是抽象能力的体现。

在达成进阶之前,你应该就已经具备能撰写类库的能力,且学习过相关的抽象思维、设计相关的知识,并有这种意识去执行。

计量计费

作为一个平台,计量计费是少不了的。这个层级,也可以说是希望具备平台开发能力的同学需要达到的初级阶段。

你需要提前具备Kubernetes、Docker、架构设计、中间件的基础知识在此基础上你还需要系统性地吸收Serverless的一线实战案例和经验才有可能避免踩坑。

平台可迁移

这个层级属于平台开发的王者阶段。你开发的平台不仅可以在你的云上使用,还可以帮助私有化企业部署,甚至可以组件化的方式输出。

想要完成这个层级的进阶我的建议是加入一个云原生的Serverless团队在里面打磨一万小时以上扎扎实实地搞清楚每个点假以时日你才能在这个领域崭露头角。

写在最后

到这里你应该已经对Serverless有了不一样的理解。

Serverless是能够实现业务和基础设施分离提升用户业务创新能力的理念。我给你整理了一个图突出几个核心特征组成了它的形式

其中从物理组成上FaaS和BaaS组成了Serverless的基本构成这就跟汽车由车身和车轮构成一个道理而通过开箱即用、API形式调用等动作描述了Serverless的运作形态这就跟汽车需要发动引擎、脚踩刹车的使用逻辑类似最后按需调用、按量收费的几个核心特征体现了Serverless的“最大卖点”好比似汽车的自动驾驶、自动泊车功能一样。

这样了解下来你是不是对Serverless的理解更亲切了呢

Serverless发展到今天形成了以函数计算、弹性应用、容器服务为核心的产品形态并逐步泛化和外延使得其形态趋于多元化形成互补之力能够满足更多的场景。

但是Serverless思维的建立一定不是一蹴而就的。在它未来发展的几年中也一定会越来越泛化它一定会继续融合更多的生态更多的Serverless产品形态也将会不断涌现。我们要做的就是“保持一颗拥抱变化的心”扎根于Serverless的本质精髓透过产品了解背后的技术原理和初衷。

在后面的课程中,我希望你不仅跟着学习文章中的理论知识,也能够随着课程中提到的实战去自己动手练习,积极地参与讨论和思考,通过“学习-实践-总结-表达”的过程去探索这门不断延伸的技术。

在这样的学习下,我相信你一定可以触类旁通,“随敌而变,随招而变”,达到真正的“用意不用力”。

思考题

你在步入Serverless领域的时候有没有遇到什么困惑呢欢迎分享出来我们一起讨论解决。

感谢你的阅读,也欢迎你把这节课分享给更多的朋友一起阅读和交流。我们下一讲见。