云原生(Cloud Native)的概念,最早是由 Pivotal 于2013年提出的。
云原生可分解为 “云”(Cloud)和 “原生”(Native)两个词。这里还隐藏了一个词—— “计算”(Computing),因为云原生本质上是一种与云计算(Cloud Computing)相同的计算方式,因此通常我们在说云原生的时候,实际上是暗指云原生计算(Cloud Native Computing)。
得益于云计算快速发展,基于云计算特性所设计的云原生应用相比传统的单体应用在安全性,扩展性,快速迭代,运维等各方便都有巨大的领先优势。
云原生自诞生依赖,已经度过了概念炒作的阶段,进入架构落地阶段,出现了云原生2.0的概念。云原生1.0与2.0最大的区别在于, 1.0的云原生是ON Cloud,即把容器、微服务、DevOps等云原生的特征堆砌到云上。这样的做法虽然实现了弹性、敏捷等,但还仅仅是解决了基础设施架构层的问题,是以资源为核心,并未实现资源效率的最大化、最优解。
而云原生2.0则是IN Cloud,是以应用为中心。除了具备云原生1.0的容器、微服务、DevOps等特征外,更强调对资源的配备。
从现在基础设施的发展情况来看,我们正在从以资源为中心的资源上云阶段向以应用为核心的应用上云阶段演进,关注点从资源云化向应用云化渗透。第一阶段,我们关注的是以资源自动化为目标的资源融合管理。第二阶段,我们关注的是以应用自动化为目标的应用敏捷管理。
相对概念阶段的云原生以及资源上云来说,云原生2.0的关注点有了以下变化:
高效的资源管理与调度:基于软硬件协同构建多元算力,为应用提供极致的覆盖逻辑、虚拟机、容器、函数等在内的多元算力;基于边云协同和分布式云架构,实现多云算力的纵向融合和横向联动,形成分布式泛在算力平台;以应用为中心,实现资源的高效管理、调度和编排,实现一键部署、一建管理和智能感知。
敏捷的应用交付与管理:通过创新应用开发模式,进一步实现应用的敏捷交付和应用的全生命周期管理,通过侵入式和非侵入式两种模式助力企业应用架构升级。
智能的业务支撑与开放:主要是如何做好数据汇聚融合和数据运营,推动数据资产化、数据业务化和业务数据化,借助AI等新技术,实现数据对业务的二次赋能,实现业务的智能升级。
完善的安全可信与合规:借助云原生对基础资源的融合纳管,在基础资源和基础设施安全的基础上,进一步打造应用、数据和业务安全。
云原生是一个组合词,可以拆分为“云”和“原生”两个词,“云”我们都知道,即在线网络,传统的应用原本都跑在本地服务器上,很有可能需要停机更新,且无法动态扩展,“云”表示应用程序运行在分布式的云环境中,可以频繁变更,持续交付。“原生”表示应用程序在设计前期就考虑到了云平台的弹性和分布式特性,也就是为云设计的。
可以简单理解为:云原生=微服务+DevOps+持续交付+容器化
| 微服务 |
即软件架构,使用微服务架构可以将一个大型的应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅仅实现一种功能,具有很明确的边界。
带来的好处有哪些?
1)服务的独立部署
每个服务都是独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
2)服务的快速启动
拆分之后服务启动的速度要比拆分之前快很多,因为依赖的库少了,代码量也少了。
3)更加适合敏捷开发。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
4)职责专一,由专门的团队负责专门的服务。
业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。
5)服务可以动态按需扩容
当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
6)代码的复用
每个服务都提供REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。
| 容器化 |
是云原生的核心技术,它是一种相对于虚拟机来说更加轻量的虚拟化技术。能为我们提供一种可移植、可重用的方式来打包、分发和运行程序。
容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包。例如,将一个Java虚拟机、Tomcat服务器以及应用程序本身打包进一个容器镜像。用户可以在基础设施环境中使用这个容器镜像启动容器并运行应用程序。
而Docker是目前应用最为广泛的容器引擎,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,Docker和K8s都采用Go编写,(K8s全称Kubernetes,由首字母K,结尾字母s以及中间的8个字母组成,所以简称为K8s)。
| DevOps |
是软件开发人员和IT运维人员之间的合作过程,是一种工作环境、文化和实践的集合,目标是高效地自动执行软件交付和基础架构更改流程。开发和运维人员通过持续不断的沟通和协作,可以以一种标准化和自动化的方式快速、频繁且可靠地交付应用。
| 持续交付 |
就是不误时开发,不停机更新,是一种软件开发方法,它利用自动化来加快新代码的发布。在持续交付流程中,开发人员对应用所做的更改可通过自动化被推送至代码存储库或容器镜像仓库。
云并非把原先在物理服务器上跑的东西放到虚拟机里跑,真正的云化不仅是基础设施和平台的事情,应用也要做出改变,改变传统的做法,实现云化的应用——应用的架构、应用的开发方式、应用部署和维护技术都要做出改变,真正的发挥云的弹性、动态调度、自动伸缩??一些传统IT所不具备的能力。这里说的“云化的应用”也就是“云原生应用”。云原生架构和云原生应用所涉及的技术很多,如容器技术、微服务等,而云原生应用最大的特点就是可以迅速部署新业务。在企业里,提供新的应用程序环境及部署软件新版本通常所需时间以日、周甚至以月计算。这种速度严重限制了软件发布所能承受的风险,因为犯错及改错也需要花费同样的时间成本,竞争优势就会由此产生。
所以云原生不是一个产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。云原生包括DevOps、持续交付、微服务、敏捷基础设施、康威定律等,以及根据商业能力对公司进行重组的能力,既包含技术、也包含管理,可以说是一系列云技术和企业管理方法的集合,通过实践及与其他工具相结合更好地帮助用户实现数字化转型。
CNCF(云原生计算基金会)认为云原生系统需包含的属性:
1、容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。
2、自动化管理:统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。
3、面向微服务:通过松耦合方式,提升应用程序的整体敏捷性和可维护性。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)