云原生与无服务器架构是云计算的将来吗?——云计算的演进

云原生与无服务器架构是云计算的将来吗?——云计算的演进

做为“十三五”重点规划产业之一,云计算究竟是什么?又会怎样发展?最近兴起的云原生(Cloud Native)和无服务器架构(Serverless)又与云计算有什么关系?本文将以云计算的发展为路线,为你们科普云计算的概念与现状,不管读者是开发、测试、抑或是产品、管理者都能在本文中有所收获。php

纵观整个服务器的发展历程,能够分为三阶段,自建服务器时代、服务器托管与租赁时代、云计算时代。html

自建服务器时代

早期的计算机主要分为两种使用方式,组织自建机房与租用,自建机房很好理解,就是买一台放在公司本身用,租用通常是制造商提供租赁使用,按时付费,是否是有点今天云服务器的意思?git

早期的IBM 650要价50万美金,或能够每个月3500 美金的价格出租。github

服务器托管与租赁时代

至 Web 时代来临,IT 公司大量采用 B/S(浏览器/服务端) 架构,客户端愈来愈轻量化,大部分资源存储在服务端,致使服务器需求激增,因而服务器托管业务应运而生,早期多为 ISP 即互联网服务提供商(Internet Service Provider)承接,简单来讲就是买一台服务器(也能够直接使用 ISP 的服务器),放到 ISP 机房由 ISP 负责维护,好比分配 IP,网络带宽,免去要申请商业化宽带以及管理服务器的麻烦,节省办公空间。数据库

发展到这时,租用 ISP 的服务器已经有了云计算的雏形了。但仍是有不少缺陷:编程

  • 部署笨重,一台服务器只能租赁给一个客户,没法共享资源池
  • 没法监控服务,服务器物理独立,很难介入监控系统状态
  • 费用很高,服务器要钱、托管也要钱,对中小企业不友好、我的开发者更没可能
  • 服务器利用率不高,一台8核16g的服务器,几个程序很难将服务器跑满,即使跑满了也没法保证独立互不影响
  • 单点故障问题,若是服务器损坏,很难快速甚至可能没法恢复服务

服务器托管与租赁现在也大规模存在。浏览器

云计算时代

办法总比问题多,这些问题伴随着 2000 年左右虚拟化成熟迎刃而解,而 2013 年的容器化技术更是让云计算锦上添花,在了解云计算以前,咱们先来了解一下虚拟化技术。安全

虚拟化技术

虚拟化技术早在60年代就被 IBM 创造出来了,当时是为了并行执行程序(早期计算机单一时间只能执行一个程序,想要运行另一个就要退出当前程序),后来被多进程多线程技术取代了。服务器

虚拟化技术就是将计算机硬件模拟成多个而且分别提供给多个用户使用,其实现也很简单,就是在硬件与操做系统间增长一层代理,用于欺骗(隔离多个)操做系统,这个代理就是大名鼎鼎的 Hypervisor,Hypervisor 也叫虚拟机监视程序( virtual machine monitor, VMM),并非指某个具体的软件,而是表明全部可以管理虚拟机的软件。网络

Hypervisor 按结构划分能够分为两类,一类直接接管硬件(Native 或称 Bare metal)本身就是一个专用操做系统,如 Hyper-V、VMware ESXi、Xen、Kvm 等;另外一类需安装在操做系统上(Hosted),这一类普通用户接触的比较多,如 Parallels Desktop for Mac、QEMU、Virtual Box、VMware Workstation 等,下图从左到右分别为 Native 与 Hosted。

Hypervisor 按照技术实现能够分为,全虚拟化(Full virtualization)与半虚拟化(Paravirtualization),全虚拟化致力于彻底模拟,虚拟机内运行的操做系统无感知,其优势是兼容性好,操做系统无需修改便可运行在虚拟化环境上,缺点是由于一些历史遗留问题(CPU 设计缺陷,部分敏感指令没法被捕获,通常使用动态劫持,Hypervisor 拦截,动态替换指令,后续的硬件辅助虚拟化解决了这个问题,见下文)致使效率比较低,如 Vmware Workstation/Server, Virtual PC/Server,Parallel Workstation;而半虚拟化则部分模拟指令,很难模拟的指令则经过修改虚拟机内的操做系统内核来实现,其优势是效率较高,缺点是必须修改操做系统内核,如 Xen,Vmware ESX Server,Microsoft Hyper-V R1等,需注意的是两者仅是将部分敏感指令在不一样位置处理,全虚拟化在 Hypervisor 中处理,半虚拟化则在虚拟机操做系统中处理。

硬件辅助虚拟化于 1972 年首次出如今 IBM System / 370 上,英特尔与 AMD 意识到虚拟化市场的重要性,因而也想作些贡献(捞一笔),x86 处理器辅助虚拟化(英特尔 VT-x 或 AMD-V)分别在 2005 年和 2006 年推出。硬件辅助虚拟化致力于解决早期的 CPU 设计缺陷,而且增长了虚拟化专用指令来提升效率,目前硬件辅助虚拟化已经成为服务器虚拟化的基石(虚拟化技术还包括内存、存储、网络虚拟化等,此处再也不展开)。

