随着云原生和数字化的快速发展,各行业对云服务的需求进入了快速增长期,因此出现了很多云相关的专业缩写词,有些看上去甚至还很相似。下面将对这些云基础概念进行详细的梳理。
一、云原生(Cloud Native)
云原生的概念,由来自Pivotal的Matt Stine于2013年首次提出,被一直延续使用至今。这个概念是Matt Stine根据其多年的架构和咨询经验总结出来的一个思想集合,并得到了社区的不断完善,内容非常多,包括DevOps、持续交付(CD)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)和十二要素(The Twelve-Factor App)等几大主题,不但包括根据业务能力对公司进行文化、组织架构的重组与建设,也包括方法论与原则,还有具体的操作工具。采用基于云原生的技术和管理方法,可以更好地把业务根植于云或迁移到云平台,从而享受云的高效和持续的服务能力。
二、DevOps(Development & Operations)
DevOps是一组过程、方法与系统的统称,用于促进开发、运维和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。DevOps的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。
三、CI/CD(Continuous Integration/Delivery)
CI(持续集成)是一个让开发人员将工作集成到共享分支中的过程,从而增强了协作开发。频繁的集成有助于解决隔离,减少每次提交的大小,以降低合并冲突的可能性;CD(持续交付)是持续集成的扩展,它将构建从集成测试套件部署到预生产环境。这使得它可以直接在类生产环境中评估每个构建,因此开发人员可以在无需增加任何工作量的情况下,验证bug修复或者测试新特性。一旦部署到staging(预发布)环境中,就可能需要进行额外的手动和自动测试。CI/CD的出现大大提高了开发团队的生产效率,缩短了开发周期。其敏捷、稳定、可靠的特性,也越来越被企业所青睐与需要。
四、十二要素(The Twelve-Factor App)
十二要素是由Heroku创始人Adam Wiggins首次提出并开源,并由众多经验丰富的开发者共同完善,这综合了他们关于SaaS应用几乎所有的经验和智慧,是开发此类应用的理想实践标准。它定义了一个优雅的互联网应用在设计过程中,需要遵循的一些基本原则,和云原生有异曲同工之处。
五、微服务(MicroServices)
微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。微服务是SOA架构下的最终产物,该架构的设计目标是为了肢解业务,使得服务能够独立运行。微服务设计原则:1、各司其职 2、服务高可用和可扩展性。
六、SOA(Service-Oriented Architecture)
SOA(面向服务的体系架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
七、敏捷基础设施(Agile Infrastructure)
敏捷基础设施是指使用脚本或文件配置计算基础设施环境,而不是手动配置环境的方法。无需运维人员,全部自动化,通过容器封装环境,开发人员可以直接将所有软件和依赖直接封装到容器中,打包成镜像,生产环境直接部署镜像。可以实现所有环境都一样。容器调度平台管理容器,资源利用率更高,通过配置文件描述环境,例如我要部署8台Nginx,端口是什么,镜像用哪个,日志放在什么地方,配置文件用哪个,部署在什么地方等等,都可以直接描述出来。注意,这个描述文件以前是运维干的,现在开发就能搞定。