热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第二章知己知彼

原标题:第二章 知己知彼知彼知己,百战不殆;不知彼而知己,一胜一负;不知彼,不知己,每战必殆。《谋攻篇》前面两章其实重点是在掰扯数智化,IT研发本身的数字化其实除了DevOps这一种手段之外还有很多,

原标题:第二章 知己知彼

知彼知己,百战不殆;不知彼而知己,一胜一负;不知彼,不知己,每战必殆。《谋攻篇》

前面两章其实重点是在掰扯数智化,IT研发本身的数字化其实除了DevOps这一种手段之外还有很多,比如LowCodeRPA等等,AI都可以自动写代码了,还有啥是不可能的呢!不过本人能力有限,这点斤两也就敢玩玩DevOps,其他的碰都就不敢碰,接下来聚焦到DevOps的一些见解上。


3.1 剑锋所指

作为云原生重要组成部分的DevOps,跟云原生一样没有标准定义,不同的大厂都会结合自己的实际给出不同维度的注解。综合各家所言,我们可以重点提炼出DevOps的目标到底是什么呢?






























Atlassian

DevOps 团队包含了开发和 IT 运维,大家一起协作,共同参与产品的整个生命周期,一起为提升软件质量和加速软件开发过程而努力。


微软

DevOps 是人、过程和产品的结合,使能持续地向终端用户交付价值


AWS

DevOps 是文化理念、实践和工具等的组合,能够提升一个组织快速交付应用和服务的能力





DevOps剑锋所指何处?想必真正要玩DevOps的你心里肯定有自己的小九九了,就不再赘述总结了,每个人都可以有自己的见地。


3.2最佳实践

多数情况下,开发的目标是快速发布更多的新特性,而运维的目标是保证更高的系统可用性。DevOps 通过切实可行的最佳实践体系来拉齐这两个目标,在提升系统稳定性的同时加速产品交付到市场的速度。

这个最佳实践是什么呢?显而易见,就是形形色色的“无穷环”。






























Atlassian

