扫码阅读
手机扫码阅读

刘华:公有云不仅是自建机房的替代品

55 2024-03-30

如果仅把对公有云的运用停留在服务器、存储、网络这些基础设施层面,那便是极大的浪费。

很多公司在考虑上云。其中一个最主要的考量是自建机房的建设和维护成本高,提供资源的速度也无法满足应用团队的需要。

因此,很多公司试图把公有云作为公司自建机房的替代方案。但如果仅把对公有云的运用停留在服务器、存储、网络这些基础设施层面,那便是极大的浪费。

本文将介绍主流公有云除了提供快捷、廉价的基础设施外,还有哪些值得我们留意的服务,从而帮助我们提高IT交付的能力。

01

基础设施服务

服务器、存储、网络等的基础设施是所有主流公有云都会提供的最基础的服务,所谓基础设施即服务(Infrastructure As Services, IaaS)。

和自建机房最大的不同在于,我们在云上获取这些资源的过程完全是自助的,中间不需要任何人工干预。我们可以通过控制台(GUI)、命令行、API、部署脚本(如Terraform)等方式,在数分钟内获取想要的资源。

也因为这种快捷,配合负载均衡、监控,我们可以让云根据流量自动分配更多或更少的计算资源,从而实现弹性伸缩,最大化地支撑业务波动和优化成本。

这种弹性是自建机房难以实现的。

但正如我在另一篇文章《上云还是不上云,这是一个问题》里说的,要充分利用云的这种优势,系统的架构设计也要配合。应用程序层需要是服务化的、无状态的,适合放在一个个规格更小的服务器中独立运行,而不是像单体应用那样,要集中放在一台高规格的大服务器中,后者完全无法发挥云的弹性优势。

然而,如果我们对公有云的运用仅限于此,则是极大的浪费。

因为除了提供基础设施即服务(Infrastructure as a Services, IaaS),主流公有云也提供了平台即服务(Platform as a Service, PaaS),甚至是软件即服务(Software as a Service, SaaS)。而后两者,其实才是各主流公有云竞争的主要发力点。

在基础设施即服务这一块,各主流公有云厂商的产品雷同,基本就是名字不一样。

各主流云资源的名称对比
资源 阿里云
AWS
GCP (谷歌云)
云服务器
ECS EC2
Compute Engine (VM)
对象存储
OSS
S3
Cloud Storage
专有网络
VPC
VPC VPC

02

平台服务

作为系统开发和运维团队,我们需要的,其实是能让我们的系统平稳运行起来的环境。像服务器、存储、网络这样的底层基础设施,其实并非我们关心的重点。

我们拿到一台服务器,上面只有OS,还需要安装大量的基础软件和配置,我们的系统才能在上面运行。大部分系统都需要数据库,我们除了需要在服务器上安装和维护数据库,还要设计和管理主、从同步和数据备份等烦事。

因此,主流云厂商在基础设施之上,提供了各种中间件平台和服务,让我们的系统或组件,可以不直接与服务器、存储、网络这样的底层基础设施打交道,也不需要关心补丁升级这些IT运维的琐事。

最典型的服务就是云数据库。和我们直接在云服务器上自行安装数据库不同,云数据库,以关系型数据库为例,已经为我们提供了多点部署、主从同步、读写分离、自动备份等能力。简单来说,这些原本需要专业DBA和复杂架构设计才能实现的工作,云已经帮我们搞掂了,我们开箱即用,只需要关心系统本身的安装、部署和维护。

除了关系型数据库,主流云厂商也提供对象存储、NoSQL数据库、时序数据库等。

如果我们是用容器(如Docker)来管理我们的系统部署,我们也可以直接把容器镜像部署到云的Kubernetes平台上,让云来管理微服务这样的繁杂架构。

如果我们的系统打包后是一个Jar包或War包,可以直接部署到云的应用平台,它直接提供支持Java等主流语言的运行环境,我们不需要管理JDK等的环境部署,应用平台也能根据流量在底层实现弹性伸缩,不需要我们在网络层、服务器层做任何配置。我们甚至可以配置让云只在有新请求的时候才启用资源,在一段时间没有请求后释放资源,从而大大节约系统运行费用。

03

Serverless

如果我们的需求是在某个事件发生,或者有人调用API时,执行一段程序片段,或者一个函数,并触发其他云服务或消息。在这个场景下,我们甚至连一个完整的程序都不需要。那么我们便可以把这些程序片段或函数直接部署到云的函数服务待命。

一旦有触发事件或API请求时,云会自动分配资源调用这些函数,完成使命,并在事后释放资源,节约费用。当请求量变动时,也会在底层实现弹性伸缩。

我们可以看到,从简单地提供服务器等基础设施,到Kubernetes平台,到应用平台,最后到函数服务,云服务托管了系统运行环境,并把系统和底层基础设施隔离开来,让我们更聚焦在开发、系统运行本身,不再需要关心底层细节和IT运维工作,这个趋势,也是Serverless的过程。

某云提供的服务

云服务器
K8s平台
应用平台
函数服务
支持语言
不限
不限
主流开发语言,如Python、Node.js、Go、Java、PHP等
Python、Node.js、Go
服务模式
IaaS
介于IaaS和PaaS之间
PaaS
微服务
伸缩
服务器级别的伸缩
集群间伸缩
云自动管理
Serverless
运用场景
任何场景 容器托管
Web应用、Mobile后台服务
轻量事件驱动

当然,所谓Serverless并不是No Servers,我们可以看到,所有这些服务,都依托于底层各种基础设施资源,只是通过服务的形式把底层资源抽象化了,而且正是这些资源为云厂商提供了最基本的收入来源。

主流云厂商也提供了消息队列、云监控、云日志分析、云压测等SaaS服务。

随着区块链、大数据分析、人工智能的兴起,主流云厂商也提供了大量围绕这些领域的服务,这些需要大量临时算力(服务器资源)的服务,既能简化用户的工作,又能充分发挥云的弹性能力。

04

总结

主流公有云除了提供基础设施即服务(Infrastructure as a Services, IaaS),也提供了平台即服务(Platform as a Service, PaaS)。而后者更能体现云的优势,也是我们运用云的重点。

觉得文章不错,顺手点个“点赞”、“在看”或转发给朋友们吧。


原文链接: http://mp.weixin.qq.com/s?__biz=MzI1MjQ3NzE2Mw==&mid=2247484715&idx=1&sn=0e71e936fd3e810fd19b8a08b71eac48&chksm=e9e26eafde95e7b91c442ef1b4ab2264dc73e4f28cf895e1119291f30944d7be84d16edb1448#rd