写点什么

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

  • 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:011870

评论

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

定制化区块链交易所开发:Dapp、DeFi和IDO的全方位解决方案

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

利用Allure与截图技术生成详尽测试报告

测吧(北京)科技有限公司

测试

是时候来唠一唠synchronized关键字了,Java多线程的必问考点!

EquatorCoco

Java 多线程

便捷App测试:安卓模拟器与开发者选项提高测试效率

测吧(北京)科技有限公司

测试

探索云原生时代:技术驱动的业务架构革新

不在线第一只蜗牛

云计算 架构 云原生

谈谈Node.js版本管理工具

伤感汤姆布利柏

JD商品详情API:京东电商数据整合的关键一环

技术冰糖葫芦

API 接口 API 测试

用three.js做一个3D汉诺塔游戏(上)

OpenTiny社区

JavaScript 前端 Web OpenTiny

扔掉print,用icecream来调试你的代码

快乐非自愿限量之名

代码 print

Knative 助力 XTransfer 加速应用云原生 Serverless 化

阿里巴巴云原生

阿里云 云原生 Knative

解决App自动化测试中的弹窗问题:常见解决方案

测吧(北京)科技有限公司

测试

助力全球企业和开发者们应对多方网络挑战,腾讯云EdgeOne已成企业高质量出海“首选”

Geek_2d6073

采用PO设计模式编写自动化测试用例

测吧(北京)科技有限公司

测试

自动生成测试报告:PO设计模式结合Allure生成详尽测试报告

测吧(北京)科技有限公司

测试

React Native 应用打包上架

DevOps与低代码

都广科技

DevOps

西安交易所开发:打造区块链交易系统的DApp开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

DevOps与低代码

Jianmu

Flink 中 Task(任务)的概念、定位及应用详解与易混淆点梳理

木南曌

flink 实时计算

ADB命令操作:简便连接设备、传输文件、安装App、日志分析

测吧(北京)科技有限公司

测试

利用Airtest技术实现基于图像识别的自动化测试

测吧(北京)科技有限公司

测试

ATX技术应用:了解并掌握ATX技术实现自动化测试

测吧(北京)科技有限公司

测试

零售商品计划新篇章:智能管理系统的挑战与机遇

第七在线

Web3.0热门领域NFT项目实战数字平台艺术

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

阐述区块链“链游”项目3D/2D模式系统开发

区块链软件开发推广运营

区块链游戏 dapp开发 链游开发 NFT开发 公链开发

软件测试学习笔记丨Allure2报告中添加用例优先级

测试人

软件测试

微调工程师岗位可能并不存在,但使用 AI 编码工具已经成为刚需

阿里巴巴云原生

阿里云 云原生

新质生产力与零信任数据安全:携手共创未来

从云科技

数据安全 零信任 新质生产力

采用Page Object(PO)设计模式编写自动化测试用例

测吧(北京)科技有限公司

测试

网站性能优化最佳实践--如何减少文件体积

观测云

性能优化

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