为云而生的“云原生”,为什么越来越重要?


为云而生的“云原生”,为什么越来越重要?
本文插图
图片来源@视觉中国
文丨脑极体
IT史上有一个经典故事 。 那就是在1943年 , IBM的董事长老托马斯·沃森胸有成竹地告诉人们:未来5台计算机就可以满足全世界的市场 。
【为云而生的“云原生”,为什么越来越重要?】现在我们知道 , 老沃森的预言有一半正在实现 。 就是世界正在朝着“5台计算机”的方向演进 , 当然我们也知道 , 老沃森只是很认真地认为世界上用到计算机的地方并不太多 , 而不是预见到云计算的到来 。
现在 , 云计算已经无处不在 , 数字世界成为我们的栖身之所 。 而近年来 , 一个名为“云原生”的概念成为云计算领域的热词 。 原本企业家们的对话可能是“你的公司业务上云了吗?” , 而现在很多企业家要改口问下:“你的业务上了‘云原生’了吗?”
Gartner报告曾指出 , 到2020年 , 将有50%的传统老旧应用被以云原生化的方式改造 , 到2022年 , 将有75%的全球化企业将在生产中使用云原生的容器化应用 。 在企业上云的趋势下 , 我们正在看到越来越多的企业和开发者开始把业务与技术向云原生演进 。
那么 , 什么是“云原生”?为什么“云原生”正在变得越来越重要?我们希望通过对“云原生”概念和其代表的整体技术思路做一次梳理 , 看下“云原生”能够释放怎样的技术红利 。
云原生与云原生应用
“云原生” , 来自于Cloud Native的直译(其实叫原生云更顺口) , 拆开来看 , Cloud 就是指其应用软件是在云端而非传统的数据中心 。 Native代表应用软件从一开始就是基于云环境、专门为云端特性而设计 , 可充分利用和发挥云平台的弹性+分布式优势 , 最大化释放云计算生产力 。
技术永远走在概念之前 , 在“云原生”概念正式提出以前 , 在企业中就已经有了云原生的实践 。 比如 , 谷歌在2004年就开始使用了容器技术 , 2006推出的进程容器(Process Container) , 就是一种具有“云原生”特征的技术实践 。
业界公认的“云原生”(Cloud Native)概念是Pivotal公司的Matt Stine于2013年首次提出 , 然后被一直沿用至今并发扬光大 。
在Matt那里 , 他把云原生理解为一系列云计算技术和开发管理方法的合集 , 包括DevOps、持续交付、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)和12要素(The Twelve-Factor App)等等 。
为云而生的“云原生”,为什么越来越重要?
本文插图
所以 , 云原生从一开始就不是一项技术或一个产品 , 而是一种系统化的方法论和技术的集合 。 只有满足“上云”特征 , 或者说专门面向“云”设计的应用 , 才可以称之为云原生应用 。
判断一个应用是否为云原生应用 , 就要考察它是否具有“云”的特性 , 包括满足网络访问、远端部署、可扩展弹性伸缩、共享、按需使用自助服务、高可用、可远程监控计费审计、标准化交付与位置无关等等 。 严格来讲 , 可以用Matt提出的“12要素”来作为判断云原生应用的准则 , 其中最主要可以归纳为以下几点:
1、弹性:弹性计算正是云计算的核心特征 , 也是云原生技术中容器的重要特征 。 云原生应用弹性 , 应该包括应用使用资源的弹性和应用实例弹性扩展的弹性 。 在单实例扩展资源遭遇瓶颈时 , 可以配合负载均衡机制实现容器实例的弹性扩展 。
2、共享:我们知道云计算可以分为IaaS、PaaS、SaaS三种类型 , 分别通过这三种类型实现资源共享、平台共享、应用共享 。 而云原生应用则是部署在IaaS或PaaS层 , 通过SaaS层提供开放式服务 。
3、自治:云原生应用的交付一定是按照标准交付 , 可以在云端任何支持标准的位置部署 , 这样就与位置和环境无关 , 同时构建应用所需要的依赖包、配置文件和后端服务等都是和应用构成一个整体 , 实现自治管理 。 使用容器的好处就是可以使得应用以标准化镜像的方式交付和运行 , 而用微服务实现云原生应用 , 也正是符合这一自治原则的 。