计划(Plan

构建(Build

持续集成和部署

监控和告警

运维(Operate

持续反馈

微软

计划(Plan

构建(Build

持续集成

部署(Deploy

运维(Operate

持续反馈

AWS

构建(Build

测试(Test

发布(Release

监控(Monitor

计划(Plan




知彼部分是对《什么是 DevOps?看这一篇就够了!》(https://www.danielhu.cn/what-is-devops/)的解读,叫抄袭也行,还请原文作者多多海涵。

总结来讲,最佳实践都基本上指向了重要的三件套:(技术)工具、流程和文化。

文化转变

结合“开发”和“运营”,“DevOps”一词强调整合两个团队的活动以交付有效软件。 也就是说,范围不仅限于这些部门。所有参与软件开发和交付的人员都需要一致推进向用户交付有效软件的共同目标。

DevOps 的核心是创造一种共担责任、相互信任和开放沟通的文化。 对于开发团队来说,在本地构建能够运行不足以表明工作已经完成。 为了交付可用于生产的代码,开发者需要代码和发布间步骤的可见性。 这意味着打破孤岛并与质量保证、安全和基础架构团队合作,以了解其在流程中的作用。

工具和自动化

虽然手动流程可以让团队间的合作更加紧密,但使用工具将尽可能多的工作自动化可以带来更高效率。 构建、测试和部署步骤自动化可使工作得以更快完成,这也意味着可以更快得出这些阶段的结果。 自动化是 DevOps 方法的核心,能够实现紧密的反馈循环,这对于提高质量和消除浪费至关重要。

高效的流程

DevOps 出现在精益制造原则开始应用于软件开发的时候。 精益的重点是通过优化流程中的每个阶段、提高质量并营造尊重的氛围来消除浪费。DevOps 融合了大部分这种思想,并优化端到端流程,通过紧密反馈循环对正在构建的内容尽早提供反馈,提高软件开发效率。

这涉及更早地进行下游开发活动,并在发现问题后立即解决。无论是失败的测试、安全漏洞还是构建问题。

由于每个人都要分担向用户交付软件的责任,在我的机器上能用的陈旧回应已经不再适用。 使用 DevOps 方法,开发文章来源地址8679.html者可以更清楚地了解软件的使用方式和出现的挑战,从而更好地修正这些问题。

采用 DevOps 将敏捷的好处扩展到开发团队之外。 适应开发者的节奏并以较小的规模工作,可以更容易地发现和隔离问题,因为只有较少的变量在发挥作用。 同样,及时生成反馈可以避免在后续将弃置的测试和暂存构建上浪费精力。 反过来,这也将确保整个组织获得以较小增量工作的全部效益


3.3查缺补漏

当我们在说DevOps建设时,到底要建设什么?说法千千万,选择自己偏信的信一信就行了,重点是结合自己所在境况,能够落地的,才是有价值的。

梳理已有的文章来源地址8679.html能力,比起跟其他大厂或竞品所标榜的能力来个开发常挂在嘴边的“拉齐”,来个知己知彼,至少各种半年、年度总结啥的有点存货可以拿出来讲讲。

以微软定义的 DevOps 8大能力为例,做了个简单的对照表,主要从工具、流程和文化三个角度进行。

持续计划 Continuous Planning






















开宗明义

从简单云以及云效项目协作的功能来看,持续计划其实更侧重于于项目管理工具,基本上都是参考敏捷开发的主体思想,将IT研发迭代的工作流程、各工种协作、状态流转等整合进系统里。

类似功能的产品其实有很多,比如TAPDTower等。这些单纯只是研发工作流程的信息流转,不能链接作用到最终运行在Linux的“代码服务”跟着流转。比如,提测的时候把迭代分支代码,合并到测试分支,并且在测试环境发布本次变更。

持续计划是DevOps的源头,也是收尾处,这样才能成环。

已有能力

Jira+Wiki,这应该是很多公司的标配了。

欠缺能力

工具其实没啥好坏,真正有价值的是使用工具的人如何使用。工具够用就行,最多就是使用不方便、操作不友好这一大堆。要是问题在使用的人不懂做做计划、协调资源和控制进度,刀剑太锋利只会误伤人的手指。个人不是深度 持续计划使用者,所以感觉不出来欠缺啥。之前主要使用过TAPDTower

备选能力

没调研,总之要私有化部署。公司的核心秘密不能放到别人机房。

个人理解

CP能力工具和文化的占比都不大,重要的是流程。制定执行流程的人,才是核心。

持续集成 Continuous Integration






















理解与说明

持续集成,简称CI,是软件开发周期的一种实践,把代码仓库(Gitlab或者Github)、构建工具(如Jenkins)和测试工具(SonarQube)集成在一起,频繁的将代码合并到主干然后自动进行构建和测试。简单来说持续集成就是向源代码/版本控制系统定期提交变更,以便每位成员都在同一基础上构建。 每次提交都会触发一个构建和一系列自动化测试,以验证行为并确保所做变更没有破坏任何已有内容。

最关键的是自动化测试,也是最难的。是后续“持续质量”重点解决的问题范畴。

已有能力

但就CI的工具来地主家的余粮绰绰有余,在容器化建设之前JenkinsSonar等等工具早都有的。流程层面本来就不是问题,将这些工具通过各种Action串联起来。

自动化测试,也建设了专门的平台,而且还不止一个两个,外采的、自研的各式各样。

欠缺能力

看上去似乎是不缺什么能力的,但是实际中也并不是那么乐观。这种“不科学”的时刻,得要往“文化”上想一想了。

备选能力


个人理解

CI能力,工具和流程都很容易信手拈来,极致体验的使用的。重点在于得有这么一个文化,让研发和测试信服或者强制遵循。

持续交付 Continuous Delivery






















开宗明义

鉴于CD既可以是Continuous Delivery又可以是Continuous Deployment,各种观点和分歧最后可能就分不清楚了。所以个人建议不加以区分了,笼统的来讲CD的能力,持续交付以由持续集成建立的构建和测试自动化为基础,将持续计划中的某个需求(泛指不仅仅是需求),从开发者到测试人员,再从测试人员到发布经理的交接,并最终把形成的“能力”发布到生产环境,交付给目标用户。

不论是手动还是自动,也不管有多少个环境,CD的最终目标就是向终端用户交付了价值。

已有能力

18年开始的容器化建设,一开始文章来源站点https://www.yii666.com/就主攻的CD能力。部署自动化

欠缺能力


备选能力


个人理解

对于持续交付,资料太多、各家之言太杂乱反倒把最重要的部分给蒙蔽了。回归到码农的工作的本质,写好代码,最终要给用户“交付”一个东西(.exe/http://127.0.0.1:1024)。持续不断的,能够自动化的把写好的代码,变成终端用户可接受的那个“东西”,我觉得这就是CD了。

持续运维 Continuous Operations






















开宗明义

监控、告警、日志、链路追踪;监控自动化、配置自动化、作业自动化、日志分析自动化。

持续运维可减少或消除计划性故障时间或中断,例如计划性维护。 如果可能,应将基础结构、应用程序和服务的持续监视与自动化修正相关联。 用户应该永远不会知道何时发生更新或增量发布。

已有能力

不论是人工手动,还是各种工具自动,公司再运维的投入比容器化是要大的。

欠缺能力


备选能力


个人理解


持续质量 Continuous Quality






















开宗明义

构建可靠的自动化测试套件并在软件交付生命周期中执行各种扫描、测试,从而提高软件质量。

已有能力

代码质量扫描、测试覆盖率、单元测试覆盖率、Java项目标准化、静态分析等等

欠缺能力


备选能力


个人理解

交付质量,单纯的只有工具、流程建设肯定是不够的;单纯的只有测试人员也是不够的。

持续安全 Continuous Security






















开宗明义

DevSecOps 强调了将安全性纳入软件开发生命周期 (SDLC) 的重要性。 将安全性融入团队的文化、流程和工具,可以避免孤岛并确保快速交付不会以牺牲安全为代价。

已有能力

www.yii666.com要是6种安全扫描工具

GitLeaks\AWVS\Nuclei\IAST\Twistlock\奇安信安全扫描

欠缺能力


备选能力


个人理解


持续协作 Continuous Collaboration






















开宗明义

持续协作是支持对任何 DevOps 之旅至关重要的文化转变的做法。 持续协作使团队能够在计划的会议范围之外进行创新,并通过创建集成体验来促进团队内部的创新。可以使用技术和实践分解孤岛,即使没有理想的共同位置,团队也能一起工作。

从持续协作的角度回顾敏捷宣言,你将意识到,这实际上是关于进行协作和个人交互以实现真正的创新的价值。持续协作鼓励你重视:①个人与交互胜过进程与工具;②有效用的软件胜过全面的文档;③客户协作胜过合同协商;④响应变化胜过遵循计划

已有能力


欠缺能力


备选能力


个人理解


持续改进 Continuous Improvement






















开宗明义

连续且坦诚地观察你的 DevOps 流程可使团队能够确定可能的改进点。所有的改进都需要改变,但并非所有www.yii666.com的改变都是改进。 这就是为什么度量对于使用 DevOps 的组织来说是成功的关键因素。 正如 Peter Drucker 所说,“如果无法度量,就无法改善。”

缺乏有效的反馈机制使得难以提高应用对业务的影响。 这就是为什么有必要创建一个环境来促进以学习为中心的 DevOps 改进方法,并着重于基于数据进行调整。

已有能力


欠缺能力


备选能力


个人理解




3.4结语

工具和能力都是散落的点,真正能体现水平的是如何形成良性的“无穷环”,如果觉得无穷太大了,那至少得是能够“闭环”。

经过4年多的容器化建设,以及相关研发能力的完备,DevOps8大能力基本上是具备的,现在重中之重是如何进行“包装上架”。利用已有的平台,成体系的整合完备。

来源于:第二章 知己知彼


推荐阅读
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • Shodan简单用法Shodan简介Shodan是互联网上最可怕的搜索引擎,与谷歌不同的是,Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“ ... [详细]
author-avatar
无情的有情人家_834
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有