Hypervisor 的虚拟化方式被称为硬件虚拟化(早期叫平台虚拟化),硬件虚拟化的出现完全解决了资源分配的问题,其优势是隔离性好,几乎模拟了真实环境,缺点是每一个用户使用独立的操做系统内核、运行时,资源浪费,设想一下场景,若是同一个服务器须要多个隔离环境的 Window Server 2012,采用虚拟化则须要运行多个操做系统,即使版本、环境都如出一辙也没法共用资源。是否有一种更轻量化的资源分配方式呢?这就不得不提大名鼎鼎的容器化技术。

容器化技术

容器技术(Containerization)在技术上几乎没有创新,是一种操做系统级别虚拟化技术(OS-level virtualization),经过操做系统的支持模拟出隔离环境、限制资源访问,其本质上仅仅是操做系统中的一个进程,自己足够轻量化。现在容器化技术几乎被 Docker 垄断,Docker 于 2013 年 3 月开源,至今已经成为云计算与微服务乃至云原生架构中相当重要的技术,Docker 相比虚拟化技术具备轻量化,效率高(全部容器使用同一个操做系统内核、运行时)等特色,缺点是隔离很差,服务器压力高,全部 Docker 进程都会受到影响,有趣的是 Docker 与前面的虚拟化技术完美互补。Docker 解决了资源分配问题,而 2014 年 Google 开源的 Kubernetes 则解决了云与容器的结合问题,目前 Kubernetes 已经成为容器管理、编排事实上的标准。

至此云计算在资源调度方面已经集齐了最后一颗龙珠,虚拟化技术的成熟标志着云计算成熟,云计算采用虚拟化技术与容器技术结合规划资源,而 Kubernetes 的横空出世则表明云计算将告别仅仅租赁服务器的时代。

什么是云计算?

咱们来看美国国家标准和技术研究院(National Institute of Standards and Technology)的定义:

  • 随需应变的自助服务。
  • 随时随地用任何网络设备访问。
  • 多人共享资源池。
  • 快速从新部署的灵活度。
  • 可被监控与测量的服务。

通常认为还有以下特征:

  • 基于虚拟化技术快速部署资源或得到服务。
  • 减小用户终端的处理负担。
  • 下降了用户对于 IT 专业知识的依赖。

简单来讲就是按需付费,支持按时、按 CPU 核、按内存、按带宽、按硬盘大小来付费。云计算发展到今天,有着更细化的市场,如阿里就将服务分为弹性计算(IaaS),存储服务(PaaS),数据库(PaaS)等,每种设施还有更加细致的分类,如弹性计算中的 ECS,就能够分为通用型、计算型、内存型等,用于知足不一样企业需求(本段文字 500 元,去掉括号中内容再发)。

云计算的发展

讲云计算发展必须先了解云计算的概念。云计算由美国国家标准和技术研究院(National Institute of Standards and Technology)定义了三种模型,对应三种服务级别:基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。

  • IaaS(Infrastructure as a service)基础设施能够简单理解为虚拟机、服务器、存储、网络等,如亚马逊的EC二、阿里的ECS。
  • PaaS(Platform as a service)平台能够理解为一些更具体的基础设施,好比 Web 服务器、数据库等,如阿里的云数据库系列。
  • SaaS(Software as a service)软件能够理解为开箱即用的软件,广义上来说,全部的互联网产品均可以是 SaaS,如钉钉、163 邮箱,均可以被称为 SaaS。

其余扩展

XaaS,面向服务架构(Service-oriented architecture ,SOA )提出的架构理念,即一切皆服务,“X as a service”、“anything as a service”或“everything as a service” ,也有写做 EaaS,具体实现如:IDaaS 身份认证即服务(Identity as a Service)、BaaS 区块链即服务(Blockchain as a service)、PaaS 支付即服务 (Payments as a service)等,这些均可以被归集到上面三种模型。

云计算按照部署版本能够分为私有云、公有云、混合云。私有云为企业私有,并不对外服务;公有云并不表明免费,而是对外提供使用(收费);混合云则同时拥有两者特性。

相信读者到这里已经了解什么是云计算,简单来讲就是对外服务器租用,早期的服务器租用在员外看来也能够称之为云计算(IaaS),对比今天的云产品本质上没有区别,只是在资源上更加细化,服务上更加完善而已。咱们来看一下云计算的历程:

  • 1996年,Compaq公司在其公司的内部文件中,首次使用“云计算”这个词汇。
  • 2006年8月,亚马逊建立了子公司Amazon Web Services,并推出了弹性计算云(Elastic Compute Cloud, EC2)。
  • 2008年4月,谷歌发布了测试版 Google App Engine。
  • 在2008年初,NASA的OpenNebula在欧洲委员会(RESERVOIR)资助的项目中获得了加强,成为第一个用于部署私有云和混合云的开源软件。
  • 2010年2月,微软于2008年10月发布了Microsoft Azure。
  • 2010年7月,Rackspace Hosting与NASA共同发起了一项开源云软件计划,称为OpenStack。 OpenStack 早期代码来自NASA的Nebula平台以及Rackspace的Cloud Files平台。 OpenStack 是第一个开源的云平台。
  • 2011年3月1日,IBM宣布了支持Smarter Planet的IBM SmartCloud框架。
  • 2012年5月,Google Compute Engine 发布了预览版本。
  • 2012年6月7日,Oracle发布了Oracle Cloud。
  • 2013年12月,Google Compute Engine 又推出了 GA(General Availability ) 版本。

