云原生应用一般是指原生支持云部署,并能充分利用和发挥云平台能力的应用程序。它一般都有3大特征:
- 容器化封装。容器化封装是指以容器为基础,应用程序封装在容器之中,在容器里运行,实现资源的相对隔离与容器镜像的重复使用。
- 面向微服务。面向微服务是指把一个大的功能应用拆分成一个个功能单一、相对独立、相互解耦的微应用,微应用之间通过接口进行通讯。
- 动态管理。动态管理指通过一个统一的编排工具,比如K8S,来动态的管理和调度这些微服务。
后来随着云计算的发展,CNCF云原生计算基金会又增加了另外2条:
- 声明式的API
- 服务网格
如果某个应用符合以上的几点特征,就可以称为云原生应用。因为云原生应用天生的各种优势,现在越来越多的企业开始拥抱云原生,这就要求企业要有一个新的技术架构使之能更好的利用云原生技术。而这种利用云原生技术让业务更敏捷、成本更低、应用更强的技术架构,就可以成为云原生架构。它利用容器技术,基于微服务,借助敏捷方法,通过DevOps路程来实现应用的持续交付。
所以,云原生架构 = 微服务 + 容器化 + DevOps + 持续交付
使用云原生架构带来的好处很多,归纳起来大概可以有以下几点:
- 快速。天下武功,无坚不摧,唯快不破!云原生架构使用敏捷开发和DevOps,不但可以让企业快速的开发产品,自动化的部署产品,同时还能持续的更新产品,让产品更得上需求,甚至是引导需求,让企业立于不败之地。
- 弹性扩展。云原生架构天生具有云计算的特点。它的资源是可以按照实际情况进行伸缩,这样不但提高了资源的利用率,也大大降低了企业成本。
- 安全与强壮。云原生架构依托于容器编排工具(K8S)与微服务的组合,应用就拥有了自动恢复能力、容错能力、故障隔离能力,让应用时刻处于可用的状态。
- 屏蔽底层差异。因为使用了容器化技术,应用运行于容器之中,应用就不需要考虑底层硬件的差异,只要是能运行容器镜像的硬件都可以运行程序,大大简化了开发工作量。同时对运维人员也极为友好,不需要再为环境问题而苦恼。