云原生是基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。云原生应用也就是面向“云”而设计的应用,在使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署、按需伸缩、不停机交付等。
微服务:几乎每个云原生的定义都包含微服务,跟微服务相对的是单体应用。微服务的理论基础是康威定律,指导服务怎么切分,大概意思是组织架构决定产品形态。
微服务架构的好处就是按功能切分之后,服务解耦,内聚更强,变更更易;另一方面也可以根据DDD来划分服务。
DevOps:这是个组合词,Dev + Ops,就是开发和运维合体,不像开发和产品,经常刀刃相见,实际上 DevOps 应该还包括测试,DevOps 是一个敏捷思维,是一个沟通文化,也是组织形式,为云原生提供持续交付的能力。
持续交付:是不误时开发,不停机更新,小步快跑,反传统瀑布式开发模型,这要求开发版本和稳定版本并存,需要很多流程和工具支撑。
容器化:Docker 是应用最为广泛的容器引擎,在思科、谷歌等公司的基础设施中大量使用,是基于 LXC 技术。容器化为微服务提供了实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,由谷歌开发,Docker 和 K8S 都是使用 Go语言 编写的,是非常好用的工具。
云原生是一种构建和运行应用程序的方法,利用云功能以实现负载均衡和易于扩展。它包括以下四个方面:
1.开发过程:从瀑布流到敏捷到DevOps的发展。
2.应用程序架构:从单块架构到微服务架构。每个服务都被设计成小型的,并能够适应云容器的有限资源。
3.部署和打包:应用程序以前通常部署在物理服务器上。随着云原生应用程序的出现,它们被打包为Docker镜像并部署在容器中。
4.应用程序基础架构:应用程序大规模部署在云基础架构上,而不是自托管的服务器上。随着数字化转型的不断推进,云原生已经成为了现代化应用程序的基本要素。
云原生涉及多个方面,每个组织在实现云原生时会有不同的做法。