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 的实现方法的更多相关文章

  1. 基于云原生DevOps服务自动化部署前端项目学习总结

    本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...

  2. 藏书馆App基于Rainbond实现云原生DevOps的实践

    我们需要的不是精通Kubernetes的工程师,我们需要一款小白都能用好的管理工具. -- 厦门正观易知科技有限公司运维负责人 郭传壕 大家好,我是厦门正观易知科技有限公司运维负责人郭传壕. 藏书馆是 ...

  3. 产品对话 | 愿云原生不再只有Kubernete

    从2013年,云原生(Cloud Native)的概念由 Pivotal 的 MattStine 首次提出,到现在,其技术细节不断得到社区的完善.云原生逐渐演变出包括 DevOps.持续交付.微服务. ...

  4. .NET团队送给.NET开发人员的云原生学习资源

    企业正在迅速采用云的功能来满足用户需求,提高应用程序的可伸缩性和可用性.要完全拥抱云并优化节约成本,就需要在设计应用程序时考虑到云的环境,也就是要用云原生的应用开发方法.这意味着不仅要更改应用程序的构 ...

  5. 重大升级!灵雀云发布全栈云原生开放平台ACP 3.0

    云原生技术的发展正在改变全球软件业的格局,随着云原生技术生态体系的日趋完善,灵雀云的云原生平台也进入了成熟阶段.近日,灵雀云发布重大产品升级,推出全栈云原生开放平台ACP 3.0.作为面向企业级用户的 ...

  6. 腾讯云大学 x CODING | 当 DevOps 邂逅云原生

    2019 年经济减速的阴云笼罩了所有行业,势如破竹的发展势头被打破,小微创新型企业生存艰难.越来越多的企业更加关注客户和业务之间的交付价值,精益化公司运营,降低成本,驱动业务发展.是否要拥抱云原生?开 ...

  7. DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件开发和交付的效率和质量提升方面的意义

    DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件 ...

  8. CODING DevOps 系列第三课:云计算、云原生模式下 DevOps 的建设

    本文首先会和大家分享当前整个应用生命周期的演变历程,然后讲解云计算模式下 DevOps 建设包含的过程.流程规范和标准,最后讲解云原生时代到来会带来哪些改变,以及标准化的建设会有哪些改变和突破. 应用 ...

  9. 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第1篇

    项目初探 项目地址: 原项目:https://github.com/lonng/nanoserver 调过的:https://github.com/Kirk-Wang/nanoserver 这将是一个 ...

随机推荐

  1. CentOS7软件环境

    一.软件环境 1.1 centos7 [root@centos7 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [r ...

  2. ZIP压缩输入/输出

    学习内容: 一.压缩文件 1.利用ZipOutputStream类对象,可将文件压缩. 2.ZipOutputStream类构造方法:ZipOutputStream(OutputStream out) ...

  3. 从标准输入流中读取并执行shell指定函数

    巧妙的ohmytmux配置 看oh my tmux的配置,发现他们很巧妙的将配置和shell函数放到一个文件里 比如切换鼠标模式的相关配置和shell函数, # : << EOF # .. ...

  4. 队列的java实现

    今天老师提出一个问题,就是如何用java实现队列呢?我在网上找了许多资料,发现java也是可以很轻松的实现队列. 如下代码: package com; import java.util.Collect ...

  5. Vmware虚拟机安装及相关配置流程

    1.Vmware虚拟软件安装 1.1下载地址 vmware 12 pro 的版本稳定性较好,所有我们最好选择该版本 下载地址:https://www.onlinedown.net/soft/10053 ...

  6. c++ 树状数组

    关于树状数组 树状数组,即 Binary Indexed Tree ,主要用于维护查询前缀和 属于 log 型数据结构 和线段树比较 都是 log 级别 树状数组常数.耗费的空间.代码量都比线段树小 ...

  7. 深度学习与CV教程(14) | 图像分割 (FCN,SegNet,U-Net,PSPNet,DeepLab,RefineNet)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  8. VMware Workstation 虚拟机安装教程

    一.介绍篇 VMware Workstation 16 Pro是VMware(威睿公司)于2021年最新发布的一代虚拟机软件,软件的中文名是"VMware 工作站 16 专业版". ...

  9. 【主流技术】ElasticSearch 在 Spring 项目中的实践

    前言 ElasticSearch简称es,是一个开源的高扩展的分布式全文检索引擎. 它可以近乎实时的存储.检索数据,其扩展性很好,ElasticSearch是企业级应用中较为常见的技术. 下面和大家分 ...

  10. SAP -SE30 程序运行时间分析

    运行SE30 选中Program,点击Excute 点击运行 分析结果