云原生Clouder认证:Serverless应用快速体验
Serverless应用快速体验
Serverless应用快速体验_学习资源库_阿里云培训中心-阿里云edu.aliyun.com/course/3115814/
云原生Clouder认证:Serverless应用快速体验_阿里云认证_阿里云培训中心-阿里云edu.aliyun.com/certification/cldn05?spm=a2cwt.28381220.J_4952501080.6.4d761952OFeELg
课程简介
欢迎来到《Serverless应用快速体验》,本课程是“云原生Serverless Clouder认证”系列中的第一阶段。课程将以一名初学者的视角,从实际应用场景出发展开关于Serverless的探索和学习,理解掌握Serverless的基本概念、关键名词和价值特点,并通过函数计算部署AIGC文生图应用,以及ImageAI图像预测应用的实际案例来快速体验Serverless的优势。
课程目标
学习完本课程后,您将能够:
- 熟悉Serverless的基本概念
- 掌握Serverless的关键名词与优势特点
- 熟悉阿里云Serverless产品及服务
- 基于函数计算部署AIGC应用实现以文生图
- 基于函数计算部署ImageAI应用实现图像预测
课程场景
本课程为场景化教学,旨在帮助学员还原Serverless的学习过程以及体验真实的Serverless应用场景。该场景讲述了公司的技术实习生 小陈 如何在实际工作中接触和学习Serverless,并基于阿里云Serverless服务体验AIGC及ImageAI功能。
计算机专业的小陈在毕业前来到一家技术公司实习,公司给他安排了导师大刘指导其工作和学习。公司近期上线了包含官网、电商、社区多个板块在内的综合性企业网站平台,由于产品服务优质、运营活动有效,短时间内积累了一批优质用户,线上互动活跃度高,每天会产生大量UGC内容。为了增加网站乐趣,提高用户粘性,结合最近火热的生成式AI技术浪潮,公司希望通过AIGC新技术,让用户参与到产品设计中来,同时强化产品的使用、分享及评论功能。导师大刘是资深技术专家,作为企业网站的技术负责人,正忙于网站大版本升级工作,对于以上新需求的调研,打算借此机会锻炼下小陈,计划安排他一边学习一边实践,如何选择最合适的技术方案。
思考:如何才能快速、低成本地推出AIGC应用?
公司新上线的综合性网站平台,经过一年多的沉淀,聚集了一批忠实、热情的用户,网站的互动内容分享很活跃。由于近来AIGC(Artificial Intelligence Generated Content,人工智能生成内容)技术火热,受关注度很高,为了增强用户互动、提高趣味性,公司希望网站推出新功能,吸引有创意、想象力的用户参与到产品的设计优化中来,还可将产品使用图片生成趣味插图用于分享,引发用户共情,进一步推升网站人气。对于这项创新需求,网站的技术负责人大刘找到了技术实习生小陈,希望他来做一些调研和准备。
大刘:咱们公司网站最近想推出一项新功能,借助AIGC技术来增强用户与咱们产品的互动。我觉得这个需求比较有创意,用到的也是新技术,是一件挺有意思的事情。不过正式启动前需要做一些前期调研,这是一个难得的机会,想交给你来试试,如何?
小陈:好嘞,谢谢师傅信任,我会尽力做好调研。AIGC我一直有关注,比如ChatGPT、Stable Diffusion等,在学校里都是同学们讨论的热门话题之一。现在互联网上有不少好用的模型、应用,代码也是开源的,在调研阶段可以拿来即用。不过我有个疑虑,这些AI模型对于计算资源的消耗往往是挺可观的,部署测试也要花费不少时间精力,我怕应付不过来呢。
大刘:你说的没错,这个问题我之前就有考虑,像这样一类AIGC应用,如果按照传统的应用开发模式,全流程的开发、部署一个完整应用,它的开发周期长、成本高、运维也很复杂。但近些年其实还有一种新的开发模式,只需要提供应用的核心代码,然后通过无服务器Serverless技术去执行,这种开发方式短平快,并且资源完全按需付费,很大程度上可以解决你前面提到的几个顾虑。
小陈:这个Serverless的方式听起来很有意思啊,无服务器,难道不需要服务器么?
大刘:哈哈,这个问题就留给你来研究和学习了。你可以先基于Serverless方向展开学习,需要做一些功课来论证基于Serverless架构实现AIGC应用的技术可行性。如果调研中有任何问题,可以随时来找我,我们一起讨论。根据以往的经验,多多讨论有助于加深理解。
小陈:好的,师傅不要嫌我麻烦就好。
大刘:Serverless是被高度关注的下一代云原生技术,受到业界厂商和开发者的高度重视,借这个机会好好学习,对你今后技术发展也一定会大有帮助。
小陈:明白,我清楚调研方向了,谢谢师傅!
为什么需要Serverless
按照传统开发模式开发一个应用,需要经历完整开发流程,编写应用全部代码,开发工作量大、周期长、成本高。而且,代码开发只是开发项目中的一部分,除此之外还有其他大量的工作要完成,包括应用上线的工作,如容量规划、资源采购、软件安装与配置、应用调试与功能验证等,及管理运维的工作,如安全加固、安装监控、运维管理与优化等。
应用上线、管理运维相关工作繁杂冗长、成本高昂,需要占用大量的时间精力。但遗憾的是,这些并不是应用的核心能力和开发者的主体工作。所以,开发人员更希望将有限的精力聚焦在代码研发、打磨业务逻辑上。开发人员期望的开发模式,只需关注具体业务逻辑代码的开发,也就是模块级别的实现,除此之外都转交给云厂商,让专业的人做专业的事,如下图。大家各司其职、强强联手,合力打造卓越应用,两全其美。那么,这种期望中的开发模式可行吗?
添加图片注释,不超过 140 字(可选)
传统开发模式 vs 期望开发模式
开发人员期望的开发模式,正好与Serverless(无服务器)倡导的理念是高度一致的,即让开发人员专注于业务代码编写,不必关心底层基础设计及软硬件配置。
著名的 Serverless 实践者 Ben Kehoe 这样描述 Serverless 原生心智,当我们在业务中考虑做什么时可以体会一下这种心智:
- 我的业务是什么?
- 做这件事情能不能让我的业务出类拔萃?
- 如果不能,我为什么要做这件事情而不是让别人来解决这个问题?
- 在解决业务问题之前没有必要解决技术问题。
这个Serverless原生心智正好说出了开发人员的心声,那么,Serverless是怎么产生的呢,让我们继续探究。
Serverless从何而来
我们都知道IT技术是用来解决业务问题的,而IT技术的载体则是各种各样的应用程序。这些应用程序提供了用户界面,实现了业务逻辑,运行在底层基础设施之上,为最终用户提供业务服务。
出于对降本增效的不懈追求,计算模式不断发展进步,从早期的物理机发展出虚拟机,又从虚拟机发展到容器技术,再从容器技术推升到Serverless技术,这是一个业务逻辑不断聚焦、技术栈不断抽象的技术进步必然过程。IT技术演进过程中的物理机、虚拟机、容器化的发展阶段,被统一称作基于服务器的计算模式,也就是Serverful模式,与之相对的则是“无服务器”模式,也就是Serverless模式。上述发展过程,简单如下图所示。
添加图片注释,不超过 140 字(可选)
计算模式发展历程
可以看出,在Serverful模式下,面对业务负载增加时需要扩展资源,其扩展单元要么是服务器,要么是虚拟机,或者是容器组,这三者的资源扩展速度是不断上升的,资源扩展颗粒度是持续减小的,对人员技能的要求也越来越高。而在Serverless模式下,扩展单元则变成了更轻量级的函数,部署速度更快,敏捷性更高,同时还降低了人员的技能要求。
让我们简单回顾下计算模式发展的主要阶段,了解每个阶段为什么会产生,有什么特点,又引出了什么新问题:
- 大型机:为解决复杂计算问题而研制出来。由于特别昂贵,大型机非常稀缺,能拥有大型机的机构不多,小企业有很多计算需求,但却无法获得计算的机会。
- X86:为了满足大量小企业的计算需求,推出了价格相对低廉的X86服务器。但是,X86服务器从购买到上线,周期长、运维困难、资源利用率也不高。
- 虚拟化:为了提高服务器资源利用率,打破服务器不可分割的限制,推出了虚拟化技术。虚拟化提高了资源利用率、可用性,降低了运维难度。但虚拟化种类偏少,仍需管理硬件并需要专业技术支持,使用门槛较高,虚拟化授权费也不低。
- 云计算:为进一步减少运维,降低成本,丰富产品,云计算应运而生。云计算提供了丰富的IaaS、PaaS平等产品和服务,提高了企业的工作效率。但在应用构建、运维、弹性扩展、故障恢复等工作方面,仍有较多工作,需用户完成。
- 容器化:为了提高应用系统在不同环境之间迁移的兼容性,出现了容器技术。随着容器技术的大范围应用,为了推动应用程序集群的资源管理自动化,又产生了容器编排技术。在拥抱容器编排技术之后,企业的运维工作进一步减少,但容器化仍需要一定的技术门槛。
- Serverless:出于对降本增效的不懈需求,企业的工作重心越来越聚焦在业务逻辑上,希望进一步削减容器化工作,于是Serverless应运而生。Serverless只需要关注业务逻辑,支持自动弹性、按量付费,进一步降低了使用心智。
由此可见,计算模式的每一次革命,都进一步增强了人们对业务逻辑的聚焦,降低了对底层技术展的关注,是执行降本增效的必然结果。是时候该好好认识Serverless了。
Serverless的基本概念
小陈对Serverless有了一个初步了解,为了快速抓住Serverless核心思想,合理安排学习和实验,早点完成调研,他打算向大刘讨教学习建议。
小陈:师傅,我觉得计算模式的演变方向就是不断提升生产力,从物理机发展到虚拟机,再到容器化,现在又发展到了Serverless,且还在不断进步中,是这样吧?
大刘:是啊,技术发展的方向就是让开发人员的工作,慢慢回归到编写业务逻辑代码的本职工作,趋势是越来越聚焦。
小陈:不过,我看了一些Serverless的学习资料,感觉理解起来有些困难,概念比较抽象,感觉离平时工作和学习还有些距离,不容易抓住其要领。
大刘:这是正常现象,不必焦虑。我先给你简单讲一讲,业界普遍对Serverless的理解就是FaaS(Function as a Service,函数即服务)与BaaS(Backend as a Service,后端即服务)的结合。通俗的说,就是把业务逻辑放到FaaS中去执行,比如应用的核心功能;而不能放到FaaS中的部分则封装成BaaS服务,以API形式提供调用,比如数据库访问、认证鉴权等。FaaS和BaaS结合在一起,共同实现传统应用程序的完整功能。FaaS产品化后被称为函数计算,是Serverless中比较常见和通用的产品,我建议可以围绕着函数计算去学习Serverless,学习曲线会平缓一些,学习效率也会提高。
小陈:懂了。难怪各云平台这两年都在大力推广函数计算,如阿里云的函数计算FC、AWS的Lambda等。
大刘:是这么回事。
小陈:好,那我就先从函数计算入手去学习Serverless。
Serverless是什么
Serverless的中文含义是无服务器,是一种云原生开发模式,可使开发人员专注构建和运行应用,而无需关注和管理服务器等底层基础设施及其运维。事实上,Serverless并不是真的不需要服务器,而是把服务器从应用开发中抽离出来了,转由云厂商接管相应的置备、维护和扩展等工作。
我们知道,计算模式中有自建基础设施、IaaS和PaaS,这些是基于服务器运行应用程序的Serverful模式。Serverless与这些计算模型的区别在于,Serverless无需关注与业务逻辑无关的部分,从繁重的底层资源的管理运维中解放了开发人员的精力,将业务逻辑无关的部分工作交给云厂商去管理,包括基础架构和应用扩展、管理运维等工作。
添加图片注释,不超过 140 字(可选)
几种不同的开发模式比较
在Serverful模式中,用户需要预先购买资源,根据业务负载的波动动态调整资源的规模,在业务空闲时段仍要保留一定的运行资源,以保证负载增长时可以扩容,存在一定程度的资源浪费。此外,还要管理操作系统、安全补丁、负载平衡、容量规划、资源扩展、日志和监控等工作。与之相反,Serverless模式下的Serverless平台会自动分配和销毁资源,在某些时候可以将资源缩减到零,而不再产生任何费用,将代码开发之外的工作都转移给云厂商,释放了开发人员的生产力。
那么,Serverless架构是如何构成的呢?按照 CNCF(云原生基金会) 对 Serverless 计算的定义,Serverless 架构由 FaaS(函数即服务)和 BaaS(后端服务)结合而成,如下图。
添加图片注释,不超过 140 字(可选)
我们使用各种计算模式,就是为了实现特定业务目的。举一个日常出行的例子,我们的出行目标是从A地到B地,然而为了实现这个目标,往往有几种不同的出行交通方式:
- 我们购买物理服务器,就好比我们自己买了一辆车直接开过去,显然,这种方式投入大、还需要持续进行车辆维护。
- 我们也可以使用虚拟机,这就好比租一辆车,自己开过去,这种方式下租用期间的维护也很头疼。
- 当然,我们也可以使用Serverless,就好比直接打车过去,这是最简单愉快的方式了,只需告诉出租车师傅去哪里,到了目的地,按实际费用支付即可。
- 另外,我们还可以使用SaaS,就像是通过公共交通,只是SaaS都是通用场景的实现,不会根据我们目标做调整,所以难免会遇到各种换车,不可避免的要走很多路花很多时间。
添加图片注释,不超过 140 字(可选)
计算模式与出行模式的类比
从这个例子来看,我们要实现业务目标,最关心的就是快捷实现,选择Serverless就像叫车一样,可以非常便捷地把我们送到目的地。
CNCF非常看好Serverless发展前景,认为Serverless会加速云原生的普及,并将云原生创新性提升到一个新高度。在CNCF(云原生计算基金会)官网上的云原生全景图(如下)中,我们发现Serverless是一个单独的分类,处于显著的位置(右上角),足见CNCF对Serverless的重视。
图片上传失败
重试
什么是FaaS?
FaaS 即 Functions as a Service,函数即服务,是Serverless架构的一种形态,面向函数编程,基于事件驱动提供云服务之间端到端的解决方案。借助FaaS,开发人员可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。FaaS是Serverless模型中代码的托管计算服务。阿里云的函数计算、AWS Lambda 都是 FaaS 产品,其中阿里云的函数计算是Serverless先行者,下面我们简单了解一下。
函数计算(FC)是一种以事件驱动的全托管计算服务,开发人员只需编写代码并上传,函数计算就会自动准备好计算资源,以弹性、可靠的方式运行代码,并提供日志查询、性能监控和报警等功能,大幅简化开发运维过程。函数计算的资源调度与运行是以函数(Function)为单位,函数由函数代码和函数配置构成。
函数计算具备如下优势:
- 敏捷:编写函数即可执行;
- 弹性:毫秒级自动伸缩;
- 可靠:多可用区高可用;
- 成本:按量计费,具有竞争力的成本;
函数计算的典型应用场景,包括Web应用、数据ETL处理、AI推理、视频转码等。
什么是BaaS?
BaaS 即 Backend as a Service,后端即服务,一般是通过API调用后端或别人已经实现好的程序逻辑,通常用来管理数据。我们通常将核心业务逻辑运行在FaaS上,而其他部分逻辑则是通过应用编程接口(API)调用第三方的服务和应用来实现,典型的如云厂商提供的认证服务、额外加密、云访问数据库等服务。
理解BaaS,需要搞清楚它与PaaS的区别。BaaS是仅提供应用依赖的第三方服务,而PaaS(Platform as a Service)则需要参与应用的生命周期管理。典型的PaaS平台需要提供手段让开发者部署和配置应用,BaaS则通常不包含这些内容。从功能上讲,BaaS可以看作PaaS的一个子集,即提供第三方依赖组件的部分。BaaS还允许我们依赖其他人已经实现的应用逻辑,认证服务就是一个很好的例子。
Serverless架构与传统架构的区别
在传统模式下开发应用,开发人员要包办代码开发及运行环境等方方面面,如购买服务器,准备运行环境、安全加固,购买并配置接入层软件,再将代码包发布到配置好的环境中,进行必要的应用设置及中间件的安装及配置后,才可以提供给用户使用。
添加图片注释,不超过 140 字(可选)
应用传统开发模式
到了Serverless模式下,开发人员不需要购买服务器、接入层软件,也无需进行运行环境、应用程序的安全加固与各种繁琐的配置,只需将开发好的代码上传到函数计算平台,配置好触发器规则,然后函数计算中的代码将根据用户的访问自动触发执行。在Serverless下,开发人员只要专注于核心业务代码的开发,无需关注开发以外的其他非功能性工作,对开发人员更加友好。
添加图片注释,不超过 140 字(可选)
应用Serverless开发模式
Serverless的典型特征和优势
我们使用Serverless平台,是将开发完成的代码部署到Serverless服务中,比如函数计算。当驱动函数计算执行的事件触发后,函数计算会自动响应并执行代码,根据计算需要自动实现资源的分配与释放,并按照实际使用量结算资源使用费用。因此,对Serverless而言,不执行任务就不会产生费用。所以,Serverless具备弹性伸缩与按量收费两个显著特征。
添加图片注释,不超过 140 字(可选)
在Serverless架构中,用户已经“看不到”传统架构中存在的服务器、虚拟机、容器等底层资源了,所以被称为 Serverless“无服务器”也并不违和。
Serverless减少了开发人员的工作量,具备自适应弹性,让应用更轻松应对业务负载不可预测或突发流量的情况,Serverless具有如下显著优势:
添加图片注释,不超过 140 字(可选)
- 效能提升:只聚焦开发核心业务代码,复用第三方BaaS能力,效率高、上市快,研发效能提高。
- 安全提升:容器运行时及以下的安全由云厂商提供安全保障,大幅提升安全能力
- 成本降低:资源用量更少、利用率更高。同时,研发成本大幅下降。
- 生产力驱动:聚焦业务逻辑,解放非业务领域的耗散。基于Serverless架构部署和体验AIGC应用
小陈先后学习了Serverless和函数计算,对于其中的理论和概念有了一些了解,但仍然缺乏切身体验。灯不拨不亮,理不辩不明,小陈打算找大刘讨教一番。
小陈:师傅。真没想到,现在Serverless的应用已经有一定的普及度了,我调研了主流的云服务商,发现他们大多都已经提供了Serverless或是函数计算的云服务产品。看起来这的确是一种不同于以往的应用开发新方式。
大刘:是的呢,经过这一阵的学习,你感觉现在Serverless掌握得怎样?
小陈:说来惭愧。看了些材料,但认知有限,还停留在FaaS+BaaS的概念阶段,缺少更具体的感知。
大刘:这也正常的,看来你该动手去探索和实践Serverless了。学习技术的最快路径就是要学中练、练中学,一旦学习了基础理论后,马上动手实践。带着问题学习,边学边实践,遇到问题找解决办法,总结经验教训,这样提高会很快。
小陈:嗯嗯,我看到阿里云(Aliyun.com)上的函数计算服务,其中就提供了我们现阶段需要的AIGC文生图模型,它以Stable Diffusion应用模版的形式提供,看起来似乎可以快速的创建出AIGC应用。
大刘:那挺好的。证明基于Serverless方式实现咱们网站AIGC新功能的路子应该是可行的。
小陈:好的,我也这么想。我打算先做一做AIGC文生图的试验,了解Serverless的基本使用,在实践中遇到问题,我再来请教您。
大刘:好的,没有问题。
基于函数计算部署AIGC应用的主要步骤
用函数计算实现AIGC只要简单的三步,分别是创建应用、运行应用及查看管理。
添加图片注释,不超过 140 字(可选)
创建Stable Diffusion模型的应用
基于阿里云函数计算服务,通过Stable Diffusion模型创建应用。
注:本章节为操作步骤简介,欢迎来到阿里云云起实验室体验上手实操基于函数计算模板部署AI应用。
Stable Diffusion(简称SD)是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,Stable Diffusion是近年来比较火的文生图模型,同时也是一个完全开源的模型(代码、数据、模型全部开源)。毫不夸张的说,Stable Diffusion的出现和开源对AIGC的火热和发展是有巨大推动作用的,因为它让更多的人能快地上手AI作画。
添加图片注释,不超过 140 字(可选)
- 如果之前没有开通过函数计算,需要首先开通该服务;
添加图片注释,不超过 140 字(可选)
2.开通函数计算后,在应用界面,选择通过模板创建应用,选择AI数字绘画Stable-diffusion的应用模板进行创建。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
3.输入相关信息并完成部署,确认GPU镜像加速成功。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
访问应用实现文字生图
通过应用域名访问应用,输入文字生成图片,可根据自己想要的结果,调整输入文字提示词,并重新生成图片。
添加图片注释,不超过 140 字(可选)
1.通过域名访问SD应用。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
2.进入SD应用内,根据文字生成图片,可以调整文字获得自己想要的效果。也支持图生图、模型合并、训练等其他高级功能。
添加图片注释,不超过 140 字(可选)
函数的查看与管理
可以进行查看和管理函数、版本管理、别名管理等。
添加图片注释,不超过 140 字(可选)
- 查看函数详情
在函数计算的控制台,查看和管理函数代码、触发器管理、监控指标、调用日志、函数告警、实例列表、链路追踪、弹性管理、异步配置、异步任务列表和性能探测。
- 函数监控指标:
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
- 查看函数配置:
添加图片注释,不超过 140 字(可选)
- 查看函数详情:
添加图片注释,不超过 140 字(可选)
2.版本管理
对函数执行版本管理。
添加图片注释,不超过 140 字(可选)
3.创建别名
通过别名,可以支持函数的灰度发布。
添加图片注释,不超过 140 字(可选)
4.当完成实验任务后,在函数计算中删除应用。
添加图片注释,不超过 140 字(可选)
基于Serverless应用模板还能做些什么?
小陈尝试完AIGC以文生图的实验,意犹未尽,觉得挺好玩。他体验到了AI模型的强大,同时也体会到了Serverless架构的便利性。
小陈:师傅,AIGC的实验做完了,阿里云函数计算服务中提供了现成的AIGC应用模版,所以简单几步就实现了应用的创建,并完成AIGC文生图的体验。从体验来说,AIGC这样的功能需求的确没必要大动干戈去开发一个完整应用,可以借用函数计算快捷实现,成本也更低。
大刘:嗯,我同意你的看法。要实现基于AI的应用,完全可以借用云平台封装好的能力,再做定制化,就像是使用一个插件。AI越来越强大,实现的功能也越来越丰富,会大大提高生产力,需要高度关注其发展。
小陈:是的。不过我也在想,既然AIGC可以以文生图,自然而然就引出一个新问题,AI能否能实现对图片中对象的识别呢?
大刘:哈哈,怎么突然会有这个想法呢?
小陈:公司网站上的图文内容不是越来越多嘛,很多图片还是用户上传的,如果能借助AI的能力对图像进行检测和甄别,对于规范网站图片内容和分类,或是衍生出一些新的交互玩法,应该都是有帮助的。
大刘:嗯,想法特别好,我支持你去做个探索。AI在计算机视觉技术上表现优异,计算机视觉技术包括图像识别、对象检测、图像生成,AIGC属于图像生成技术,而图像预测包括图像识别、对象检测技术。听说过ImageAI吗?这是一个图像预测的Python库,它能够让程序员和软件开发人员只敲几行代码就可以轻松地将计算机视觉技术集成应用程序中。阿里云的函数计算中也提供了这个应用模板,不妨去试试。
小陈:哇,那太好了,我之前就发现阿里云的函数计算服务中集成了不少AI能力,这就去看看,顺便做下试验,谢谢师傅。
大刘:好的,不用客气。
我们不但可以基于函数计算创建AIGC应用,实现以文生图,同时我们也可以基于函数计算创建ImageAI应用,通过简单几步实现对图片中对象的识别。下面我们介绍下基于阿里云函数计算服务创建ImageAI流程。
在 OSS 中建立图片目录
首先我们需要创建OSS Bucket, 由于Bucket的名称是全局唯一的,尽量使用与用户和应用有关联的可读性较强的名称,既避免重名也便于记忆。
添加图片注释,不超过 140 字(可选)
在Bucket创建完成之后,再先后创建两个目录,一个是上传图片的origin目录,一个是保存ImageAI识别结果文件的result目录。当图片上传到origin目录后,会自动触发ImageAI的识别动作,并将结果保存到result目录中。
添加图片注释,不超过 140 字(可选)
在函数计算中基于模板创建ImageAI应用
添加图片注释,不超过 140 字(可选)
创建应用时,需要在高级设置中,输入前面准备好的OSS Bucket名称,创建RAM角色、OSS触发器角色,输入存储桶触发前缀origin/,和预测结果存放路径result/,其中OSS Bucket中的origin/, result/目录已在前面步骤中创建过了。
添加图片注释,不超过 140 字(可选)
完成 ImageAI 应用创建。
添加图片注释,不超过 140 字(可选)
体验ImageAI图像识别效果
可以通过两种方式实现图像预测,一种是在FC中访问ImageAI应用,上传图片,并在网页上操作进行图像预测。另外一种,是直接将要识别的照片上传到OSS中的origin/目录,触发自动识别,就可以在result中查看结果。这里之所以会有两种方式,是因为在应用模板中包含了两种函数资源和触发方式(如下),关于函数触发方式及触发器的相关知识,我们将在后续课程《函数计算的功能与使用入门》中具体介绍。
添加图片注释,不超过 140 字(可选)
以下我们分别展示两种方式的具体操作步骤方法。
1)FC中通过ImageAI应用上传图片并进行识别。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
获取并通过域名访问应用。
添加图片注释,不超过 140 字(可选)
在WebUI端上传图片。
添加图片注释,不超过 140 字(可选)
进行图像预测。
添加图片注释,不超过 140 字(可选)
图像预测会显示5个预测结果,其中数值表示相似度,数值越大表示越相似。以上图的识别结果为例,其中“lion”的数值最大,意味着AI预测图片中的对象最大可能是”lion”。
2)上传图片到ImageAI图片目录并查看预测结果
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
文件上传到设定的存储桶触发前缀的图片目录下,会触发ImageAI执行图像预测,并将预测结果存放在结果目录下。在图片完成上传后,我们可以在result/目录下查看结果。
添加图片注释,不超过 140 字(可选)
点击文件名,查看图片预测结果。
添加图片注释,不超过 140 字(可选)
到这里,我们就完成了图像预测的实验。
思考:Serverless有哪些主要产品?
小陈在完成基于函数计算搭建AIGC及ImageAI应用的体验后,对AI的强大功能赞不绝口,同时也对通过函数计算执行简单几步操作就能实现AI的功能记忆深刻。在他看来,通过Serverless和函数计算,可以快速实现这类“短平快”的业务功能需求,于是编写了一个调调研报告交给了大刘,接下来公司会全面评估基于函数计算实现网站AIGC新功能的可行性。经过这一段时间的学习调研,小陈对Serverless产生了浓厚的兴趣,同时也有一些小疑惑,正要找大刘讨教。
小陈:师傅,我做了AIGC与ImageAI的试验,只需简单几个步骤,操作简单、实现快捷。我们的AIGC新功能应该能基于该模板做二次开发,我已经写了一份调研报告发送给您了,抽空评估一下。
大刘:好的,我会抽时间会认真看你写的报告。这段时间下来,你现在对Serverless有什么新的认识?
小陈:感觉Serverless对我这样的新手来说挺友好的,因为它屏蔽了底层基础设施,没有特别高的技术门槛,可以简单、快速地使用,比较适合我们这样开发任务重、迭代频率高的开发团队。
大刘:是的。Serverless把底层基础设施的管理运维工作都转移给云厂商,包括服务器、虚拟机、容器、扩容……于是,原本受到这些工作拖累的开发人员就被解放了,可以专注于业务系统的开发,而且做的比自己还要好。那么在使用Serverless的过程中,你有什么担心吗?
小陈:这么说的话也有,Serverless的底层技术实现对用户来说是完全黑盒的,有被厂商绑定的风险。
大刘:的确,若采用非通用技术,以后的技术发展容易受到各种限制。Serverless技术一直在推标准化,以更加通用的技术方式提供服务,比如我们用过阿里云容器服务Serverless版 ASK,就是基于开源的Kubernetes,我们有理由相信云厂商会处理好标准化问题的。
小陈:是的,我也觉得标准化是必然。对了,在阿里云官网(Aliyun.com)上,还看到一个Serverless应用引擎的产品,这个产品是用来托管应用的?
大刘:是的。Serverless应用引擎是一个应用级别的Serverless托管平台,简称SAE,用户可以将Web单体应用、微服务应用直接部署到Serverless应用引擎上,实现应用托管。此后,用户不需要再关注容器运维与容量评估,也不必担心性能和稳定性挑战了。
小陈:明白了。我抽时间再研究研究SAE,找机会试用一下。
大刘:好的,多储备点知识。
什么是SAE?
为了让开发人员集中精力进行业务创新、降低试错成本,实现应用级别的Serverless托管非常有必要,阿里云的Serverless 应用引擎(SAE)就是这样的平台。
Serverless 应用引擎SAE(Serverless App Engine)是一个全托管、免运维、高弹性的通用PaaS平台,支持Spring Cloud、Web应用、ElasticJob任务等全托管,零改造迁移、无门槛容器化,提供了开源侧诸多增强能力和企业级高级特性。换句话说,SAE是应用 Serverless 化的良好实践。
在引入APP引擎后,Serverless的架构变得更加丰满,演变成了包括了函数维度和应用维度的两种形态,如下图所示。
添加图片注释,不超过 140 字(可选)
至此,我们已经对Serverless有了相对全面的认识。实际上,Serverless分为狭义和广义的概念。狭义的Serverless是指FaaS、应用引擎和BaaS。广义的Serverless,在狭义的基础上,加上了基础设施和容器。两种概念的关系和比较如下图所示:
添加图片注释,不超过 140 字(可选)
Serverless主要产品与比较
到现在为止,我们先后了解了阿里云上Serverless的两个主要产品,一个是运行代码的函数计算,另一个是实现应用托管的SAE。除它们之外,还有一个Serverless的产品即容器服务Serverless版也很常用,简称ASK。
ASK是容器服务 Serverless 版 ACK Serverless。用户无需购买资源节点即可直接部署容器应用,无需对集群进行节点维护和容量规划,根据应用配置的CPU和内存资源量进行按需付费。ASK提供完善的Kubernetes兼容能力,降低了Kubernetes使用门槛,让用户更专注于应用程序,而不是管理底层基础设施。
那么最常用的ASK、SAE和FC的三个产品,它们之间存在什么区别联系呢?
添加图片注释,不超过 140 字(可选)
Serverless计算形态差异
简单来说,从ASK到SAE再到FC,在业务逻辑抽象上是越来越高。当然,,它们承载的工作负载也各不相同,其中,ASK承载的是容器镜像,SAE承载的是整个应用,FC承载的则是函数。三者的对比如下:
ASK | SAE | FC | |
主要功能 | 无服务器Kubernetes容器服务 | 面向应用的Serverless PaaS平台 | 事件驱动的全托管计算服务 |
托管对象 | 容器应用 | 应用和任务 | 代码或镜像 |
容器实例 | ECI | ECI与安全容器 | 神龙 |
产品优势 | 基于容器无服务器管理弹性扩容按需付费 | 另代码改造、即享免运维体验零基础,开箱即用微服务与K8S精益成本,不为闲置浪费高安全自动弹性服务集成,一站式体验 | 专注业务逻辑开发、免运维VM级别租户隔离按需付费+预付费3AZ高可用毫秒级自动弹性伸缩 |
应用场景 | 应用托管突发业务数据计算CI/CD定时任务 | 应用托管:微服务、多语言、弹性伸缩、持续集成与交付任务托管:定时任务、批处理数据、异步执行解耦、微服务架构、开源任务框架迁移、CI/CD | Web应用数据ETL处理AI推理视频转码等 |
- 无服务器Kubernetes容器服务
- 面向应用的Serverless PaaS平台
- 事件驱动的全托管计算服务
托管对象
- 容器应用
- 应用和任务
- 代码或镜像
容器实例
- ECI
- ECI与安全容器
- 神龙
产品优势
- 基于容器
- 无服务器管理
- 弹性扩容
- 按需付费
- 另代码改造、即享免运维体验
- 零基础,开箱即用微服务与K8S
- 精益成本,不为闲置浪费
- 高安全
- 自动弹性
- 服务集成,一站式体验
- 专注业务逻辑开发、免运维
- VM级别租户隔离
- 按需付费+预付费
- 3AZ高可用
- 毫秒级自动弹性伸缩
应用场景
- 应用托管
- 突发业务
- 数据计算
- CI/CD
- 定时任务
- 应用托管:微服务、多语言、弹性伸缩、持续集成与交付
- 任务托管:定时任务、批处理数据、异步执行解耦、微服务架构、开源任务框架迁移、CI/CD
- Web应用
- 数据ETL处理
- AI推理
- 视频转码等
综合来看,采用Serverless模式,可降低开发与底层运维的工作量,对开发人员来说,是一大福音。因此,在云计算、容器技术之后,Serverless技术正成为新的计算范式。
对于开发者而言,还有一项新用户福利:满足相应条件的阿里云用户,可以通过阿里云试用中心免费领取函数计算FC和Serverless应用引擎SAE产品。(提示:具体领用规则以试用中心页面的《试用规则》说明为准。)
您可以访问阿里云免费试用页面:https://free.aliyun.com/
1)单击页面右上方的登录/注册按钮,并根据页面提示完成账号登录(已有阿里云账号)、账号注册(尚无阿里云账号)或实名认证(根据试用产品要求完成个人实名认证或企业实名认证)。
2)成功登录后,在产品类别下选择 计算 >FC、SAE,只要符合试用规则,单击立即试用即可完成领用。提示:用户须在领取时确认规格、地域等相关信息,领取成功后将不支持更改。
3)领取完成后,可以登陆FC控制台、SAE控制台,即可找到并开始体验刚刚申领到的试用资源。
添加图片注释,不超过 140 字(可选)
通过试用中心免费领用FC和SAE
本课程的关键知识点总结:
1. Serverless是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。阿里云的Serverless产品主要有容器服务Serverless版(ASK)、Serverless应用引擎(SAE)、函数计算(FC)。
2. Serverless具有如下优势:
- 效能提升:开发人员聚焦开发核心业务代码,复用BaaS能力,开发效率高、应用上线快,研发效能提高
- 安全提升:容器运行时及以下的安全由云厂商提供安全保障,大幅提升安全能力
- 成本降低:资源用量更少、利用率更高。同时,研发成本大幅下降
- 生产力驱动:聚焦业务逻辑,解放非业务领域的精力耗散
3. FaaS是Serverless架构的一种形态,面向函数编程,基于事件驱动提供云服务之间端到端的解决方案。
4. BaaS是通过应用编程接口(API)调用第三方的服务和应用。
5.基于函数计算应用模板搭建AIGC文生图应用,只需简单三个步骤:
- 创建Stable Diffusion模型应用。
- 访问应用通过文字提示词生成图片。
- 查看和管理函数,包括版本管理、别名管理、查看函数管理函数等。
通过本课程,我们学习了Serverless的核心理念、基础知识,了解了Serverless相较于传统应用开发方式的区别和优势,基于阿里云Serverless服务函数计算搭建了AIGC应用实现了文字生图,同时还了解了ASK、SAE、函数计算等阿里云Serverless的产品。要更深入的理解Serverless,发挥其优势,还需要对其重要产品函数计算进行深入学习,比如:
- 核心概念
- 功能特点与使用场景
- 函数计算的原理与工作流程
在后续《函数计算的功能与使用入门》课程中,我们将继续介绍这些方面的内容,欢迎持续关注和学习。
点击如下链接,进入实验练习环节:
教学练习实验
如果您已经完成课程学习和实验练习,可以进入以下页面激活认证流程:
激活认证流程
激活认证流程后,进入个人中心完成考试:
认证考试edu.aliyun.com/clouder/my/clouderpackage