架构师成长系列 | 云原生时代的 DevOps 之道
Posted 信创工程咨询
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构师成长系列 | 云原生时代的 DevOps 之道相关的知识,希望对你有一定的参考价值。
导读:DevOps 是一种软件开发人员和 IT人员之间的合作过程,目标是高效地自动执行软件交付和基础架构更改流程。在云原生时代,企业又如何借助 DevOps 实现产品快速、稳定、高效和安全地迭代,释放业务价值呢?
什么是云原生
-
符合 12 因素应用 -
面向微服务架构 -
自服务敏捷架构 -
基于 API 的协作 -
抗脆弱性
-
集成 DevOps -
持续交付 -
微服务 -
容器化
-
DevOps 是软件开发人员和 IT 运营之间的合作,目标是自动执行软件交付和基础架构更改流程。 它创造了一种文化和环境,可在其中快速、频繁且更可靠地构建、测试和发布软件;
-
持续交付使得单个应用更改在准备就绪后即可发布,而不必等待与其它更改捆绑发布或等待维护窗口期等事件。 持续交付让发布行为变得平淡可靠,因此企业可以以更低的风险频繁交付,并更快地获得最终用户的反馈,直到部署成为业务流程和企业竞争力必不可少的组成部分;
-
微服务是将应用作为小型服务集合进行开发的架构方法,其中每个服务都可实施业务功能,在自己的流程中运行并通过 HTTP API 进行通信。 每个微服务都可以独立于应用中的其他服务进行部署、升级、扩展和重新启动,通常作为自动化系统的一部分运行,可以在不影响最终客户的情况下频繁更新正在使用中的应用;
-
与标准虚拟机相比,容器能同时提供效率和速度。 单个操作系统实例使用操作系统 级的虚拟化,在一个或多个隔离容器之间进行动态划分,每个容器都具有唯一的可写文件系统和资源配额。 创建和破坏容器的开销较低,再加上单个虚拟机中的高包装密度,使容器成为部署各个微服务的完美计算工具。
云原生时代的 DevOps 新挑战
-
唯快不破。 这里的快可以解读出来两层含义,一是业务应用快速上线,有利于抢占市场先机,第二层意思就是在你的业务有爆炸式增长的时候,你如何在计算资源上给以充分的保证,这个时候其实追加巨额的 IT 投资购买软硬件也未必能跟得上业务的快速发展。 这个其实就是企业研发效能的问题;
-
稳中求变。 业务或者应用的稳定性永远都是第一位的,如何既保证业务的“稳态”又要满足快捷商业的“敏态”需求,比如新业务的上线、应用的变更等。 这个是企业 IT 架构的问题;
-
节省资源,如何节省计算资源,根据业务是否高峰自动扩容缩容,这个是云平台建设的问题;
-
开拓创新,开发运维一体化、微服务架构。
-
如何应用在环境栈之间的安全推进发布 -
如何管理应用发布的权限和安全审批 -
如何提高应用的平均部署时间和平均恢复时间 -
如何迅速对线上应用进行故障定位、复现和回滚
云原生时代下的 DevOps 之道
版本管理。我们希望每一个发布的应用的版本号都能跟 git commit id 关联,这样的好处就是每一个变更都有历史记录查询、可以更快进行故障定位和修复;
基线管理。便于问题复现和快速回滚;
安全发布。包括发布权限管理以及安全审批的内容;
快速反馈。提高研发效能。
-
Git 仓库是任何 CICD 过程的唯一输入源 -
声明式的应用编排、构建部署模型 -
应用在环境栈之间的无差别、自动化推进 -
PR/MR 触发的拉取式流水线过程 -
快速反馈机制
-
开发者提交新的功能分支 feature; -
开发者创建请求合并代码到 latest 分支的 Merge Request; -
开发者创建 Merge Request 的动作自动触发名为 preview-pipeline 的 Jenkins 流水线任务的构建; -
preview-pipeline 流水线任务从 Git 服务器拉取 preview-pipeline 源码项目,并按照项目中 Jenkinsfile 文件中的声明式脚本运行源码编译、测试、容器镜像构建和推送、应用部署到 Preview 的容器集群、钉钉通知的流程; -
管理员在 Git 服务器的 Merge Request 页面查看应用的预览连接并验证应用是否可以合并到 latest 分支,如果通过验证则接受 Merge Request 的合并,触发步骤 6, 如果不通过则通知开发者进行代码更新和提交,退回步骤 1; -
管理员接受 Merge Request 合并的动作会自动触发 Jenkins 流水线任务 staging-pipeline 的构建; -
staging-pipeline 流水线任务从 Git 服务器拉取 staging-pipeline 源码项目,并按照项目中 Jenkinsfile 文件中的声明式脚本运行源码编译、测试、容器镜像构建和推送、应用部署到 Staging 的容器集群、钉钉通知的流程; -
Staging 环境中的应用服务在通过测试和验证后,管理员可以合并 latest 分支到 master 分支; -
管理员合并 latest 分支到 master 分支后,会自动触发 Jenkins 流水线任务 production-pipeline 的构建; -
production-pipeline 流水线任务从 Git 服务器拉取 production-pipeline 源码项目,并按照项目中 Jenkinsfile 文件中的声明式脚本运行源码编译、测试、容器镜像构建和推送、应用部署到 Production 的容器集群、钉钉通知的流程。
相关阅读
以上是关于架构师成长系列 | 云原生时代的 DevOps 之道的主要内容,如果未能解决你的问题,请参考以下文章