阿里云Serverless产品专家,NUDT博士;开源项目Serverless Devs (CNCF Sandbox Project)发起人。畅销书《Serverless架构:从原理、设计到项目实战》《Serverless工程实践》《Serverless架构下的AI应用开发》作者。
Serverless 架构下,虽然我们更多精力是关注我们的业务代码,但是实际上对于一些配置和成本也是需要进行关注的,并且在必要的时候,还需要根据配置与成本进行对我们的 Serverless 应用进行配置优化和代码优化。
我一直都想要有一个漫画版的头像,奈何手太笨,用了很多软件 “捏不出来”,所以就在想着,是否可以基于 AI 实现这样一个功能,并部署到 Serverless 架构上让更多人来尝试使用呢。
本文通过与IoT能力进行结合,让Serverless架构在智能音箱中,发挥有趣的作用。
本文以阿里云函数计算为例,通过API网关触发器实现一个基于Websocket的聊天工具。
本文通过“Serverless角度”,实现简单的Python语言的在线编程能力,并对其进行进一步探索。
本文将AI项目与Serverless架构进行结合,在Serverless架构下用20行Python代码搞定图像分类和预测。
人工智能领域中的验证码识别与 Serverless 架构碰撞会有哪些火花呢?本文将会通过 Serverless 架构,通过卷积神经网络(CNN)算法,实现一个验证码识别功能。
本文将AI项目与Serverless架构进行结合,在Serverless架构下用20行Python代码搞定图像分类和预测。
众所周知,在Serverless领域中,触发器是FaaS必不可少的一部分;一个FaaS平台,他的触发器数量、质量以及类型,很可能会决定这个FaaS平台是否能成为“主流”平台;因为触发器不仅仅是一种功能的体现,更是解决普遍性业务诉求的一个重要途径;目前来看,各个云厂商所提供的触发器基本上都会包括API网关触发器、对象存储触发器、时间触发器等,当然也有厂商提供一定的消息触发器、日志触发器、甚至是一些SQL相关的触发器、CDN触发器等,那么在我们的实际生产生活中,这些表面上看起来“很基础”的触发器,是否可以升级成为一个有趣的“高级触发器”呢?
在实际生产中,我们经常需要做一些监控脚本监控我们的网站服务或者API服务是否可用。传统的方法是通过一些网站监控平台(例如DNSPod监控、360网站服务监控,以及阿里云监控等),这些监控平台的原理是通过用户自己设置要监控的服务地址和监测的时间阈值,由监控平台定期发起请求对网站或服务的可用性进行判断。
在生产生活中,图像的合成实际上是一个比较常见的需求。而图像的合成往往也会在一些活动中,有着比较重要的作用和价值,例如在一个固定的图片模板上增加一些文字和一些验证码,形成一个新的图片,然后分享出去做一些营销活动;或者是在某些节假日,通过图像的合成,在头像上增加一些装饰物等。本文将会继续探索Serverless在图像处理中的应用,尤其是图像合成相关的应用。本文将会以阿里云函数计算以及华为云函数计算为例,为读者进行图像合成相关操作的探索。
随着近几年,NLP技术越来越多的呈现在众人眼前,也逐渐的被应用在了更多领域,其中为网站赋能部分有着很多有趣的应用,随着Serverless的发展,我们不妨将Serverless与NLP技术进一步结合,并将它赋能在我们的网站之上,让我们的网站更有趣,
图像分类是人工智能领域的一个热门话题。通俗解释就是,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。图像分类在实际生产生活中也是经常遇到的,而且针对不同领域或者需求有着很强的针对性。例如通过拍照花朵识别花朵信息,通过人脸匹对人物信息等。
Serverless 概念自被提出就倍受关注,尤其是近些年来 Serverless 焕发出了前所未有的活力,各领域的工程师都在试图将 Serverless 架构与自身工作进行相结合,以获取到 Serverless 架构所带来的“技术红利”。
Serverless架构可以在很多领域发挥极具价值的作用。包括监控告警、人工智能、图像处理、音视频处理等,同样,在大数据领域,Serverless架构仍然可以具有良好的表现,以大数据常见的入门案例:WordCount为例,可以依靠Serverless架构实现一个“Serverless版本的MapReduce”。
众所周知,随着网络技术的不断发展,IoT技术也逐渐走进了千家万户,无论是扫地机器人、智能窗帘等智能家居,还是说智能音箱等娱乐设施,IoT技术都变得可见可及,而众多物联网产品中,智能音箱可以说是近几年最火热的设备之一了,无论是小米的小爱同学、百度的小度还是腾讯的9420、阿里的天猫精灵,它们都在努力走进寻常百姓家。
但是,无论是那种类型,其背后的核心模块“代码执行器”/“判题机”等,都是值得被关注的。一方面,这类网站通常情况下都需要比要严格的“安全考虑”,例如程序会不会有恶意代码,出现死循环、破坏计算机系统等,程序是否需要隔离运行,运行时是否会获取到其他人提交的代码等;另一方面,这类平台通常情况下都会对资源消耗比较大,尤其是比赛来临时,更是需要突然间对相关机器进行扩容,必要时需要大规模集群来进行应对。同时这类网站通常情况下也都有一个比较大的特点,那就是触发式,即每个代码执行前后实际上并没有非常紧密的前后文关系等。
随着计算机科学与技术的发展,越来越多的人开始接触编程,也有越来越多的在线编程平台诞生。以Python语言的在线编程平台为例,关于Python语言的在线编程平台大致分为两类,一类是OJ类型的,即在线评测的编程平台,另一类则是学习、工具类的在线编程平台,例如Anycodes在线编程等网站。
Serverless架构的出现,被很多前端的同学认为是“前端的新机会”,因为在Serverless的加持下,前端工程师不仅仅是前端工程师了,可以更简单的、更容易的华丽转身成为全栈工程师。
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题。具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。
Kubeless是基于Kubernetes的原生无服务器框架,其允许用户部署少量的代码(函数),而无需担心底层架构。它被设计部署在Kubernetes集群之上,并充分利用Kubernetes的特性及资源类型。可以克隆在AWS Lambda,Azure Functions、Google Cloud Functions上的内容。
OpenWhisk 是一个开源、无服务(Serverless)的云平台,可以在运行时容器中通过执行扩展的代码响应各种事件,而无需关心相关的基础设施架构。OpenWhisk 是基于云的分布式事件驱动(event-based)的编程服务。
Knative是一款基于Kubernetes的Serverless框架。其目标是制定云原生、跨平台的Serverless编排标准。Knative通过整合容器构建(或者函数)、工作负载管理(动态扩缩)以及事件模型这三者来实现的这一Serverless标准。
Serverless开发者工具通通常情况下包括命令行工具,编辑器插件以及其他工具。 命令行工具一般情况下有厂商一方工具,和开源建设的三方工具两种,例如AWS Lambda的SAM CLI,阿里云函数计算的Funcruft等就是典型的一方工具。这类工具的特点是和厂商、产品的匹配成都会非常高,一些特性能力的支持会比较迅速,缺点是有的时候比较保守;
在应用开发过程中,或者应用开发完成,当所执行结果不符合预期时,我们通常要进行一定的调试工作。但是在Serverless加架构下,调试往往会受到极大的环境因素限制,通常情况下会出现的情况是,所开发的应用在本地是可以比较健康的、符合预期的运行,但是在FaaS平台上,则会出现一些不可预测的问题;或者是在一些特殊的环境下,本地没有办法模拟线上环境,难以进行项目的开发和调试。
与其说Serverless架构是一个新的概念/架构,倒不如说他是一个全新的思路,一种新的编程范式,在这种新的架构下,或者说新的编程范式下,使用全新的思路来做Serverless应用是再好不过的了,但是实际上并不是这样的,原生的Serverless开发框架是非常少的,以Web框架为例,目前的主流的Web框架“均不支持Serverless模式部署”,一方面是我们要尝试接触Serverless,一方面又没办法完全放弃传统框架,所以将传统框架如果更简单、更快速、更科学的部署到Serverless架构上就是一个值得探讨的问题。
Trigger实际上就是触发器的意思。触发器是触发函数执行的方式,在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的处理者,而触发器提供了一种集中、统一的方式来管理不同的事件源。在事件源中,当事件发生时,如果满足触发器定义的规则,事件源会自动调用触发器所对应的函数。
当我们通过Serverless架构,建立了一个函数,并输出了Hello World之后,表明我们已经完成了Serverless架构的“初体验”,接下来,我们可以以其中一个云厂商为例(例如阿里云),进行基础的小工具开发和建设。
但我们注册并登陆我们的阿里云账号之后,我们可以找到函数计算产品:
实现一个Hello World是入门各个编程语言的第一节课,无论是我们学习C语言,C++,Python等,貌似都离不开一个Hello World,既然如此,本章将会基于Serverless架构,在主流的云厂商的FaaS平台实现一个Hello World。
Serverless架构的发展是飞速的,短短几年的时间,Serverless已经从“鲜为人知”到了“人尽皆知”,在过去的日子中,大家对Serverless的态度是褒贬不一的,有的人认为Serverless架构是未来,是真正的云计算,是可以引领云计算下一个十年;但是,也有的人认为Serverless架构会阻碍时代的发展,技术的进步
Kubernetes中文社区对Fission的描述是:Fission是一款基于Kubernetes的FaaS框架。通过Fission可以轻而易举地将函数发布成HTTP服务。它通过读取用户的源代码,抽象出容器镜像并执行。同时它帮助开发者们减轻了Kubernetes的学习负担,开发者无需了解太多Kubernetes也可以搭建出实用的服务。Fission可以与HTTP路由、Kubernetes Events和其他的事件触发器结合,所有这些函数都只有在运行的时候才会消耗CPU和内存。
Kubeless是一个相对成熟的项目,与其他一些比较成熟的例如Fisson,OpenWhisk等开源FaaS平台相比较,他们在Github上面的Watch,Star以及Fork分别如下:
Apache OpenWhisk是一个开源FaaS平台,是一个由IBM和Adobe驱动的开源项目,可以部署在云或数据中心内。相比其他Serverless项目,OpenWhisk是一个健壮的、可扩展的平台,支持数千并发触发器和调用。OpenWhisk项目的基本信息如下表
Serverless构架不仅仅在工业界有诸多厂商不断为之努力,在开源领域也是有诸多优秀的开源Serverless项目。在《CNCF Cloud Native Interactive Landscape》的Serverless标签中,我们可以看到包括OpenWhisk、Fission、Knative以及Kubeless等在内的众多优秀开源FaaS平台。
Serverless架构自提出到现在经过若干年的发展,已经在很多领域中有着非常多的最佳实践。但是Serverless自身也是有局限性,由于其无状态、轻量化等特性,Serverless在一部分场景下可以有非常优秀的表现,但是在另外一些场景下可能表现的并不是很理想。
自Serverless这个概念被提出,从不为人知到广为人知已经经历了数年的历程,在这个过程中有一众人对Serverless架构充满信心和期待,但是也有一部分人对其抱有怀疑态度,但是无论如何Serverless架构都在飞速的发展,并且被更多人所接受,被更多厂商所重视。在Serverless架构中,计算能力通常是由FaaS平台提供,在众多的FaaS平台或产品中,有以AWS Lambda、Google Cloud Functions、阿里云函数计算等为代表的工业化产品
冷启动优化:开发者侧降低冷启动影响的方案
冷启动优化:厂商对冷启动问题的优化
Serverless architecture grew out of cloud computing. It inherits all the advantages of cloud computing while being extremely flexible, cost effective, and maintenance free.
Serverless 架构应用场景
众所周知,事物具有两面性,即使时至今日,云计算的发展已经取得了巨大的进步,但是作为云计算最新产物的Serverless架构,仍然存在着巨大的优势和不可忽略的挑战。
众所周知,事物具有两面性,即使时至今日,云计算的发展已经取得了巨大的进步,但是作为云计算最新产物的Serverless架构,仍然存在着巨大的优势和不可忽略的挑战。
随着云服务的发展,计算资源被高度抽象化,从物理机到云服务器,再到容器服务,计算资源逐渐变得更加细腻化。
自世界第一台通用计算机ENIAC(Electronic Numerical Integrator And Computer)诞生以来,计算机科学与技术的发展就从未停止过前进的脚步,尤其是近些年计算机的发展更是日新月异,有不断突破和进化的人工智能领域,有5G带来更多机会的物联网领域,还有“可信”的区块链技术,当然也有不断更新、不断迭代,不断走进“寻常百姓家”的云计算。
Serverless Devs 与 CI/CD 平台/工具集成
通过 Serverless Devs 快速体验函数计算(二)
通过 Serverless Devs 快速体验函数计算(一)
通过 Serverless Devs 快速创建函数计算应用(二)
通过 Serverless Devs 快速创建函数计算应用(一)