其他
阿里高工流生 | 云原生时代的 DevOps 之道
The following article is from 阿里巴巴云原生 Author 郝树伟(流生)
导读: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 的容器集群、钉钉通知的流程。
大家在看:
中生代技术社区提供内推服务,对应BAT,网易,头条等大厂对接到用人部门,
有需求请添加群合伙人大白的微信
申请备注(姓名+公司+技术方向)通过后沟通需求!
END
#接力技术,链接价值#