人工智能云平台部署与开发(微课版)
上QQ阅读APP看书,第一时间看更新

任务实施

假设小明正在某超市购物,他看到超市的入口处有自助结算的操作流程海报,并且海报中有二维码。他用手机扫描了二维码,根据指引下载了相关的App后开始购物。App支持用户自行扫描商品条形码,并将其记录的商品名称、价格、数量等信息存放在购物车界面中。小明逐一扫描想购买的商品的条形码并手动输入商品数量,在购物结束之后,他直接点击App中的“立即支付”按钮,选择付款方式并输入支付密码,完成购物。在出口处,小明可以凭借App显示的支付成功的虚拟清单离开超市。小明购物的过程涉及手机商城、移动支付、支付验证等功能。通常小超市不会拥有自己的数据中心,其通过购买云服务提供商的解决方案可以节省下一笔不小的开支。

那么超市购买的解决方案包括哪些云服务呢?我们从小明的购物过程可以知道,小明用手机扫描商品的条形码,把商品的信息录入专门的App或小程序中。假设超市没有自己的研发团队,其全套系统都是向服务提供商购买的,小明使用的App就是运行在服务提供商的服务器上的,因此超市向服务提供商购买了服务器资源,平台的搭建和开发也是由服务提供商提供的,因为普通的超市没有能力自己开发软件,所以软件最后也是交给服务提供商运营的。因此,这个过程其实包含云计算的基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)和软件即服务(Software as a Service,SaaS)。当然这仅仅是一个假设,现实的情况往往不是这么简单的。

1.IaaS

基础设施即服务,顾名思义,就是服务提供商将基础设施作为一种产品或服务提供给客户。基础设施包括计算、存储和网络等资源,可以把这些基础设施简单地看作现实生活中生活社区的基础设施,如汽车、住宅和道路。这些基础设施资源通过网络被提供给需要的客户,这样客户就只需要支付租借的成本,可以节省自己建设并维护全套基础设施的开支。

举个例子,当你离开家去外地游玩的时候,你预订的酒店或者旅馆就是一个基础设施。云计算中的基础设施就像酒店,它允许你随时租用和随时取消租用,同时,当你想增加或者减少某一基础设施的时候,可以灵活地增加或者减少相应的内容。这是云计算服务的一大特性。

当你想搭建自己的个人服务器,预算不足以支持你购买实体的服务器,这时候向云服务提供商购买服务器服务是一个不错的选择,如阿里云的云服务器ECS。如果用户不了解服务器配置的问题,阿里云提供了一些产品规格供用户参考,分为阿里云 ECS 入门级和阿里云 ECS 企业级,分别如图1-4、图1-5所示。入门级提供了一些调配好配置信息的产品,价格适宜,作为个人服务器不失为一个好选择。企业级产品分类就比较多了,不同的应用场景有不同的产品,用户还可以自己调整产品配置,相对的价格就比入门级的昂贵。

图1-4 阿里云ECS入门级产品

图1-5 阿里云ECS企业级产品

2.PaaS

平台即服务,是基于基础设施实现的,这个平台可以是某一个场景或某一个业务的开发平台,如Java开发平台。云计算提供的平台服务的使用方法与自己在个人计算机上的使用方法没有太大的差别,使用云计算提供的平台服务或许更方便。在云计算提供的平台服务中,编写的代码会被平台自动完成编译和打包,用户只需要调用软件开发工具包(Software Development Kit,SDK)或应用程序接口(Application Program Interface,API)就可以使用平台,让用户把注意力更多地放在自己的业务代码上。

在PaaS发展过程中,出现了Docker和Kubernetes等容器技术。容器技术的不断成熟,使得开发者可以将业务代码打包到容器的镜像里,利用Docker或Kubernetes调度和管理对外的服务。因为容器技术使用便利等特性,容器技术在云计算中的地位越来越高。Docker 和 Kubernetes如图1-6、图1-7所示。

图1-6 Docker

图1-7 Kubernetes

3.SaaS

软件即服务是这3种服务模式中最高级的,在命名上可以看出来,用户直接接触的是软件,即用户只负责使用软件,而不需要去了解它的底层实现方法。如一些在线使用的文字编辑器、电子表格编辑器等都是使用SaaS给用户提供软件应用服务的。软件即服务的出现会让更多轻量型的应用以云服务的形式呈现,桌面应用将会逐渐被取代。

除了这3种基本的服务类型,随着技术的进步,还出现了功能即服务(Function as a Service,FaaS)、容器即服务(Container as a Service,CaaS)等服务类型。FaaS被人熟知的有AWS的Lambda,如图1-8所示。在AWS关于Lambda的介绍中可以知道,Lambda是一种无服务器的计算服务,可以直接在上面运行任何类型的应用程序或后端服务代码,甚至可以不用管理代码,只需要把代码压缩成ZIP格式或者以容器镜像的形式上传,Lambda就会根据传入的请求,自动、精确地分配计算执行能力和运行代码。个人上传的代码可以设置成自动从AW S中触发或者自主在We b端或移动端调用。Lambda函数的编写支持 Java、Go、Python等语言,可以使用无服务器和容器工具构建、测试和部署Lambda函数。

图1-8 AWS Lambda

CaaS是一种将容器当作服务的云计算服务类型,开发和运维人员可以在容器化的服务中共同构建和运行应用程序。CaaS是从PaaS衍生出来的,是PaaS的一种具体实现形式。本书将展示容器云在AI领域的开发和应用,通过实际的操作帮助读者更好地理解和学习容器技术。