云原生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 这将是一个 ...
随机推荐
- 好客租房25-react中的事件处理(事件对象)
3.2事件对象 可以通过事件处理程序的参数 React中的事件对象叫做:合成事件(对象) 合成事件:兼容所有浏览器 //导入react import React from 'react' ...
- 2020级cpp上机考试题解#B卷
A卷的第七题我只会一个个排除的方法 意思就是暂时没有好办法所以A卷不搞了 1:递归函数求数列 题意: 有一个递归函数int f(int m),计算结果代表了数列的第m项.当m等于1时,函数结果返回1: ...
- 硬件开发笔记(四):硬件开发基本流程,制作一个USB转RS232的模块(三):设计原理图
前者 前面建立好的基础的元器件,下面开始设计原理图. 需求 USB转RS232,输出RS232 可以选择性输出5V的TTL 可以选择性输出3.3V的TTL 设计原理图 步骤一:CH340G ...
- android系统常见问题类型
android系统中常见的异常问题,包括上层应用.框架.内核.驱动等,一般来说有如下一些异常问题类型: ANR,Answer No Response,应用无响应. FC,Force Close,强制退 ...
- 洛谷 P2629 好消息,坏消息 题解
暴力算法的时间复杂度是O(n^2),考虑优化: 先导入一种思想--断环为链.说通俗点就是在原数组后面再接上下标为1--(n - 1)的元素: 以样例为例:-3 5 1 2:我们将其断环为链后可以得到这 ...
- 基于SqlSugar的开发框架循序渐进介绍(8)-- 在基类函数封装实现用户操作日志记录
在我们对数据进行重要修改调整的时候,往往需要跟踪记录好用户操作日志.一般来说,如对重要表记录的插入.修改.删除都需要记录下来,由于用户操作日志会带来一定的额外消耗,因此我们通过配置的方式来决定记录那些 ...
- Elasticsearch 在地理信息空间索引的探索和演进
vivo 互联网服务器团队- Shuai Guangying 本文梳理了Elasticsearch对于数值索引实现方案的升级和优化思考,从2015年至今数值索引的方案经历了多个版本的迭代,实现思路从最 ...
- 修改windows字符集
手动 临时修改cmd默认字符集(代码页) chcp xxxx 自动<打开cmd后应该自动运行dhcp 65001,临时设置为utf-8> D:\Develope\apache-tomcat ...
- easyexcel注解
1.@ExcelProperty 必要的一个注解,注解中有三个参数value,index分别代表列明,列序号 1.value 通过标题文本对应2.index 通过文本行号对应 2.@ColumnWit ...
- 学习笔记-JDBC连接数据库操作的步骤
前言 这里我就以JDBC连接数据库操作查询的步骤作以演示,有不到之处敬请批评指正! 一.jdbc连接简要步骤 1.加载驱动器. 2.创建connection对象. 3.创建Statement对象. 4 ...