写点什么

云计算从服务到公共资源的演化之路

  • 2016-05-31
  • 本文字数:3726 字

    阅读完需:约 12 分钟

什么是云计算?云计算的角色是如何变迁的?云计算未来的形态是什么?本文试图从历史、技术演化、云端应用架构的发展等几个维度去揭示云计算未来的演化趋势。

不同的角色,对云的认知不同

不同的用户,对云计算的认知是不同的。对于一个计算机专业的硕士研究生来说,他会告诉你,云计算就是网格计算,并行计算。对于一个小白用户来说,他会告诉你,云计算是网盘。对于一个 IT 工程师来说,他会告诉你,云计算是服务器。对于一个科技爱好者来说,他眼中的云计算是类似于 AlphaGo 这样的高科技。云计算到底是什么呢?不同的人有不同的看法。但是作为云计算行业的从业者来说,我是这样定义云计算的:云计算是一种将 IT 基础设施转变为服务去售卖的新的商业模式。

从技术演化到服务,未来形态是什么?

在不同的历史时期,云计算所扮演的角色是不同的。在 2000 年之前,云计算更多的是以一种新技术形态出现的。那个时候可能还没有这个名词,但是学术界一直研究的网格计算、并行计算,就是云计算比较早期的雏形。在 21 世纪最初的几年,云计算开始在 Google 这样的公司广泛应用。这个时候,云计算更多的是代表一种能力 (Capacity),并且只有大公司才能拥有这种能力。到了 2006 年,有一个标志性的时间,就是 Amazon 第一次将对象存储作为一种服务,对外去售卖。云计算才由少数公司具有的能力,演变成人人都能购买的服务。

随着技术继续往前发展,未来,云计算是一种什么形态呢?

某些时候,我们面向着对未来的种种的预测和期望,其实很多答案已经存在在历史中了。

电力作为一种公共资源的演化过程

回到 19 世纪,我们先看一下,电力作为一种资源的演变过程。1831 年,法拉第发现电磁感应,电开始作为一种新的技术登上历史舞台。1879 年,爱迪生发明了电灯,第一次点亮的世界。此时,电只是作为摩根这样一类少数富人所拥有的能力。随着电力技术的发展,爱迪生不仅仅发明了电灯,还发明了一系列直流的发电,传输的系统。并通过爱迪生通用电气将其商业化,这个时候,电才开始成为人人都可以享受和购买的服务。历史的车轮继续往前。特斯拉发明了交流电机以及交流传输技术,电能能通过远距离输电的方式,输往千家万户。并且在工业生产,人的生活中被广泛采用。这个时候,电才成为了一种公共的资源。

电力革命,催生了电能成为一种公共资源

第二次工业革命,催生了电成为一种公共的资源。历史的车轮总会存在相同的印记,所以,云计算未来也会是一种公共的资源。

云计算技术的演化过程

一个东西,从一项技术发展成为公共的资源,其技术一定是逐步演化的,需要适应作为公共资源的特点。

  • 细粒度,可衡量。
  • 简单通用。
  • 有统一的方式去获取。

云计算技术的发展,其实就是隔离性越来越深,资源粒度越来越细,由专有到通用的过程。

物理机时代的隔离方式

我们先看一下物理机时代的隔离方式。当需要服务时,会购买一台物理的机器,当需要更多服务时,就需要一个机架,装入更多的物理机器。所以物理机时代的隔离,就是一种机器层面的隔离。这种情况下会导致两个问题。

  • 资源粒度过粗,利用率不高。

  • 无法方便的通过软件去控制。

    虚拟机时代的隔离方式

随着虚拟化技术的发展,出现了操作系统层面的隔离。也就是我们通常说的虚拟机(VM),在一个操作系统上划分出很多虚拟的操作系统。每个操作系统就是一台虚拟的服务器。他们共享硬件资源。由于一台物理的机器,能够创建很多个虚拟的机器,这个时候,资源粒度变细了,利用率提升了,同时还带来了一个非常便利的优势,也就是能够通过软件的方式,非常方便的创建、重启、销毁机器。当一个数据中心大量的虚拟机被生成出来,然后辅助特定的管理、监控、安全、网络的设施,就变成了云。也就是我们通说所说的 IaaS。

PaaS,一种应用层面的隔离

