前言
一切要从一个风和日丽的早上说起:
那天,阳光正好,微风不燥。还来不及从容吃口早饭,我就接到了线上报警,赶忙打开了电脑,处理突发的流量高峰导致的页面报错。
重启好服务,饭都冷了。
我心里想着,
如果能够简化操作就好了,
如果是界面化的操作该多好,
如果几分钟就能轻松搞定就好了,
......
上述情况中的困境,是技术开发时常会遇到的问题之一。随着业务增长,服务便会遇到各式各样的状况,如:瞬时大规模并发访问、服务出错等。
为了更好的解决目前的困境,Serverless闪耀登场。
一、云计算的下一代范式—Serverless
1.1 企业为什么需要Serverless
在企业发展的各个阶段,技术开发可能会遇到各式各样的问题:
- 系统版本不统一,应用代码越来越臃肿
- 开发框架总有意想不到的坑?
- 奇奇怪怪的依赖问题;
- 一个需求上线有多少时间是花在代码上的?
- 数不完的配置;
- 部署工步调试,过程耗时又耗力;
- 扩容究竟准备多少资源?
- 全栈?
......
这样看,一个应用从开发到落地,开发成本高、运维复杂又容易出错。
如果,技术开发者能从繁杂的服务器维护工作中解脱出来,不但可以缩短上线时间,还可以减少不必要的错误,同时能够更专注于产品代码的质量和效率上,岂不是一举多得。
而Serverless,无服务架构,让开发者不再需要管理服务器,为企业降低了业务的基础设施管理和运维成本。
1.2 Serverles简介
Serverless是云计算的一种模型。以平台即服务(PaaS)为基础,无服务器运算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供。
通过上面的概念介绍,我们可以这样理解无服务器运算:
无服务器运算并不是不需要服务器,而是不需要开发者管理实际的服务器。
伴随着软件开发大神Martin Fowler关于"Serverless 实际上是 BaaS 与 FaaS 的组合"的观点的提出,也让Serverless有了清晰的组成结构:
在Serverless中,开发人员无需维护自己的服务器,只编写应用的部分服务器端逻辑,而这些逻辑运行在一个无状态的计算容器中,通过事件驱动、需要时才消耗资源。这种无服务器运算(Serverless computing)的情况,又被称为函数即服务(Function-as-a-Service,FaaS)。
另外,服务器服务能力由第三方提供,并且建立在云服务生态之上,只需要客户端或者前端开发调用相应的能力就可以快速开发应用,这些服务被称为后端即服务 (Backend as a Service,BaaS) 。
作为云计算的一种模型,Serverless的特点如下:
- 免运维:用户不需要管理服务器,服务器服务皆由云端平台来提供;
- 按价值付费:在Serverless框架上使用资源只需为实际运行时间付费;
- 能自动持续扩容:根据业务流量波动进行自动的资源分配和销毁,最大限度地实现服务的平衡稳定;
- 内置高可用和容错能力。
正因为具备这些特征,Serverless让开发者可以更关注于产品应用的开发,不需要管理和维护服务器,因此被笔者称为"快速完成开发的云计算下一代范式”。
二、云应用托管到Serverless托管的平滑演进
2.1 云应用托管的演进趋势
2.2 技术架构演进
2.2.1 单体应用
单体应用,又单体架构,一种把软件所有功能的应用程序包含在一个工程包里的架构方式。
通常,所有应用共享一个数据库。
单体应用的优点主要是易部署和易测试,因为应用程序都在一个工程包里,一旦部署,所有的服务就都可以使用了。
而单体应用的问题,主要是围绕"弹性弱"这一点,如:
- 随便一点改动涉及上千行代码的改动;
- 流量总是海量,性能成为瓶颈;
- 依赖于硬件可靠性,故障要人工恢复;
- 使用到的资源越来越多;
- 版本越来越难做。
2.2.2 微服务
微服务,又称微服务架构,是一种云原生架构方法。它提倡单个应用程序划分成一组松散耦合且可独立部署的较小组件或服务。
一般一个应用程序由一个或多个微服务组成,这样一来,就降低服务间的耦合性。
许多优秀的微服务云应用服务平台提供商,帮助实现微服务应用的快速开发和高可用运维。如华为云的微服务引擎 CSE,除了提供微服务管理能力,还提供了微服务治理的能力。
服务间松耦合是微服务的主要优点之一。此外,微服务还有其他优点:
- 可以轻松更新代码;
- 团队可以为不同的组件使用不同的堆栈,技术选型多样化;
- 单个微服务的复杂性低,易开发也易维护。
而微服务的问题,主要是"复杂度高"这点,如:
- 微服务拆分后管理复杂性指数级上升;
- 要学的技术越来越复杂,人力成本高;
- 容器资源调度也很令人困扰;
- 运维其实并没有变简单。
2.3 云端托管演进
2.3.1 基础设施托管
基础设施,主要包括计算、存储、网络等基础硬件资源。
传统的本地部署,所有的基础设施,应用都需要开发者自己准备,维护成本十分高。
于是,诞生了IaaS。
IaaS,它是Infrastructure as a Service的缩写,即基础设施即服务。IaaS提供商为使用者提供了基础的硬件资源,使用者可以按量付费,租用服务商部署好的硬件资源环境,在这些基础硬件设施支持下部署和运行各种软件。
传统部署,用户需要管理所有服务:
IaaS部署,基础设施由云服务商提供,其他由用户管理:
开发者无需管理或控制任何基础设施,但能控制操作系统、储存空间、部署的应用,也有可能获得有限的网络组件的控制。
IaaS部署解决了管理基础设施的困难,但是仍然存在不足,用户仍然需要管理基于开源或自建应用软件及业务。
2.3.2 应用软件托管
SaaS(Software as a Service),即软件运营服务。
SaaS服务提供商负责管理硬件和软件,所有基础结构、中间件、应用软件和应用数据都位于服务提供商的数据中心内,并根据适当的服务协议确保应用和数据的可用性和安全性。
使用者可以从云服务提供商处以即用即付方式进行购买,无需将软件产品安装在自己的电脑或服务器上,可以在前期以最低成本的应用快速建成投产。
SaaS有以下主要优点:
- 可以使用先进的应用程序:SaaS服务商提供了ERP和CRM等先进的企业应用程序。
- 只为自己使用的东西付费:即用即付的付费方式,半自动弹性伸缩,帮助使用者节省费用。
- 使用免客户端软件:用户可以直接在Web浏览器中运行大部分SaaS应用而无需下载和安装任何软件(部分应用需要插件),无需再购买和安装特殊软件。
- 从任何位置访问应用数据:将数据存储到云端后,用户可通过任何连接到 Internet 的计算机或移动设备访问其信息,且在用户的计算机或移动设备发生故障时不会丢失任何数据。
2.3.3 Serverless托管
Serverless被称为"云计算的下一代范式",代表着下个十年。
使用Serverless托管的主要优势是:
- 可实现云端全托管:用户无需配置或管理服务器,专注于业务创新;
- 降低企业成本:资源按需分配,资源成本按使用收费,避免资源浪费,减少投入成本;
- 高弹性:实现透明、准确和实时的伸缩,应付业务峰值的访问;
- 缩短产品上市周期:服务商提供一键式应用部署,可缩短TTM(产品上市周期)。
华为云提供了应用级Serverless化产品形态,如下:
其中,Cloud Application Engine,云应用引擎,简称CAE。它可以帮助实现零门槛转型Serverless架构。
三、CAE—微服务应用的Serverless托管服务
3.1 什么是CAE
3.1.1 CAE介绍
华为云官网对CAE的产品介绍如下:
CAE(Cloud Application Engine云应用引擎)是一个面向WEB、微服务应用的Serverless托管服务,提供极速部署、极低成本、极简运维的一站式应用托管方案。支持从源码、软件包、镜像包快速发布应用,秒级弹性伸缩、按量付费。可做到基础设施免运维,根据可观测的运行指标对应用进行生命周期管理。
CAE 可为不同行业类型的企业提供Serverless托管服务,同时CAE集成了微服务引擎CSE、云数据库RDS等众多服务的核心功能,对公有云基础设施服务、存储服务、数据库服务、软件仓库服务、监控运维以及中间件服务进行了深度整合,为用户提供了一个功能齐全的一站式应用云平台。
CAE具有的优势如下:
- laaS+PaaS集成的全托管免运维解决方案:完全聚焦应用业务逻辑,无需关注底层资源的申请、配置、部署及运维等。同时为应用提供开箱即用的生命周期管理、可观测等功能,快速排查故障;
- 一站式快速上云:实现从代码变更到代码构建,镜像构建和应用部署的全流程自动化,本地应用一键部署到云端。提升了开发迭代效率;
- 极致弹性,精益成本,节省资源:秒级扩容,多指标伸缩,精确匹配业务请求量;
- 极简运维:零门槛容器化,由CAE提供底层资源调度、部署、微服务治理和监控能力,节约运维人力及技术成本。
3.1.2 CAE价值
CAE对客户价值主要体现在三个方面:高效、快速、便捷。
具体的说:
- 缩短TTM从周到天,提高开发效率
用户专注于业务创新和代码开发,代码运行环境由云平台提供,无需管理基础设施资源,更快地从想法到市场。
- 通过屏蔽基础设施,减少运维人力投入
- 通过屏蔽基础设施,提供立体化监控指标
- 节约了专职运维人力
- 节约了运维技术成本
- 秒级弹性,极致硬件成本
- 通过弹性伸缩能力,从容应对周期性业务
- 无资源浪费
3.2 CAE体验:微服务应用简单上云
3.2.1 "城市天气预报"微服务应用
本次体验上云的微服务应用叫做"城市天气预报",它是一个基丁SericeComb开发的微服务应用,可以根据用户输入的城市名称查询天气情况。
它整体的调用关系如图:
3.2.2 上云步骤
1、步骤1:创建后端服务组件
- 在页面上方,单击“新增组件”。
- 设置的组件信息如下截图。
- 单击“配置组件”,进入组件配置页面。
- 进行微服务引擎CSE配置。
- 进行访问方式配置。
- 单击“创建组件并部署”,在弹出的对话框中单击“立即部署”,部署组件。
了解其他信息可查看:创建组件。
2、步骤2:创建前端服务组件
- 在页面上方,单击“新增组件”。
- 进行组件信息设置。
- 单击“配置组件”,进入组件配置页面。
- 进行环境变量配置。
- 进行访问方式配置。
- 单击“创建组件并部署”,在弹出的对话框中单击“立即部署”,部署组件。
3、步骤3:重复步骤1,新增其他后端服务组件。
4、步骤4:访问web页面。
打开组件配置的路径(含端口),可以看到一个包含天气预报信息的页面。
3.3 小结
经过上面的CAE实践,我们来做个简单的小结。
1、CAE价值提炼
对CAE价值做了简单的提炼,主要包含以下几点:
- 一站式PAAS体验,效率提升90%;
- 几个微服务组件分钟级上云,代码直接上云;
- 无须担心性能瓶颈;
- 立体化监控,实现无人值守;
- 内置高可用,保障运行高效稳定。
2、CAE 的资源利用率
目前企业用户的主要痛点是:
- 周期性业务洪峰,需提前预估容量资源;
- 促活流量激增,需临时手动部署应用;
- 业务稳定期,需释放资源降低成本;
- 复杂业务运维,需维持业务稳定。
为了解决这些痛点,需要做到以下几点:
- 实时配置规则从容面对流量洪峰;
- 自定义流量阈值自动部署高频访问服务;
- 极致弹性伸缩按需使用;
- 资源聚焦业务层运维屏蔽基础设施。
我们来看一下CAE在资源利用率方面的实际表现。
如图为自运维所需资源量、业务所需资源量、CAE提供资源量,随着业务波动,资源具体使用情况的波动图。
随着业务所需资源量的动态变化,自运维所需资源量可能会出现不足,而且随着业务量的减少下滑的非常缓慢。
而CAE提供资源量,是完全匹配业务所需资源量的变化需要的资源量,真正做到了极致弹性伸缩按需使用。
四、总结
从基础设施托管到应用软件托管再到Serverless全端托管,Serverless帮助企业级开发,提升了研发效能、降低了基础设施和运维成本。
随着Serverless服务的日渐丰富,许多优秀的云提供商们提供了各种的Serverless服务,更好的支持各种应用的开发和运行。
华为云提供的云应用引擎CAE,因其“零门槛转型Serverless架构”的强大能力,璀璨夺目。
云应用引擎CAE,承载了Serverless应用的全生命周期管理,可无侵入托管Apache ServiceComb、Spring Cloud、Dubbo等微服务应用。另外还提供配置管理、监控运维和服务治理等更多功能,让微服务应用上云变成一件十分简单的事。
接下来,期待与云应用引擎CAE一起的更多可能。
标签:Serverless,服务,easy,部署,so,应用,组件,CAE From: https://blog.51cto.com/u_15838863/8945736