首页 > 其他分享 >Learn DevOps-第一章:Introduction

Learn DevOps-第一章:Introduction

时间:2023-11-02 09:47:20浏览次数:37  
标签:软件开发 Introduction Agile 代码 DevOps Learn 软件 团队

Introduction

DevOps的定义有很多种,AWS对其定义如下:

DevOps is the combination of cutural philosophies, practices, and tools that increases an organization's ability to deliver applications and services at high velocity.”

即DevOps是一种理念、实践和工具的组合,可以帮助组织高速交付应用程序。此定义的重点是持续交付和保证正确性和保证正确性和可靠性。通俗来说,它是一种软件开发和运维的实践和文化,旨在加强开发团队和运维团队之间的协作、自动化和效率。他的目标是缩短软件开发周期,提高软件质量,以及使交付软件更加可靠和可预测。

接下来我们将看一下软件开发是如何向DevOps发展的,软件开发的最初几十年是围绕瀑布模型展开的。瀑布模型处理软件开发的方式与处理构建房地产项目的方式相同,我们将在多个阶段中构建软件,这些阶段可能会持续几周到几个月。如下图所示,每个阶段都可能花费几周的时间,因此业务部门需要几个月才能看到应用程序的工作版本。

构建优秀的软件程序有几个关键的要素,首先是沟通的重要性,软件开发是一项涉及多种技能的多学科工作,人和人之间的沟通交流对于软件项目的成功至关重要。构建优秀软件的下一个要素是自动化,软件开发涉及广泛的活动,手动操作速度慢且容易出错,引入自动化是至关重要的。最后一个要素是快速获得反馈,我们不能等几个月才知道程序存在问题。

 

Agile

Agile将业务团队和开发团队合并成一个团队,这个团队致力于在称为sprints的小迭代中构建大的的软件。Agile专注于在一个sprint中完成所有阶段,而不是在每个开发阶段花费数周或者数月。我们可以从一个称为用户故事的小需求(如图中的plan)开始,然后带着它经历各种开发周期。

这有对加强团队合作有什么帮助呢?正如我们前面所提到的,Agile将业务和开发团队结合在一起。业务团队负责定义要构建的内容,开发团队负责构建符合要求的产品。当我们提到开发的时候,我们将所有从事设计、编码、测试和打包软件的人。两个团队是通过引入一个叫做产品所有者(product owner)的业务代表而结合在一起的。Agile团队可以随时联系产品所有者,更加清楚地理解业务目标,这样做就可以确保团队构建的最终产品是业务所需要的。

Agile团队关注的自动化领域是什么呢?

Agile团队的主要关注点是尽可能早地发现缺陷。在开发软件时,存在各种各样的缺陷。功能缺陷是指产品不符合预期要求。代码质量错误等技术错误缺陷使得软件的维护变得困难,一般来说,Agile团队专注于编写出色的单元测试来测试方法和类,此外还专注于编写出色的自动化集成测试来测试模块和应用程序。代码质量检查也通过使用Sonar之类的工具来评估应用程序的静态代码质量而引入。现在,如果我们有单元测试,集成测试,和很好的代码质量检查,这就足够了吗?我们需要连续进行这些检查。一旦我们将代码提交到Github仓库中,我们就想运行单元测试,做代码质量检查,我们还想打包应用程序,运行集成测试,这就是所谓的持续整合

那么下一个问题是,Agile是如何促进获得即时反馈的?

最重要的因素是,企业不需要等待好几个月才能看到最终产品,在每一个sprint结束时,都会向包括架构和业务团队在内的所有利益相关者演示产品。所有的反馈都被用于为下一个sprint确定用户故事的优先级。这样做的结果是,来自架构和业务团队的反馈被用于增强每一个sprint的产品。因此,团队构建的最终产品是业务部门非常满意的。

实现快速反馈的另一个因素是持续集成(continuous integration)。如果我将一些代码提交到版本控制中,但是有一个缺陷,会发生什么事?一个Unit test会失败,我们能立刻知道。那如果我编写的某段代码不符合代码质量标准呢?Build会立刻失败,我会收到电子邮件提醒。到目前为止,我们研究了Agile如何帮助团队更好地沟通,获得即时反馈和自动化。现在我们想知道,Agile真正成功了吗?我想是的,通过专注于改善开发和业务团队之间的沟通,专注于发现早期的各种缺陷,Agile将软件开发带到了下一个层次。那么是否意味着旅程停止了?不,新的挑战已经出现,我们开始转向微服务架构,构建许多小型的API,而非大型应用程序。新的挑战是什么呢?新的挑战在于运营,我们不再是一个月发布一个单体,而是每周发布数百个微小服务,有时候甚至每天都发布。调试微服务中的问题并了解微服务中发生的情况变得非常重要,是时候在软件开发中使用一个新的流行语了,即DevOps,接下来,我们将详细讨论。

DevOps

DeVOps的重点是什么呢?是加强开发团队和运营团队之间的沟通。我们如何简化软件部署呢?如何让开发团队更容易看到运营团队所做的工作呢?

DevOps做的第一件事就是让运营团队与开发团队非常接近,在成熟的企业中,开发和运营被合并到一个团队中,分享共同的目标,了解另一个团队面临的挑战。在处于DevOps演进早期阶段的企业中,通过将运营团队中的演示着引入Scrum团队,并让他们参与sprint活动,改善了沟通。因此,DevOps试图通过让运营团队尽可能接近开发团队来加强沟通。

下一个问题是,DevOps关注的automation是什么?除了Agile的重点领域(持续集成和自动化测试)之外,DevOps还专注于自动化运营团队的活动。运营团队通常参与服务器配置、在这些服务器上安装软件、配置软件和部署应用程序,DevOps专注于自动化这些步骤。