国内云计算起步稍晚:

  • 2010 年 5 月,阿里云对外公测。
  • 2013 年 9 月,腾讯云面向全社会开放、云安全上线
  • 2015百度开放云正式对外开放

注:国内部分来自百度百科,不负责准确性,其余国内云厂商查不到准确上线时间。

前文说过,云计算发展本质上就是逐步细化资源与完善服务,咱们来看一下云产品发展至今,到底发展了什么:

云计算成熟度

灰色表明云厂商提供服务,蓝色表明 IT 公司本身管理的部分,云计算越成熟,IT 公司负担越少、成本越低。对比托管服务,咱们发现云计算几乎弥补了全部托管服务的缺点,好比亚马逊的 EC2 服务器宣布能够保证 99.99% 的可用性,每月宕机时间不超过 0.01%,即 4.38 分钟。

云原生与Serverless

现在大规模普及的 PaaS 已经提供了绝大多数的服务,SaaS 并不适合通用场景,云计算若想再进一步只能从两个方向入手:

  • 方案一:继续开发通用的 SaaS 平台
  • 方案二:尝试从 PaaS 上入手

方案一没有可行性,云提供商不可能开发市面上全部的业务系统,而且云厂商也没有精力作。咱们从方案二入手,根据上图咱们能够得出结论:PaaS 与 SaaS 区别在因而否管理应用,二者之间是否有折中的方案?进一步考虑,云计算其实是减小了服务器与运维成本,而 IT 企业更大的成本在于编码(研发成本),可否有一种方案可以简化编码从而下降企业成本呢?运维成本还能够再降吗?云厂商天然不会停滞不前:

  • 下降运维成本,如今阶段云厂商提供的服务还须要运维人员来管理服务器数量、内存大小、CPU核心数、所在区域等,无服务器(Serverless)架构就致力于解决以上问题,在无服务器模式下,运维人员只须要关心部署便可。具体产品有AWS Lambda、Google Cloud Functions、IBM Cloud Functions、Azure Functions等,但目前的无服务器(Serverless)架构大多须要针对编程,还不是很完善。

  • 下降开发成本则提出了云原生(Cloud Native)的概念,云原生致力于简化整个开发生态,从开发到运维甚至云计算厂商,目前云原生主要依赖微服务、容器化技术、容器编排(Kubernetes)来实现。

云原生与无服务器模式概念较新,且尚未特别好的落地方案,限于篇幅,本篇再也不继续展开,若是读者感兴趣能够关注本人公众号,下一篇咱们经过讨论架构设计的演进来展开。

总结

云计算即使发展到今天,表象上仍是服务器租赁,这也是有人批评云计算是新瓶装旧酒的缘由。但云计算通过多年的发展,本质上是集中资源统一高效管理的思想体现,好比员外所在的北方每一年冬天都会集中供暖,本质上也是集中资源统一管理的思想。集中管理提升了资源的使用率,进而下降了资源的单位成本,从企业角度来看是一件节省成本的好事,从社会的角度上来说,下降了单位成本则提升了消费者剩余,减小了福利损失,这样看来,云计算被规划为“十三五”重点项目之一也就不奇怪了,另外随着无服务器(Serverless)、微服务(Micro-Service)、云原生(Cloud Native)、服务化网格(Service Mesh)等技术或理论的成熟,有理由相信,云计算的发展还有很大的上升空间。

以上是我的观点,若是有问题或错误,欢迎留言讨论指正,码字不易,为了写本篇文章员外仅维基词条就阅读大几十篇,着实辛苦,若是以为写的不错,求关注、求点赞、求转发

扫码关注公众号,第一时间得到更新

参考

https://en.wikipedia.org/wiki/Cloud_computing

https://docs.aws.amazon.com/lambda/index.html

https://github.com/cncf/toc/blob/master/DEFINITION.md

https://en.wikipedia.org/wiki/Serverless_computing

https://en.wikipedia.org/wiki/Virtualization

https://en.wikipedia.org/wiki/OS-level_virtualization

https://en.wikipedia.org/wiki/Docker_(software)

https://en.wikipedia.org/wiki/Desktop_virtualization

https://en.wikipedia.org/wiki/Hardware-assisted_virtualization

https://en.wikipedia.org/wiki/Paravirtualization

https://en.wikipedia.org/wiki/Full_virtualization

https://en.wikipedia.org/wiki/Hypervisor

相关文章
相关标签/搜索