云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。说的再直白一点就是应用软件在上云过程中为了适用云而衍生出来的一种技术架构,包括微服务、DevOps、持续交付、容器化等。
、
微服务:微服务是云原生的基础,微服务拆分的明白透彻,才能更好的上云。和微服务相对的是单体应用,微服务重点个人认为是如何拆分,按照什么去拆分,业务不同拆分的粒度不同,没有一个统一的规范,只有在实践当中不断摸索。
DevOps:这是个组合词,Dev+Ops,就是开发和运维合体,不像开发和产品,经常刀刃相见,实际上DevOps应该还包括测试,DevOps是一个敏捷思维,是一个沟通文化,也是组织形式,为云原生提供持续交付能力。
持续交付:持续交付是以用户需求为核心,不停机更新,小步快跑,反传统瀑布式开发模型,这要求开发版本和稳定版本并存,其实需要很多流程和工具支撑。
容器化:Docker是应用最为广泛的容器引擎,在思科谷歌等公司的基础设施中大量使用,是基于LXC技术搞的,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,基于谷歌Brog系统开源而来。
在云原生的模式下,云平台提供越来越多的能力,中间件等基础设施逐步下沉到云平台中,开发及运维人员只需要关注业务代码的开发及运维,基础设施逐步融合到云平台中。云原生应用应该超轻量化的方向努力,尽量将业务需求之外的功能剥离出来。当然要实现理想中的状态还是比较难的,但是及时是比较务实的形态,也能比非云原生下要轻量很多。