云原生Devops 的实现方法
DevOps 是一个持续改善软件产品的过程,它通过极短的发布周期、全面自动化的集成和交付流水线,以及团队间的紧密协作来不断改善产品。DevOps 的目标是缩短将创意变成用户可以使用的产品的时间,并降低这个过程的成本。DevOps 充分利用自动化流程来加速开发和部署。如下图对比传统软件构建方法和 DevOps 方法,传统方法在上,DevOps 在下面:
●半部分的传统方法,从概念构思到用户可用的时间周期是八天。基础设施部署占用的时间最多,因为工程师需要在互联网上创建托管软件所需的组件。另一个大的时间耗费来自部署之间的测试和评审步骤。
●半部分是DevOps ,从概念构思到用户可用的时间周期缩短到了两天。这是通过使用处理部署和软件测试/评审的自动化流程来实现的。
如果一个组织构建软件的速度能比对手快四倍,那么这将会给它带来巨大的竞争优势。实践表明,客户中意的创新产品一开始可以不完整,但要能够快速稳定地改进。组织可采纳 DevOps 来降低开发生命周期的成本和延迟,并响应用户的要求。
通过 Dev0ps,开发人员仅用数小时就可以发布新版本软件,对它们进行测试,并部署给客户。这并非意味着版本总是可以这么快地发布,适当的质量保障(QA,Quality Assurance)需要投入时间,而 DevOps 提供了在必要时能快速行动的能力,展示了持续集成、持续交付及基础设施即服务这些技术如何被整合在一起以实现快速的发布周期。
上图的流水线的关键部分是,从开发人员提交补丁到生产环境中的服务部署这些自动化步骤,最终以完全自动化的方式串联成的一个链条。如果这个链条上的任何一个自动化步骤出现失败,那么流水线就会停止,代码就不会部署。这种机制将确保在所有类型的测试都通过之后,新版本的软件才能被发布到生产环境中。
1. 持续集成
将新特性快速集成进软件的过程叫作持续集成Cl,CI 定义了一个在软件产品中实现、测试及合并新特性的工作流。产品经理和开发人员定义一组小特性集合,这些特性能在较短的周期内实现。每个特性添加在主要源代码的一个分支上,并提交评审,由另一位得到授权的开发人员来评审。在评审阶段,自动化测试会被执行以验证代码更改是否需要返工,这能维持代码的质量水平。在评审通过之后,修改会被合并到中央代码仓库中,这样就做好了部署的准备。小特性的快速迭代能让这个流程得以顺畅运行,避免了因大规模代码修改而对功能造成的破坏。
2.持续交付
将软件部署到客户可用的服务中的自动化过程叫作持续交付CD,DevOps推崇工程师用程序代码来管理基础设施以快速应对变化,而不是手动管理基础设施组件。当开发人员将代码修改合并进软件之后,运维人员在CD流水线上触发更新后的软件的部署,流水线会自动获取最新版本的源代码,对其进行打包并为它创建新的基础设施。如果部进行顺利,可能在QA团队人工或自动评审之后,该环境就会被提升为新的演练或生产环境。用户将被定向到这个环境,而老环境将被销毁。通过代码来管理服务器和网络的这一过程大大缩短了处理部署通常所需的漫长的等待时间。
3.基础设施即服务
基础设施即服务laaS就是云。它是这样一种概念,一个组织所依靠的数据中心、网络和服务器,有时甚至还有系统,统统都由第三方运营。这些基础设施可以作为服务暴露给运维人员,并且可以通过 API 和代码进行控制。laaS 是 DevOps 弹药库中的核心工具,因为它在降低基础设施运营成本方面发挥着举足轻重的作用。可编程的特质将 laaS 和传统基础设施区分开来,并且鼓励运维人员编写代码来创建和修改基础设施,而不是手动执行这些运维任务。
内部运维
许多组织倾向于在内部运营它们的基础设施,这样做有各种各样的原因(监管、安全、成本,等等)。需要注意的是,采用laaS并非意味着将基础设施的管理外包给第三方。组织可以在内部使用Kubernetes 或 OpenStack 这样的平台来部署和运维laaS,而不是直接在硬件上运行应用,从而享受到这些中间管理层带来的灵活性优势。
本书中我使用了由第三方运营的 laaS 系统——AWS(Amazon Web Services),它受到许多组织的青睐,因为AWS帮助它们降低了基础设施管理的复杂性,让它们可以聚焦于核心产品。但是,我提及的大多数基础设施安全概念可以应用于任何类型的laaS,无论你是自己控制硬件还是让第三方替你控制。
管理更低层的基础设施将带来一系列全新的问题,例如网络安全和数据中心的访问控制,你必须妥善处理这些问题。本书没有介绍这些内容,因为它们不是 DevOps 独有的问题,但是你应该可以轻易地从一些现有文献中获得帮助。
AWS 是最具代表性的 laaS,它将作为我们的示例环境贯穿于全书。图的下半部分展示了由供应方管理的 AWS 组件,上半部分则是由运营方管理的组件。
CI、CD及 laaS 是成功的 DevOps 策略的基本组成部分。深谙CI/CD/laaS 工作流的组织能以全自动化的方式快速地将软件交付给终端用户,并能够做到一天交付数次。测试和部署步骤的全部自动化保证了将流水线操作所需的人工干预降到了最低,这样在灾难发生时基础设施也是完全可以恢复的。
除了技术上的优势,DevOps 还影响了组织文化,从很多方面提升了员工的幸福感。
云原生Devops 的实现方法的更多相关文章
- 基于云原生DevOps服务自动化部署前端项目学习总结
本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...
- 藏书馆App基于Rainbond实现云原生DevOps的实践
我们需要的不是精通Kubernetes的工程师,我们需要一款小白都能用好的管理工具. -- 厦门正观易知科技有限公司运维负责人 郭传壕 大家好,我是厦门正观易知科技有限公司运维负责人郭传壕. 藏书馆是 ...
- 产品对话 | 愿云原生不再只有Kubernete
从2013年,云原生(Cloud Native)的概念由 Pivotal 的 MattStine 首次提出,到现在,其技术细节不断得到社区的完善.云原生逐渐演变出包括 DevOps.持续交付.微服务. ...
- .NET团队送给.NET开发人员的云原生学习资源
企业正在迅速采用云的功能来满足用户需求,提高应用程序的可伸缩性和可用性.要完全拥抱云并优化节约成本,就需要在设计应用程序时考虑到云的环境,也就是要用云原生的应用开发方法.这意味着不仅要更改应用程序的构 ...
- 重大升级!灵雀云发布全栈云原生开放平台ACP 3.0
云原生技术的发展正在改变全球软件业的格局,随着云原生技术生态体系的日趋完善,灵雀云的云原生平台也进入了成熟阶段.近日,灵雀云发布重大产品升级,推出全栈云原生开放平台ACP 3.0.作为面向企业级用户的 ...
- 腾讯云大学 x CODING | 当 DevOps 邂逅云原生
2019 年经济减速的阴云笼罩了所有行业,势如破竹的发展势头被打破,小微创新型企业生存艰难.越来越多的企业更加关注客户和业务之间的交付价值,精益化公司运营,降低成本,驱动业务发展.是否要拥抱云原生?开 ...
- DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件开发和交付的效率和质量提升方面的意义
DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件 ...
- CODING DevOps 系列第三课:云计算、云原生模式下 DevOps 的建设
本文首先会和大家分享当前整个应用生命周期的演变历程,然后讲解云计算模式下 DevOps 建设包含的过程.流程规范和标准,最后讲解云原生时代到来会带来哪些改变,以及标准化的建设会有哪些改变和突破. 应用 ...
- 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第1篇
项目初探 项目地址: 原项目:https://github.com/lonng/nanoserver 调过的:https://github.com/Kirk-Wang/nanoserver 这将是一个 ...
随机推荐
- mybatis 查询返回的类型中字段类型为 List<xx>
基本类型数组 mapper.xml <resultMap id="xxDtoResultMap" type="com.xx.xxDto"> < ...
- 最佳案例 | 游戏知几 AI 助手的云原生容器化之路
作者 张路,运营开发专家工程师,现负责游戏知几 AI 助手后台架构设计和优化工作. 游戏知几 随着业务不断的拓展,游戏知几AI智能问答机器人业务已经覆盖了自研游戏.二方.海外的多款游戏.游戏知几研发团 ...
- JAVA数组案例!
数组的用例 一.案例需求: 有这样的一个数组,元素是{68,27,95,88,171,996,51,210}.求出该数组中满足要求的元素和, 要求是:求和的元素个位和十位都不能是7,并且只能是偶数如何 ...
- MVC 调试页面路径变成 Views/Controller/Action.cshtml问题
MVC在路由里面已经写好了路径,但是调试时地址栏还是会变成 Views/Controller/Action.cshtml,导致报404错误,找不到路径. 原因可能是你将某一页面设为了起始页,导致每次运 ...
- 面试官:Netty心跳检测机制是什么,怎么自定义检测间隔时间?
哈喽!大家好,我是小奇,一位热爱分享的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 书接上回,昨天在地里干了一天的 ...
- 拭目以待!JNPF .NET将更新.NET 6技术,同时上线 3.4.1 版本
2022年5月30日,福建引迈即将上线JNPF开发平台的.NET 6版本,在产品性能上做了深度优化,且极大的提升了工作效率,加强了对云服务的改进升级,全面提升用户的使用体验. JNPF是一个以PaaS ...
- element-ui table组件使用v-if时的问题
element-ui项目中经常遇到需要使用v-if指令来根据情况动态显示隐藏某些列情况,这时就会出现滚动条样式异常.列错乱.列宽错乱等问题 解决办法:在el-table上添加:key="Ma ...
- c++ 线段树
关于线段树 线段数是一种区间树 可以看出:叶子即为输入的数 假设一个节点为 x ,则其左儿子为 2x 右儿子为 2x+1 操作解析 约定 变量名 意义 input[] 输入的数 t[] 线段树 其中 ...
- LoRa模块无线收发通信技术详解
LoRa是一种LPWAN通信技术,它基于扩频技术而广泛应用于超长距离的无线传输场景中.现在,LoRa主要在全世界433.868.915MHz等自由频带工作.其最大特征是灵敏度高,传输距离长,工作功耗低 ...
- el-select数据量过大引发卡顿,怎么办?
本文分享自华为云社区<解决el-select数据量过大的卡顿的两种思路与一种实施方案>,作者: KevinQ. 经典问题:在测试环境好好的,怎么到正式环境就不行了? --本文:数据量变了. ...