用惯了虚拟机的程序员,可能会思考一个问题。我有 10 个 Python 的应用,只是应用的代码不同,我难道需要 10 个独立的 OS 去运行吗?这些应用能否共用一个执行环境。这种情况下,PaaS 出现了。传统的 PaaS,是一种应用层面的隔离。应用和应用之前彼此独立,共享相同的执行环境 (Runtime), 这个时候,资源粒度更细了,同一个 PaaS 平台可以同时运行更多的应用。但是 PaaS 平台也存在一个问题,因为平台是运行环境相关的,所以必须为每个平台专门定制代码。通用性带来很大的问题。

容器,进程层面的隔离

技术总是往前发展,既然应用是和执行环境相关的,那为什么不把应用和执行环境打包在一起,这样,就解决了 PaaS 平台的应用必须依赖其执行环境的问题。因此容器(Container)技术应运而生。容器就是把一个应用以及所依赖的一系列的运行环境打包到一个“箱子”里面。箱子和箱子之间共享同一个 OS Kernel。利用操作系统内核本身的一些特性做资源隔离。所以容器技术是一种进程级别的隔离。它不仅解决了运行环境依赖的问题,还使得隔离粒度进一步变细。容器的生成,销毁更为迅速(秒级)。所以纵观整个的云计算技术的发展历程,有一个非常重要的主线就是隔离越来越深入,资源粒度越来越细,管理越来越方便。

三种层面的隔离的类比

刚才谈到了物理机、虚拟机和容器,那这三种到底有什么区别? 这里打一个形象的比喻,如果把虚拟机比作是一套三居室的公寓,容器就好比是合租,租用公寓里面的一个房间,他们共享客厅、厨房和卫生间。旁边房子里面大声放音乐,可能会吵到自己,相比于公寓的防盗门,也不是那么安全,但是它是一种轻量化的解决方案。旁边的独栋别墅,就好比是一个物理机,它所有的东西都是独享,但是利用率不会那么高。

API,云计算资获取的"插座“
一个东西,如果要变成一项公共的资源,还需要满足一个非常重要的特征,也就是需要一种相对简单,并且统一的途径的获取资源。譬如所有的电能,都是通过一个插座 (Socket) 去获取的。云计算也需要一个这样的插座。所以在云计算的世界里,API 扮演着一个非常重要的觉得。未来云的世界,就是由 API 构成的世界。

云计算的四个资源化特征

相比于电能,简单,便利,随时随地获取,不用关心是否够用。云计算要成为一个资源,也需要具备相应的特征。

  • 按需付费,用多少就算多少。
  • 即时获取,消除地域和时间的限制。
  • 规模经济,成本会越来越低。
  • 弹性伸缩,满足不同类别的业务需求。

Cloud Native,云计算未来的应用架构

电能的广泛传播和使用,与丰富家用电器的使用场景以及以电能为动力的广泛的工业化应用是分不开的。同样,云计算的发展和普及,依赖于真正符合云计算特点的应用系统和应用架构。到底什么样的一种应用架构是符合云的未来趋势的呢?最近,有一种应用架构开始流行:Cloud Native(云原生应用)。Cloud Native 不是一种新的技术,也不是一种新的架构。而是包含下面三个东西,可以说是一套云端业务构建和运营管理的最新的理念。

  • 一种架构思想(微服务)。

  • 一种业务运行环境(Docker + 容器)。

  • 一种团队组织方式(小团队,DevOps)。

    微服务架构

随着云计算技术的发展,云计算所表现出来的资源化特征已经完全不同于传统的 IT。传统的集中式架构、分布式架构显然已经无法适应一切以云端为基础构建的业务。“微服务”在这种情况下应运而生。和传统的 SOA 一样,微服务也是一种面向服务的架构,但是它的粒度更小,服务和服务之间更为松散耦合。一切以 API 进行通信。

Docker,改变世界的”箱子“

当然微服务的实现,也依赖于其具体的业务运行方式和管理模式。所以也离不开 Docker 这只改变世界的“箱子”。如果云计算的未来是一种公共的资源,那么由它所驱动的业务,一定会有一个通用化的执行环境。并且计算单元的粒度更细,也更具有可衡量的特征。以容器技术为核心的 Docker,将是当前最优化的一种方案。同时,服务以极细粒度去运行,配合标准化的分发、调度管理模式,才更能适合微服务这样的全新架构。

