云原生理念,源于Pivotal公司的MattStine在其多年框架经验的基础上,于2013年首次提出,并持续被沿用至今。其核心特征如下所述:
服务微化:采用微服务框架。
自服务性:构捷架构。
协同工作:基于API的交互。
符合12因素应用标准。
具备抗脆弱性。
随着虚拟技术的进步,云原生理念在社区中不断演进和完善,逐渐成为一种新型的基础设施交付方案,对IT界软硬件资源标准进行了重新定义。特别是在2015年谷歌主导成立的CNCF(云原生计算会)之后,云原生技术被进一步明确定义,有助于在公有云、私有云和混合云等环境中构建和运行可弹性扩展的应用。
CNCF所提出的云原生应用三大特征为:
容器化封装:以容器为基础,提高开发效率,实现代码和组件的重用。容器内运行应用程序和进程,作为独立单元进行部署,实现资源隔离。
动态管理:通过集中的编排调度系统进行实时的资源和任务管理。
微服务架构:明确服务间的依赖关系,实现服务的解耦和独立部署。
图中展示了云原生涉及的技术领域众多,包括了与之相关的工具、平台和项目。通过此图可快速了解和应用相关技术,并根据业务需求对架构进行重组与建设。
容器(Container)这一概念最早出现在Linux中,即LXC(Linux Container),它通过结合Cgroups的资源管理能力和Namespace的资源隔离能力,实现进程级别的隔离。
Kubernetes,全称Kube神兽,是由Google基于Borg开源的容器编排系统。它基于容器技术,提供部署运行、资源调度、服务发现和动态伸缩等功能,简化了大规模容器集群的管理。用户无需过多关注资源管理问题,降低了操作的复杂度。
微服务是一种应用架构方案,将应用拆分为多个核心功能,每个功能作为一个独立的服务进行构建和部署。这种架构有别于传统的单体应用,某个服务的故障不会影响其他功能模块,体现了其针对特定服务的发布、小影响、低风险等特点。
服务网格是指用于微服务应用的可配置基础架构层。它通过sidecar代理实例处理服务间的通信、监控和安全考量。每个服务都配备有sidecar,还提供服务发现、负载均衡、授权等功能。
Serverless是指一种不涉及服务器管理的应用程序构建和运行概念。开发人员无需关注底层基础设施,只需关注应用程序的业务本身,且该服务可自动扩展。
过去,项目常采用“瀑布模型”进行软件交付,即阶段完成后进入下一阶段。然而这种模式无法满足业务快速开发交付及变更需求。敏捷开发概念应运而生,它是一种快速应对需求变化的软件开发能力。而DevOps则基于敏捷开发,将软件开发、测试人员与IT运维关联起来,通过工具、等方式自动化开发、测试、发布流程。
公有云、私有云和混合云都是基于云计算生态衍生出的不同场景。不同云环境所需的资源各不相同,如公有云在互联网上提供云计算服务,而私有云则在公司内网提供服务。选择适合的云服务需根据技术需求进行决策。
DevOps不仅仅是一套实现自动化的工具链,更是一种通过构建企业文化来促进开发与运维之间协作的方式。这种模式已了传统的工作模式,各环节紧密协作,以更快速度、更高质量生产软件。
CICD(持续集成、持续交付、持续部署)关注从开发到交付的整个过程,强调测试、模拟、自动部署等生产链上每一步的关注。而DevOps更注重各部门、岗位间的协同过程,特别是开发与运维之间的沟通。总体而言,DevOps与CICD相互补充,CICD是DevOps的具体实现方式。