与DevOps相关的关键术语是持续部署(Continuous Deployment),持续交付(Continuous Delivery)和基础架构(IAC,Infrastructure as code)即代码。持续部署是指在测试环境中持续部署新版本的软件,持续集成的重点是运行测试和代码质量检查。持续部署通过在环境中添加部署而将其提升到一个新的水平。

在Google、Facebook等更成熟的组织中,持续交付有助于持续将软件部署到生产环境。除了运行测试、构建软件和打包应用程序之外,还将应用程序部署到测试环境中,并在获得QA团队和UAT团队的正式批准后,将软件直接部署到下一个环境中,直至生产环境。

下一个重点领域是IAC,是关于像对待应用程序代码一样对待基础结构。这一切都是关于使用代码和配置以自动化的方式创建基础架构,即服务器、负载平衡器和数据库。

 

那么如何获得即时反馈呢?

正如我们之前提到的,DevOps拉近了运营和开发团队的距离,开发和运营是同一个团队的一部分,所以整个团队都了解与运营相关的挑战和与开发相关的挑战。任何操作问题都会得到开发人员的快速关注,在软件上线过程中遇到的任何挑战都会引起运营团队的早期关注。由于持续交付,如果进行了可能破坏测试或者临时环境的代码更改或配置更改,在几个小时内我们就可以知道。而由于IAC,开发人员可以自行配置环境、部署代码和查找问题,而无需运营团队的任何帮助。总而言之,DevOps旨在将软件开发提升到新的水平。

总而言之,Agile和DevOps是帮助我们改进软件开发的两种有效的方法。

 

标签:软件开发,Introduction,Agile,代码,DevOps,Learn,软件,团队
From: https://www.cnblogs.com/lbwBH/p/17804664.html

相关文章

  • dspLearning_频率响应的意义以及简单滤波器的设计
    频率响应的意义\[x(n)=sin(0.01\pin)\\H(z)=\frac{0.05+0.05z^{-1}}{1-0.9z^{-1}}\]n=0.:199;%取两百个点x=sin(0.01*pi*n);%2pi/T=omega=0.01pi,故T=200(所以一个周期采样了200个点)b=[0.05,0.05];a=[1,-0.9];%b是系统响应z变换的分子系数a是分母系数......
  • 一文讲透DevOps理论体系的演进
    一、前言当前,我国处于以信息化、数字化、网络化、智能化为特征的科技变革浪潮中,企业数字化转型大势所趋,那么作为支撑企业IT运转的运营体系也在向多元方向发展,比如DevOps(研发运营一体化)、AIOps(智能运维)、DataOps(数据研发运营一体化)、MLOps(机器学习研发运营一体化)、BizDevOps......
  • 一文讲透DevOps理论体系的演进 | 京东云技术团队
    一、前言当前,我国处于以信息化、数字化、网络化、智能化为特征的科技变革浪潮中,企业数字化转型大势所趋,那么作为支撑企业IT运转的运营体系也在向多元方向发展,比如DevOps(研发运营一体化)、AIOps(智能运维)、DataOps(数据研发运营一体化)、MLOps(机器学习研发运营一体化)、BizDevOps(......
  • Convolutional neural network (CNN)–extreme learning machine (ELM)
    1.介绍论文:(2020)Neuralnetworksforfacialageestimation:asurveyonrecentadvances.地址:http://link.springer.com/article/10.1007/s10462-019-09765-w针对问题:软生物识别技术在现实世界中的应用日益增多,已成为研究人员感兴趣的一个新领域。它包括对年龄、性别、伤疤、......
  • ELIC: Efficient Learned Image Compression with Unevenly Grouped Space-Channel Co
    abstruct\(\quad\)受能量压缩表现的启发,提出了不均匀通道情况自适应编码.结合不均匀分组模型和现有上下文模型,获得一种空间通道上下文自适应模型,来提高编码性能,而不影响其运行时间。\(\quad\)这种模型支持预览解码和渐进解码。introduction学习图像压缩中最重要的技术联合前......
  • 【CVPR2023】Learning A Sparse Transformer Network for Effective Image Deraining
    论文:https://readpaper.com/paper/4736105248993591297代码:https://github.com/cschenxiang/DRSformerTransformer模型通常使用标准的QKV三件套进行计算,但是部分来自K的token与来自Q的token并不相关,如果仍然对这些token进行特征聚合计算会影响图像修复的性能。......
  • Tabular Value-Based Reinforcement Learning
    ReadingNotesaboutthebookDeepReinforcementLearningwrittenbyAskePlaatRecently,IhavebeenreadingthebookDeepReinforcementLearningwrittenbyAskePlaat.ThisbookisagoodintroductiontothetheoryofDeepReinforcementLearning.Andit......
  • DevOps 路线图
    有一天我发现了一些有创造力的社区和这些有创造力的工程师设计的流程图,很惊喜很喜欢,就把他们留存了下来。......
  • Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh
    时间序列分析在金融和医疗保健等领域至关重要,在这些领域,理解随时间变化的数据模式至关重要。在本文中,我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库为从预测到模式识别的任务提供了强大的工......
  • DSPLearning_day02--卷积、互相关和差分方程求解的matlab实现
    卷积实现\[y(n)=x(n)*h(n)\\y(n)=\sum_{m=-\infin}^{\infin}x(m)h(n-m)\]%确定第一个序列的x轴和y轴坐标nx=[0:1];x=[12];%确定第二个序列的x轴和y轴坐标nh=[0:2];h=[321];%conv是matlab自带的对两个序列进行卷积的函数y=conv(x,h);%注意配好......