康威定律

20 世纪 60 年代,有一个程序员提出了著名的“康威定律”:有什么样的业务架构,必然会有什么样的团队组织形式。既然云端的业务是一种全新的业务架构去组织的,当然也会催生出新的团队组织和运行模式。“小团队作战,DevOps”,构建一种适合云端业务的、敏捷的业务开发、运行、运营管理模式。

总结

本文从云计算的未来的发展形态,谈到了云的技术演化,再谈到了云的资源化特征,最后谈到了云端的应用架构。从历史到技术演化,到业务特征,最后到应用形态,其实一直都是围绕着一条主线:云计算如何由服务向着公共资源去演变。总结起来,有下面 4 点结论。

  • 云计算的服务化特征会越来越明显。
  • 资源粒度会越来越细,越来越通用,越来越容易获取。
  • 业务的述求越来越向着即时获取、按需获取、弹性的方向发展。
  • 新的业务架构、业务运行环境、团队组织模式是其演进的催化剂。

作者简介

刘永峰 腾讯云高级产品经理,Docker 布道师,2011 年加入腾讯,近十年的研发以及产品经验。曾负责过流媒体服务器架构设计、操作系统性能优化、云监控系统架构设计等相关技术研发工作,以及基础云、云监控、游戏云相关的产品设计工作,在技术和产品领域具有丰富的行业经验。目前主要关注领域包括企业云化趋势、基于云端的系统架构实践、Docker 技术的发展以及在云计算领域的应用。


感谢陈兴璐对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-05-31 17:011902

评论

发布
暂无评论
发现更多内容

为什么数据库字段要使用NOT NULL?

艾小仙

架构实战营--模块一

永佳

架构实战营

脑机接口简史——假如这篇推送是你靠意念打开的

脑极体

高承实:绘一幅区块链社会画像

CECBC

区块链

踩坑 MySQL 索引,看看你真的会用么?

架构精进之路

MySQL 4月日更

机器学习和大数据的区别和联系

大数据技术指南

机器学习 大数据 4月日更

重磅官宣:Nacos2.0发布,性能提升10倍

xcbeyond

Java 微服务 nacos 4月日更

脑机接口简史——假如这篇推送是你靠意念打开的

白洞计划

Scrum Patterns:每日Scrum(译)

Bruce Talk

敏捷开发 译文 Agile Scrum Patterns

架构实战营-模块一作业

Sun

架构实战营 - 模块 1- 作业

请弄脏我的身体

架构实战营

go每日一库 [go-rate] 速率限制器

happlyfox

学习 Go 语言 4月日更

「架构实战营」课堂作业-G20210698010384

张亮

一文读懂区块链领域最新发展方向 NFT经济将成未来发展方向

CECBC

艺术品

PCB如何拼版

不脱发的程序猿

嵌入式 电路设计 硬件设计 4月日更 PCB打样

聪明人的训练(五)

Changing Lin

4月日更

什么是架构?怎么来理解?

秋天

架构 架构师

区块链的环保实验,助全球提高垃圾回收

CECBC

环保

如何做Nginx安全日志分析可视化

运维研习社

nginx 4月日更 waf

基于二叉树实现Map

Silently9527

Java 二叉树 数据结构与算法

极客架构module 1 作业

Geek_649372

架构实战营

机器学习(二):理解线性回归与梯度下降并做简单预测

caiyongji

机器学习

作业1--微信的业务架构及学生管理系统

大可

Wireshark数据包分析学习笔记Day25

穿过生命散发芬芳

Wireshark 数据包分析 4月日更

怎么画出专业的架构图?

秋天

架构 架构师

架构实战营 模块一作业

netspecial

架构实战营

浅聊函数防抖与节流

程序员海军

JavaScript 大前端 防抖 节流

VUE2,基于vue-cli搭建创建vue项目

Chalk

Vue 大前端 4月日更

Java最强规则引擎-ice是如何炼成的?

waitmoon

规则引擎使用 规则引擎 流程引擎

架构实战营——作业一:微信架构及学生管理架构

开拓纪

架构实战营 作业一

Linux grep 命令

一个大红包

4月日更

云计算从服务到公共资源的演化之路_服务革新_刘永峰_InfoQ精选文章