• [分享交流] 人工智能-01 AI基础
    人工智能-01 AI基础持续更新,欢迎批评指正。本文旨在抛砖引玉,更详细的介绍仍然需要大家参考其他专业资料。AI初识人工智能、机器学习是一个大的研究领域,涉及计算机、软件、数理统计、概率论、模式识别等多个学科,应用范围也非常广泛,如图像分类、人脸识别、物体检测、语音识别、自然语言处理、计算机视觉等。首先大概了解一下人工智能、机器学习、深度学习的概念和相互关系。人工智能:希望机器能够像人类的大脑一样思考,并作出反应。机器学习:从大量的数据中找出规律,自动地学习出算法所需的参数。深度学习:机器学习的技术分支之一,主要是通过搭建深层的人工神经网络来进行知识的学习,输入数据通常较为复杂、计算量大。参考:cid:link_17AI发展历程人工智能发展简史:cid:link_38cid:link_12cid:link_19cid:link_25浅谈人工智能的下一个十年:cid:link_6什么是机器学习:cid:link_20AI工程应用:cid:link_21AI技术业界洞察分析:https://linstar.huawei.com/TI/report/details/529362f318cf4bfba1e75c1641b2060fAI应用开发流程AI应用生命周期参考华为云的软件全生命周期管理,软件生命周期经历了需求/规划、开发、测试、发布、运维、运营6个主要阶段,和传统产品的生命周期基本能一一对应起来。AI应用的开发也属于软件开发范畴,所以这里主要看一下AI应用的开发上线阶段。机器学习需要大量的数据做训练,并持续去迭代模型,所以AI应用和其他应用的开发略有差异,参考华为云的Modelarts一站式AI开发平台介绍,看看AI应用的开发有哪些流程。 从上图可以看出,首先需要训练数据,然后根据网络设计模型结构,把数据送给设计的网络去训练得到模型,训练过程中不断迭代优化模型,最终将模型部署上线提供服务,最后进入运维环节。Modelarts还提供了市场功能,可以把你的数据集、算法、模型等资产发布出去供其他人订阅使用,这样对于类似的应用场景(如车牌识别、人脸检测、花卉识别等)就增大了资产的复用性。Modelarts官方文档:cid:link_14数据集准备机器学习开发首先需要准备数据集,数据尽可能来源于真实场景。模型的质量越高,对数据集的需求量就越大、数据质量要求也就越高,比如物体识别场景就需要尽可能收集不同角度、背景、光照的样本数据。当数据采集和接入之后,数据一般是不能直接满足训练要求的。为了保障数据质量,数据准备工作还包括收集数据、标注数据、清洗数据、提取特征、存储数据等。数据集可以是业界共用的(比如手写数字识别数据集),也可以是自己采集、制作的,也可以是网络爬虫获取的,等等。注意一点,数据收集需要保证合法性,满足隐私保护等相关法律条例,不泄露用户数据和隐私,保证数据的安全性,境外收集数据还有其他法律法规需要关注。参考:cid:link_3模型训练AI模型的本质是一个函数,函数包含大量的参数,凭借我们熟悉的知道自变量和因变量,逻辑推导y=f(x)的表达式这种方式是不可行的,因为数据量太大了,这时只能通过训练的方式来拟合一个比较接近的函数。所以,模型训练也称模型开发,简单点说就是从数据中找算法,这个算法和传统的贪心、穷举算法不同,不是人为设计的,而是从数据中来的。模型开发过程实际就是构建一种模型结构,基于种深度学习框架搭建模型,接着在计算资源上训练模型,得到模型后对其测试比较不同模型的性能。性能指标除正确率、错误率、准确率、召回率这些基本指标外,还有训练时间、预测时间、CPU/GPU资源效率等。模型结构:贝叶斯、线性模型、支持向量机、全连接神经网络、卷积神经网络等。深度学习框架(引擎):pytorch、tensflow、caffe、mindspore、keras等计算资源:CPU/GPU/Ascend、单机/分布式除上面基本模型训练操作,模型开发过程中对模型的版本管理、增量训练、模型评估、元数据管理、可视化这些都属于训练的工作。推理预测AI模型开发完成后,可以将模型创建为AI应用,将AI应用快速部署为推理/预测服务,通过web应用或者API的形式对外提供服务。其他产品可以调用API的方式把AI推理能力集成到自己的IT平台中。部署方式常用在线服务、批量服务、边缘服务。简单理解,在线服务就是把服务部署在云端,大家都去云端请求服务;批量服务就是可以对批量数据进行推理;边缘服务就是把服务部署到带有计算能力的边缘设备上,在靠近用户侧提供算力把数据处理了,如手机设备。例如智能音箱,可以在设备端部署一个简单模型来接收唤醒指令,而将后续复杂的语音交互发送到云端的复杂模型进行处理。服务部署后还需要运维监控,通常可以部署在自己的服务器上,也可以部署到华为云、阿里云、AWS等云平台上,将环境的维护交给第三方云厂商托管。(欧洲电信标准协会(ETSI)对边缘计算的定义:在移动网络边缘提供IT服务环境和计算能力,强调靠近移动用户,以减少网络操作和服务交付的时延,提高用户体验。)边缘服务:cid:link_24华为modelarts技术架构:cid:link_29IEF边缘部署平台:cid:link_9MLOps从AI开发流程看,从零开始到上线一个模型,主要经历了系统设计、数据集准备、模型训练、模型评估、服务部署、运维监控等阶段。这几个阶段都需要专业的工具和知识,业界基于不同AI开发阶段,整合了人工智能一站式开发平台,将设计、开发、运维有机结合起来,你可以在一个平台上完成这一系列动作。MLOps,机器学习操作,就是机器学习时代的DevOps。主要作用就是建立一个标注化的模型开发、部署、运维流程,通过缩短开发部署的时间来更快的软件迭代。MLOps的迭代开发模式和上面modelarts平台提供的的开发流程是不是很相似呢。现在谷歌、亚马逊、阿里、华为等都有自己的AI开发平台,如华为modelarts平台提供的内置模块workflow。AI开发平台提供的关键作用有:数据处理:实现数据集的特征组合、筛选和转换,从数据集中提取关键特征,供模型训练使用。模型训练:提供AI算法框架,提交训练任务,提供GPU、CPU训练计算供开发者选择。模型管理:查看模型包的详细信息、删除模型、下载模型等管理。推理服务:模型发布到推理框架上,开始对外提供AI服务。 MLOps介绍:cid:link_15MLOps平台对比:cid:link_28ML开发流程:cid:link_0ML涉及的模块:cid:link_1AI开发基本过程:cid:link_26AIOps业界洞察:cid:link_7从听云科技看AIOps: cid:link_8ModelOps行业洞察与模型开发流水线AI Factory介绍:cid:link_4AI应用类型AI模型分为判别式AI(Discriminative AI)和生成式AI(Generative AI)。判别式AI关注的是对数据进行分类或建立模式识别的任务。它的目标是学习输入数据与其对应的标签或类别之间的关系。判别式模型直接对条件概率分布进行建模,例如给定输入x,预测输出y的条件概率P(y|x)。常见的判别式模型包括逻辑回归、支持向量机(SVM)、神经网络等,常见的应用如图像分类、物体检测、房间预测、物体跟踪等。生成式AI关注的是对数据进行建模,以便能够生成新的具有相似分布的数据样本。生成式AI(生成式人工智能)是指使用AI 来创作新内容,例如文本、图片、音乐、音频和视频。生成式模型的目标是学习联合概率分布P(x, y),其中x是输入数据,y是对应的标签或类别。生成式模型可以通过学习数据的分布特征来生成新的数据样本,例如生成对抗网络(GAN)、变分自编码器(VAE)等,常见的应用如ChatGPT、Sora等。随着ChatGPT、Sora的迅猛发展,生成式AI逐渐成为研究新热点。AI开发平台架构以Modelarts的架构为例理解AI平台架构,如下图所示,从底层往上次看,依次是硬件提供计算、网络、存储等基础资源;异构计算架构提供分布式调度能力;AI计算框架支持多种引擎,如常用的pytorch、tensflow、mindspore等;上层是数据管理、训练、推理等微服务。基于这些微服务就可以开发各种各样的行业应用。 硬件基础硬件基础资源包括计算、存储、网络等,这里重点介绍一下计算资源。深度学习最重要的就是数据和运算。数据越多,理论上模型就越精确;运算更快,模型迭代就越快,服务上线周期越短。人工神经网络就是通过构建具有很多隐层的模型,通过海量的训练数据,来确定模型参数,最终提升模型性能。这种算法的特点决定了对训练数据量和计算能力的要求。算力方面,当前流行的X86和ARM的传统CPU处理器架构往往需要数百甚至上千条指令才能完成一个神经元的处理,但对于并不需要太多的程序指令,却需要海量数据运算的深度学习的计算需求,这种CPU结构就略显吃力,因此GPU处理器在这种特殊的计算模式下就显示出了优势。图形处理器GPU最初是运行绘图运算工作的微处理器,可以快速地处理图像数据。后来科学家发现,其海量数据并行运算的能力与深度学习需求不谋而合,因此,被最先引入深度学习。如同线性代数,只需要基本的加减乘除方法即可快速的解决线性方程求解问题。分布式计算能力也应用于处理海量数据,提升计算速度。分布式训练:cid:link_10CPU/GPU/NP:http://3ms.huawei.com/km/groups/3823811/blogs/details/9090571?l=zh-cn&ctype=nullcid:link_22深度学习框架什么是深度学习框架?百度百科介绍:在深度学习初始阶段,每个深度学习研究者都需要写大量的重复代码。为了提高工作效率,这些研究者就将这些代码写成了一个框架放到网上让所有研究者一起使用。接着,网上就出现了不同的框架。随着时间的推移,最为好用的几个框架被大量的人使用从而流行了起来。简单来说就是工具、库、算法,作一个简单的比喻,一套深度学习框架就是一套积木,各个组件就是某个模型或算法的一部分,你可以自己设计如何使用积木去堆积符合你的工程。常用的深度学习框架有pytorch 、tensorflow、caffe、spark、mxnet等,不同框架有其自身的优缺点,选择一个合适的框架能起到事半功倍的作用,开发者可以根据业务和自身对框架的熟悉程度选择,用户可以在各个框架的官网上了解框架的详细信息。明确这些流行的框架都支持在不同计算资源上训练、推理。 深度学习框架:cid:link_11上层服务AI开发流程主要包括数据集准备、训练和推理,其实这三个大类细分还有很多地方可以深入研究。比如在数据管理里面涉及数据集标记、数据处理、团队标注等;在训练里面包括算法开发管理、分布式训练、训练版本/实验对比、模型评估等;在推理里面包括在线部署、边缘部署、模型管理、模型转换、模型压缩等。这些服务可以独立提供使用,也可以有机地组合起来,提升了通用场景的开发效率。再加上AI应用市场gallery,把算法、模型、数据集等作为资产发布到市场,让他人可以订阅使用,提升资产的复用性。其他参考资料机器学习首先是数学问题,或者说是概率问题。了解甚至掌握一些数学基础对学习和理解AI是十分必要的。基础教程Pytorch深度学习实践:cid:link_27AI基本概念:cid:link_18孙健老师课程(数据推导过程居多) cid:link_37机器学习笔记:cid:link_23重要理论马尔可夫链:cid:link_30神经网络:cid:link_33BP算法:cid:link_34卷积:cid:link_31傅里叶变换:cid:link_16cid:link_32小波变换:cid:link_35cid:link_36
  • [问题求助] DevEco studioDev studio 有没有类似于Cline辅助开发插件?
    DevEco studioDev studio 有没有类似于Cline辅助开发插件?能让新手快速上手
  • [热门活动] HCDG城市行上海站-DevOps专场技术实践沙龙圆满闭幕
    近日,HCDG城市行上海站-DevOps专场技术实践沙龙活动圆满举办。活动特邀华为云DTSE、华为云技术专家以及观测云技术专家与开发者一起分享交流开发运维、持续集成、持续部署、可观测性等理念。各位专家与开发者一起展开动手实践活动,基于华为云CodeArts一站式开发平台实现开发全流程的体验。​活动开场,华为云上海DTSE介绍了DevOps的基本理念,不同的工具(Gitlab、Jira、Jenkins等)之间的差异,华为云CodeArts一站式开发生产线的基本能力,如需求管理、代码托管、代码检查、持续交付、持续发布、编译构建、部署、运维,以及制品仓库、测试、wiki文档等能力,将开发流程统一到一个应用中,即开即用,端到端打通开发流程,让开发者更专注于业务。▲ 华为云开发者联盟DTSE专家接着华为云高级技术讲师深入分享了华为X项目的DevOps实践,并基于CodeArts进行实操演示。他详细阐述了华为X项目DevOps全景图,包含需求、设计、开发者自测、集成测试、验收测试、发布、运维等流程,他详细讲解了各个流程涉及的活动、工具和标准。接着他以流水线为例,介绍了华为代码合入的流程,他指出,华为内部合入代码审核标准极高,需要代码检查、3人以上review、问题单、门禁等都通过。同时他指出,持续规划、持续集成、持续部署、持续测试,都是单模块能力的配置与使用,连续性、可视化、自动化程度低,华为云CodeArts实现了整个链条自动化,基于流水线完成CI/CD的最后一公里,实现端到端的DevOps流程,让流水线成为软件开发工具链中的一等公民。他通过实操演示,展示了华为云CodeArts工具链的使用方法,让现场开发者对华为云CodeArts产品的操作和DevOps理念有了更直观的认识。▲ 华为云高级技术讲师随后,观测云产品架构师刘锐为现场开发者带来了关于Java服务可观测性最佳实践的分享。首先刘锐老师指出分散式的监控系统面临的挑战,一体化监测平台是未来发展的必然趋势,同时介绍了观测云产品的核心优势。观测云产品构建了端到端全链路追踪分析平台、强大的用户体验感知平台,拥有超过 400+ 技术栈支持,包括数据采集、观测模板和监控配置,支持所有主流的编程语言和前端、客户端工程。接着刘锐老师演示了观测云产品在JAVA 服务可观测的案例,让现场开发者对如何提升服务可观测性有了深刻的理解。▲ 观测云产品架构师刘锐此次DevOps专场技术实践沙龙得到了现场开发者的热烈响应和高度评价。参会者纷纷表示,通过此次活动,他们对DevOps理念和华为云CodeArts软件开发平台有了更深入的了解,同时也收获了许多实用的技术和经验。华为云后续也将继续举办类似的技术沙龙活动,为开发者提供一个交流学习、共同进步的平台,为行业发展注入更多活力和动力HCDG(Huawei Cloud Developer Group 华为云开发者社区组织),是基于城市圈和技术圈,由开发者核心组自发开展的开放、创新、多元的社区技术交流组织。致力于帮助开发者学习提升、互动交流、挖掘合作,推动技术应用与本地产业结合、数智化转型和开发者文化发展。扫描下方二维码加入华为云HCDG▼▼▼
  • [技术干货] Devops-01-devops 是什么?【转】
    详细介绍一下 devopsDevOps是一种软件开发和IT运维的文化、实践和方法论的结合,旨在改进开发团队和运维团队之间的协作,以实现更快、更可靠的软件交付。DevOps的目标是通过自动化、共享和持续反馈来提高软件交付的速度、质量和效率。关键概念:协作 (Collaboration):DevOps强调开发和运维团队之间的协作,以减少隔阂和提高信息共享。团队应该共同负责整个软件交付过程。自动化 (Automation):自动化是DevOps的核心原则之一。通过自动化重复性的任务,如构建、部署、测试和监控,可以提高效率并降低错误。持续集成 (Continuous Integration - CI):CI是一种实践,开发人员将其代码频繁集成到共享存储库中,并通过自动化构建和测试流程来验证新代码的正确性。这有助于尽早发现和解决问题。持续交付 (Continuous Delivery - CD):CD建立在CI的基础上,旨在确保软件随时都是可交付的状态。开发团队可以通过自动化流程在任何时候将软件推送到生产环境。持续部署 (Continuous Deployment):持续部署将持续交付的概念推向极端,每次通过CI/CD流水线后,软件都会自动部署到生产环境,减少人工干预。监控和日志 (Monitoring and Logging):监控和日志是DevOps中不可或缺的一部分。通过实时监控和记录应用程序的运行状况,团队可以更快地发现和解决潜在问题。基础设施即代码 (Infrastructure as Code - IaC):IaC是通过代码来管理和配置基础设施的概念。它允许团队将基础设施定义为可维护的代码,并通过版本控制进行管理。为什么需要 devops,有哪些优缺点?DevOps(Development and Operations)是一种软件开发和运维领域的文化、实践和方法论,旨在通过促进开发团队和运维团队之间的协作和整合,实现快速、可靠的软件交付和运维。为什么需要 DevOps?加速软件交付:传统的软件开发模式中,开发和运维之间存在较大的沟通和协作障碍,导致软件交付周期较长。而 DevOps 强调自动化、持续集成和持续交付,可以大大加快软件交付的速度。提高软件质量:通过持续集成、持续部署和自动化测试等实践,DevOps 可以确保代码质量和系统稳定性,降低软件出错的风险,提高软件的质量。促进团队协作:DevOps 强调开发团队和运维团队之间的紧密合作和协作,打破了传统的“开发者 vs 运维者”的壁垒,实现了更加密切的团队协作和沟通。优化资源利用:DevOps 强调自动化和标准化,可以有效优化资源的利用,减少手工操作和重复劳动,提高团队的生产效率。快速响应变化:随着市场和用户需求的变化,软件需要快速迭代和更新。DevOps 可以帮助团队快速响应变化,及时发布新功能和修复 bug,保持软件的竞争力。DevOps 的优点:快速交付:DevOps 可以加速软件的交付周期,使得新功能和更新可以更快地上线。高质量软件:通过持续集成、自动化测试等实践,DevOps 可以提高软件的质量,降低出错的风险。团队协作:DevOps 促进了开发团队和运维团队之间的协作和沟通,提高了团队的整体效率和生产力。资源优化:通过自动化和标准化,DevOps 可以优化资源的利用,减少手工操作和浪费。快速响应变化:DevOps 可以帮助团队快速响应市场和用户需求的变化,保持软件的竞争力。DevOps 的缺点:学习曲线:实施 DevOps 需要团队成员具备一定的技术水平和工具使用经验,存在一定的学习曲线。文化变革:DevOps 需要对组织文化和团队协作模式进行改变,可能会遇到一些团队成员的抵触和阻力。复杂性:实施 DevOps 需要涉及多个方面的技术和实践,涉及到自动化、持续集成、持续交付等多个环节,具有一定的复杂性。工具选择:DevOps 涉及到多种工具和技术的选择和配置,需要根据具体的项目和团队需求进行选择,可能会存在一定的挑战。安全性风险:自动化和持续集成可能会增加一些安全风险,如代码漏洞、配置错误等,需要加强安全意识和控制措施。常见的流水线开源实现除了 jenkins,还有哪些?介绍一下除了 Jenkins 外,还有一些其他流水线开源实现工具,它们在自动化构建、测试和部署方面也有着广泛的应用。以下是几个常见的流水线开源实现工具:GitLab CI/CD:GitLab 是一个集成了代码仓库管理、项目管理和持续集成/持续部署功能的平台。其内置的 CI/CD 功能可以方便地创建和管理流水线,支持基于 GitLab 提供的版本控制功能进行构建、测试和部署。GitLab CI/CD 集成度高,与代码仓库紧密结合,提供了丰富的特性和灵活的配置选项。Travis CI:Travis CI 是一个托管式的持续集成服务,支持与 GitHub 和 Bitbucket 等代码托管平台集成。开发者可以在配置文件中定义构建、测试和部署任务,Travis CI 会自动根据提交记录或 Pull Request 触发流水线。Travis CI 简单易用,适合小型项目和个人开发者使用。CircleCI:CircleCI 是另一个托管式的持续集成服务,支持与 GitHub 和 Bitbucket 等代码托管平台集成。CircleCI 提供了可配置的流水线模板和丰富的插件支持,可以灵活地定制构建、测试和部署流程。CircleCI 还提供了分布式执行环境和缓存功能,可以加速构建过程。Apache Maven:Apache Maven 是一个用于 Java 项目的项目管理和构建工具,它内置了一些标准的构建生命周期和插件,支持自动化构建、测试和部署。Maven 的配置文件(pom.xml)可以定义项目的依赖关系、构建目标和部署配置,开发者可以通过 Maven 实现简单的流水线功能。Gradle:Gradle 是另一个用于 Java 项目的项目管理和构建工具,它基于 Groovy 和 Kotlin 编程语言,提供了灵活、高效的构建配置方式。Gradle 支持自动化构建、测试和部署,并且可以与持续集成平台集成,实现更加复杂的流水线功能。转载自https://www.cnblogs.com/houbbBlogs/p/18084087
  • [技术干货] DevOps 和 SRE究竟有什么区别【转】
    有朋友提到职业发展放心的时候,涉及到 DevOps 和 SRE 话题。几年前我接触这两个概念,也会区分的不是那么明确,但也没人讲的很清楚。目前 DevOps 和 SRE 已经是大热的方向,但发现身边还是有人存在混淆情况,这里给出一些分享,来区分这两块。最常见的误区:DevOps 新概念,好高级哦SRE 是高级版 DevOps运维可以轻松转身 DevOps 工程师我们具体看看吧。一、DevOps 和 SRE 定义DevOps 是字面上 Dev 开发 / Ops 运维两者组合, 严格意义上 DevOps 如下(via DevOps - Wikipedia):DevOps(Development 和 Operations 的组合词)是一种重视“软件开发人员(Dev) ”和“IT 运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。SRE 全称是 Site Reliability Engineering,最早是由 Google 提出,并且在其工程实践中发扬光大。 他们还出了一本同名书籍「Site Reliability Engineering」, 让这个理念在互联网工程师圈子里广泛传播。Google 对 SRE 解释是(via Site Reliability Engineering - Wikipedia):Site reliability engineering (SRE) is a discipline that incorporates aspects of software engineering and applies that to operations whose goals are to create ultra-scalable and highly reliable software systems.我将其翻译翻译为中文:网站稳定性工程师是致力于打造「高扩展、高可用系统」,并将其贯彻为原则的软件工程师。从定义来看,DevOps 是文化、运动和惯例,而 SRE 是有严格任职要求的职位。 文化是软性定义,文化有更多概念可以捏造,而 SRE 定义精准,就少了想象空间(也可能 SRE 门槛高 )。 按 Google 给出的说法是,SRE 工程师实践了 DevOps 文化。这个观点没错,但是国内的 DevOps 逐步独立出 DevOps 工程师, 所以在本文,我着重讨论的是 DevOps 工程师和 SRE 工程师两种职位对比。<br/>二、两者的职能不同DevOps 文化,那么就没有一个具象职能要求。现在不少公司将 DevOps 职能单独抽取出来,称之为 DevOps 工程师。 那让我们看看 DevOps 工程师关心什么:DevOps 文化目的是提交交付速度, DevOps 工程师就自然会关心软件 / 服务的整个生命周期。一个简单的公式:速度 = 总量 / 时间,添上工程行业术语,即 交付速度 = ((功能特性 * 工程质量) / 交付时间) * 交付风险。功能特性交给产品经理和项目经理管理,DevOps 工程师需要关心剩下几个因素:工程质量 / 交付时间 / 交付风险。 DevOps 工程师职能如下:管理应用全生命周期(需求、设计、开发、QA、发布、运行)关注全流程效率提升,挖掘瓶颈点并将其解决自动化运维平台设计和研发工作(标准化、自动化、平台化)支持运维系统,包括 虚拟化技术、资源管理技术、监控技术、网络技术SRE 关键词是「高扩展性」「高可用性」。高扩展性是指当服务用户数量暴增时, 应用系统以及支撑其服务(服务器资源、网络系统、数据库资源)可以在不调整系统结构,不强化机器本身性能 ,仅仅增加实例数量方式进行扩容。高可用性是指,应用架构中任何环节出现不可用时,比如应用服务、网关、数据库 等系统挂掉,整个系统可以在可预见时间内恢复并重新提供服务。当然,既然是「高」可用, 那么这个时间一般期望在分钟级别。SRE 职能可以概括为以下:为 应用、中间件、基础设施等提供 选型、设计、开发、容量规划、调优、故障处理为业务系统提供基于可用性、可扩展性考虑决策,参与业务系统设计和实施定位、处理、管理故障,优化导致故障发生相关部件提高各部件资源利用率三、工作内容不同职责不同导致两个职位工作内容也不尽相同,我将 DevOps 工程师和 SRE 工程师职能列举如下:DevOps设定应用生命管理周期制度,扭转流程开发、管理 开发工程师 /QA 工程师使用 开发平台系统开发、管理 发布系统开发、选型、管理 监控、报警系统开发、管理 权限系统开发、选型、管理 CMBD管理变更管理故障SRE管理变更管理故障制定 SLA 服务标准开发、选型、管理 各类中间件开发、管理 分布式监控系统开发、管理 分布式追踪系统开发、管理 性能监控、探测系统(dtrace、火焰图)开发、选型、培训 性能调优工具很有趣的对比,DevOps 和 SRE 都会关心应用生命周期,特别是生命周期里面中变更和故障。 但是 DevOps 工作内容是主要为开发链路服务,一个 DevOps Team 通常会提供一串工具链, 这其中会包括:开发工具、版本管理工具、CI 持续交付工具、CD 持续发布工具、报警工具、故障处理。 而 SRE Team 则关注更为关注变更、故障、性能、容量相关问题,会涉及具体业务,产出工具链会有: 容量测量工具、Logging 日志工具、Tracing 调用链路跟踪工具、Metrics 性能度量工具、监控报警工具等。四、DevOps 和 SRE 关系DevOps 首先是一种文化,后期逐渐独立成一个职位;SRE 一开始就明确是一个职位; 不少同学把 DevOps 和 SRE 搞混,是被两者表象锁迷惑,看上去这两者都有的工具属性、自动化要求也相似。 甚至有一些开发同学把这类运维工作都统一理解为:服务器 + 工具 + 自动化。这是盲人摸象,管中窥豹。从技能上来说,两者都需要较强的运维技能。 在职业发展天花板上,DevOps 可能缺乏 SRE 在一些专业领域的技能: 计算机体系结构能力;高吞吐高并发优化能力;可扩展系统设计能力;复杂系统设计能力;业务系统排查能力。 两者都需要软实力,但是 SRE 面临复杂度更高,挑战更大,要求也更高:分析问题、解决问题能力战胜困难决心面对挑战热情自驱学习DevOps 具有普遍意义,现代互联网公司都需要 DevOps,但是并非所有团队对高可用性、高扩展性存在需求,它们不需要 SRE。DevOps 工程师掌握相关技能之后,也有机会可以发展为 SRE 工程师。而一位合格 SRE 工程师,在有选择情况下面,我相信不会去转型为 DevOps 工程师。从专业背景来看,无论是 DevOps 还是 SRE 工程师,都需要研发背景,前者需要开发工具链,后者需要有较强架构设计经验。 如果有运维工程师想转型成为 DevOps 或者 SRE,那么需要补上相关技术知识。 毕竟,不是会搭建一套 Jenkins + Kubernetes 就可以自称为 DevOps / SRE 工程师。
  • [热门活动] 【HCSD】校园行——天津海河教育园区站专场学习笔记】
    这次进行的是CodeArts线上产品体验,那么CodeArts是什么呢?CodeArts是华为自研一站式软件开发生产线,软件开发全流程覆盖:支持需求管理、代码托管、流水线、代码检查、编译构建、部署、测试、制品仓库等全生命周期软件开发服务;开箱即用,云上开发。长话短说:这次体验了一把【Devops全流程体验-凤凰商城项目】根据官方文档的指导完成华为端到端(HE2E)DevOps实践:cid:link_0凤凰商城项目方案架构服务构成方案可以由5个独立开发、测试和部署的微服务组件组成:Web用户端服务器Web管理端服务器后台订单批处理程序订单缓存订单数据库项目结构  软件开发生产线:需求管理,代码托管,代码检查,编译构建,制品仓库,部署,测试计划,流水线  其它组件和服务:统一身份认证服务,容器镜像服务,弹性云服务器(或者云容器引擎)这些让我对 devops 有了一个初步的了解,对此也觉得这种开发方式很不错,非常符合实际的全流程环节:设计——开发——测试——部署。实操环节对于一个全流程开发来说,每个环节都有存在的必要~这里我就说说我在体验过程中的感觉。在进行代码开发的时候,修改和提交代码时在我输入 #之后,会出现一个可以滑动的选项栏来方便选定,但是我输入我需要的编号,里面却没有。在我直接复制编号之后,查看Task名称,在详情页中是可以看到状态自动变为“已解决”。是因为不包含 task 的搜索吗?     2. 在步骤八,配置流水线的情况编辑phoenix-workflow流水线的时候,也需要进行参数配置,我发现他原本的 dockerOrg 是不符合要求的,感觉可以在文档上添加一下说明。     3. 文档步骤八的结构                 其中 2 的描述是基于我们应用是部署在CCE上的,对于使用ESC弹性云服务器的人来说,对于这个可能会不理解。按照1到2的排列不合适,可以说明一下前提~    4. 这是第一次进行 devops 全流程的体验,和了解了整个过程,也是有所收获。对于我个人,整个开发流程来说,对流程的看法也不是很有见解。但是真的体验过程有点顺理成章的感觉
  • [交流吐槽] CodeArts DevSecOps系列插件——助力更高效的软件研发
    一、前言DevOps的概念想必大家都不陌生,它是一组过程、方法与系统的统称,通过它可以对交付速率、协作效率、部署频率速率、质量、安全和可靠性等进行提升改善。相比传统的软件开发模式,它是一种工作方式和文化的转变,把开发者和IT运营人员衔接起来,紧紧围绕产品生命周期配合,优化改进交付效率与质量。近年来随着网络犯罪的增加,网络安全和个人隐私数据安全越来越得到重视,带来了新的名词DevSecOps,DevSecOps是在DevOps下的增强,它将安全植入到DevOps的每个实践环节中,使安全实践和测试前移,能更早、更快、更便捷的发现解决这些问题,最大程度减少软件问题和漏洞。二、华为云CodeArts 光有上面的DevSecOps这些理念还是不够的,最终还是得通过一系列的工具来帮助我们,即DevSecOps平台,它是当下软件开发所需要的工具链集合。如何让软件工具更好的匹配业务快速发展的速度,发挥最大的作用为企业创造价值,有很多企业在这方面做了积极探索,华为云就是其中之一。华为云CodeArts集华为30年研发实践、研发理念和研发工具,支持web开发、移动App开发、微服务开发、云原生应用开发、嵌入式开发等典型研发场景,提供了一站式DevSecOps软件开发生产线,包括项目管理、代码托管、开发环境、代码检查、编译构建、测试、安全可信检测、制品生成、部署和运维等环节,帮助构筑更加安全可信、高质量、高效率的软件生产线。目前,CodeArts已吸引来自政府、金融、教育、软件产品公司、嵌入式企业等十多个行业的200W+开发者使用。三、CodeArts DevSecOps系列插件      作为一名程序员,很多时候都在与IDE打交道,一款好的IDE除了能让我能更加愉快的敲代码外,还能帮助我提升开发效率,省出更多的时间进行思考和提升。华为云推出的CodeArts IDE,提供更好的代码阅读体验,索引速度更快,跳转更准确,其中更是内置华为云API开发套件,提供华为云服务与API的搜索与引用。除了大部分时间在写代码外,开发同学也还需要了解软件端到端的流程工具的配置和使用。以前我经常需要保存多个网址,在本地IDE和多个工具链链接之间来回切换,十分麻烦,有没有更加高效的方式,让我在桌面少操作就完成一些常用的作业呢?华为云CodeArts DevSecOps系列插件,它把常用的研发作业流程全部都集成到了桌面端,使得很多动作我只需在桌面端就能完成了,极大提升我的工作效率。CodeArts DevSecOps系列插件,覆盖DevSecOps端到端的研发作业流程的每个环节,其中有需求管理Req、代码仓管理Repo、本地代码检查CodeCheck、智能编程助手Snap、华为云API、构建流水线Pipeline、自动化测试TestPlan、制品仓Artifact、部署Deploy等。这些插件通过DevOps Foundation进行整合,使得整体在使用中更加便捷高效。如下图所示,在本地编写完代码,使用Req和Repo插件就可以进行需求关联,提交代码后,可以继续在IDE内使用Pipeline插件串联起相关流程进行构建出包部署的动作,让开发同学在桌面端就能完成很多作业,大幅便捷了端到端的研发流程。在编码上,基于CodeArts软件开发生产线和盘古研发大模型的结合,推出的智能开发助手,CodeArts Snap,可以实现自然语言转化成编程语言,如下图所示,通过编写注释就能帮助我们快速生成代码,大幅提高了编码效率。华为云API插件可以帮助更高效、便捷使用华为云服务的API去搭建上层应用。CodeArts Check插件更是经过华为数百亿行代码的验证过的代码质量检测工具,为代码质量和安全保驾护航。这里就介绍这么多,更多的插件细节可以在Huawei Cloud Toolkit官网查看,进入链接cid:link_0就可以去查看相关的插件文档了,移动端也可以扫描识别二维码查看。通过华为云开发者插件,使得开发者在本地桌面连接华为云相关服务,打通了华为云到开发的最后一公里。此外,Huawei Cloud Toolkit除了支持华为云自研的CodeArts IDE,还支持另外两款主流的IDE:IntelliJ和VS Code,为开发同学提供了更稳定、快速、安全的编程体验,快来安装体验一下,让华为云CodeArts重塑软件开发,让每个软件开发者都有自己的开发助手,享受写代码,真正实现效率与生产力的提升。
  • [API集成编排] GDE ADC应用资产包如何在实验室通过GDE STROE合规发布,让客户下载
    目前我们通过GDE ADC编排出来的资产,如何通过GDE STORE合规发布出去呢?可以让客户下载
  • [云运维] DevOps理念的技术本质揭秘(10)
    DevOps(Development+Operations)强调共同对业务目标负责,以实现用户价值作为唯一的评判标准:保证产品功能及时实现、成功部署和稳定使用。1、是一种重视软件开发人员(Dev)和IT运维技术人员(Ops)之间沟通合作的文化、运动或惯例,改善团队之间的协作关系2、是一组过程、方法与系统的统称,包含开发、测试和运维3、用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合4、透过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,按时交付软件产品和服务总的说来:DevOps 是把人员、流程、产品进行结合,给用户提供持续价值的一个过程,既涉及到人员、流程、工具,也涉及到产品。DevOps 最终目的是给客户提供持续交付的价值,流程包括:产品的规划跟踪、软件开发、构建测试、产品部署、运维、监控和优化。通常把 DevOps 这些流程通过一个流水线的方式串联起来称为一个 DevOps 的流水线,其核心目标就是持续给用户交付有价值的产品。简而言之,DevOps不仅涉及技术背景,还包括非技术的文化方面。在软件开发和应用周期中,提供了一个机制或模式来培育“协作”意识,帮助不同角色的成员紧密协作,充分利用现有资源,遵循交付的商业价值,共同对“输出”负责,对质量负责。DevOps的好处与价值对于业务与产品而言,DevOps的好处更多基于持续部署与交付。从组织结构而言,DevOps是部门间沟通协作的一组流程和方法,有助于改善公司组织文化、提高员工的参与感。代码的提交直接触发:消除等待时间,快速反馈每个变化对应一个交付管道:使问题定位和调试变得简单全开发流程高效自动化:稳定,快速,交付结果可预测持续进行自动化回归测试:提升交付质量设施共享并按需提供:资源利用最大化可能的几个关注点DevOps绝不是推荐一定要在某一方面达到极致,而是从“整体”入手,充分激发“体系”的最佳效率。虽然真正实现DevOps的成本高昂,但任何时候都是实现DevOps的最佳时机,因为随着业务发展,成本一定是越来越高的;组织文化上的变革,鼓励不同的个体与部门共同协作,减少“内耗”;合适的DevOps人员(最起码保证在“向DevOps转换阶段”中,研发人员知晓运维,运维人员了解业务);统一的标准、环境、工具、流程,例如:开发/测试环境尽可能地和生产环境保持一致;自动化和持续交付,简化重复性工作和减少不必要的等待涉及多个技术支撑:敏捷开发、持续集成&部署、微服务、容器、云环境等;个体和团队的成效都放在整个产品开发&运维生命周期内来进行评价;DevOps与持续集成、持续交付DevOps的应用场景往往是一个庞大复杂的背景和流程的场景,大都包含一个持续交付流水线。1、开发人员:IDE、Git等开发和编译工具2、版本控制系统:分支策略、语义化版本3、构建服务器:持续集成、代码质量检查4、工件库:存放二进制包5、系统的包管理器:编译或测试环境系统上管理二进制包6、环境一致性7、预发布或生产:预发布环境与生产环境互换(蓝绿发布)8、发布管理:在高程度自动化测试的基础上实践自动化或半自动化(人工介入)部署9、问题管理系统因此,DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。DevOps的技术要点由“持续集成/部署“”一线贯穿,主干开发是进行持续集成的前提,自动化以及代码周边集中管理是实施持续集成的必要条件。换而言之,DevOps 是持续集成思想的延伸,持续集成/部署是 DevOps 的技术核心,在没有自动化测试、持续集成/部署之下,DevOps就是空中楼阁。一个完整的过程1、开发团队接到任务,需要完成一个变更2、为了更加顺利地开发,将这个变更分拆为几个小变更3、开发人员在本地开发并且测试,如果使用了测试驱动开发,在编写功能代码之前会先编写测试,然后编写能够4让测试通过的实际代码4、开发人员将代码提交到企业内部的Git版本控制系统上5、构建服务器获取这个变更并初始化构建流程,单元测试之后,变更可以被发布到二进制库里6、配置管理系统根据“策略”,在测试环境中安装应用了新的变更7、新安装触发自动化回归测试,测试成功后,质量保证团队开始做人工测试8、人工测试通过后,质量保证团队将“已通过”标识给予这个变革9、变更在预发布环境中进行验收测试10、验收测试完成后,预发布环境被切换成生产环境,而生产环境变为新的预发布环境典型的CICD流水线过程1、项目开发编写代码,然后把代码推送到 GitLab 里存储,通过 GitLab 的 hook 使 Jenkins 执行一些 CI 的过程,比如做一些单元测试,构建 Docker image2、再把这个 Docker image 调用 helm 部署到开发环境或测试环境3、在测试环境里通过 Jenkins 触发一个集成测试的功能4、完成后就可以把它部署到生产环境5、通过 Kubernetes addon 的方式,把 Prometheus、Grafana 等监控组件部署到集群里,实现一整套从 CI 到 CD 的监控过程
  • [云运维] DevOps理念的技术本质揭秘(9)
    DevOps 是指组织的开发 (dev) 和运营 (ops) 团队的集成。它涵盖了组织的文化、流程和理念。DevOps 工具有助于促进 DevOps 的核心原则,包括沟通、统一和效率。当与该方法结合使用时,DevOps 工具可实现更快的开发周期和更高的软件质量。本文想要和大家一起来探讨可用于优化 DevOps 生命周期的所有七个阶段的 11 种工具。什么是开发运营工具?DevOps 工具是支持软件开发过程的应用程序。通常,它们也被称为DevOps技术。他们的主要重点是通过项目管理和自动化来增强协作。有几种不同类型的DevOps工具,其中一些概述如下:版本控制工具。 版本控制软件 (VCS) 也称为源代码管理或源代码管理 (SCM)。这些工具跟踪和管理对软件代码所做的任何更改。开发运营自动化工具。 DevOps 自动化工具消除了工作流中重复性任务的负担。有些专注于测试或部署等特定过程,而另一些可能是端到端工具。术语端到端是指从概念化到部署和持续监视的整个开发过程。性能监控工具。这些 DevOps 工具监视应用程序的性能,并帮助管理整个基础结构。它们通常具有强大的报告功能和用于缺陷检测的人工智能(AI)。容器管理工具。 在软件开发的上下文中,容器是打包到可移植环境中的应用程序或软件。它们包含应用程序的库、框架和任何关联的依赖项。容器化使得独立于环境的操作系统 (OS) 在各种环境中运行应用程序成为可能。容器管理工具使开发人员能够打包、监视和更改这些分布式应用程序。配置管理工具。 配置管理是监视和维护系统功能的过程。在 DevOps 中,配置管理有助于确保所有应用程序和服务的性能符合预期。开发运营生命周期(7C)7Cs助记符设备来自这样一个事实,即 DevOps 开发的每个阶段都以连续一词开头。连续性是DevOps的一个重要方面,因此使用无穷循环来象征其生命周期。在DevOps之前,人们依赖于瀑布模型等线性开发方法。瀑布模型要求每个开发阶段在进入下一个阶段之前完成。这会使解决开发后期出现的问题变得困难。相比之下,DevOps 生命周期是迭代开发周期中的一系列自动化工作流。换句话说,工作是小批量完成的,并持续监控、测试和改进。这里的情绪让人想起“不要把所有的鸡蛋放在一个篮子里”的常用短语。如果你所有的鸡蛋都在一个大篮子里,而那个篮子的把手折断了,你就有可能打破所有的鸡蛋。如果你把鸡蛋分成更小的篮子,其中一个失败了,你的风险只会失去几个。适用于 DevOps 生命周期每个阶段的 DevOps 工具以下七个部分将 11 个 DevOps 工具与其各自的流程相匹配。尽管该列表是数字列表,但请记住,DevOps 生命周期的每个阶段都可以在整个项目中多次迭代或重复,直到完成。用于持续开发的开发运营工具 (CD)在 DevOps 生命周期中,持续开发包括软件的规划和编码。在这个开发阶段,两个最流行的DevOps工具是Jira和Git:Jira:尽管规划不需要特定的 DevOps 工具,但许多 DevOps 组织都使用 Jira 等敏捷项目管理软件。敏捷项目管理侧重于持续发布,并在每次迭代中纳入客户反馈。Jira DevOps 模板可以成为管理项目、创建工作流和跟踪错误的高效工具。Git:Git是一个开源版本控制系统,这意味着任何人都可以免费使用它。如上所述,版本控制工具管理应用程序或软件的源代码。Git 是一个优秀的 DevOps 工具,因为它支持非线性工作流和程序员之间的协作。您可以使用 GitHub 弥合开发和运营之间的差距,GitHub 是一个基于 Web 的 Git 代码存储库托管平台。它通过支持票证管理等功能实现进一步协作。用于持续集成 (CI) 和持续交付 (CD) 的 DevOps 工具在DevOps管道中,持续集成要求开发人员将更改(如新功能或错误补丁)提交到源代码。在这个开发阶段最常用的DevOps工具之一是Jenkins:Jenkins:Jenkins是一个基于Java的开源程序。它可以单独用作 CI 服务器,也可以变成支持持续交付的中心。Jenkins 闻名的一些功能包括:广泛的工作流程定制;易于安装;在多台机器上有效地分配工作以进行跨平台开发的能力;数百个插件和集成。用于持续测试的 DevOps 工具在 DevOps 生命周期中,持续测试意味着始终如一地检查开发的软件是否存在错误和缺陷。DevOps 自动化工具对于持续测试特别有用。它们允许质量保证 (QA) 团队通过自动测试执行和跨多个代码库的并行测试等功能来扩大测试范围。硒和竹子是两个最相关的连续测试解决方案:Selenium:Selenium是另一个开源开发工具。它是一个自动化测试框架,用于用常用编程语言(如 Java、Python和 C#)编写测试脚本。它主要用于自动化 Web 应用程序,但您也可以使用它来自动执行基于 Web 的管理任务。Selenium的多功能性提供了跨多个浏览器和操作系统(OS)的自动化支持。Bamboo:Bamboo是一个基于服务器的DevOps工具。它允许用户创建复杂的构建计划并触发它们自动启动。奔步以其与Jira的紧密集成和并行测试功能而闻名。用于持续部署的 DevOps 工具DevOps 生命周期中的持续部署是指将代码部署到生产服务器的阶段。由于这种情况持续发生,因此能够支持快速和频繁部署的 DevOps 工具至关重要。容器管理工具和配置管理工具都有利于持续部署:Docker(容器管理):开发团队可以使用 Docker 应用程序来打包、管理和执行分布式应用程序。Docker的一些关键功能包括标准化的打包格式,与GitHub的紧密集成以及Docker Hub。Docker Hub 通过提供用于轻松发布映像和访问管理的平台来鼓励 DevOps 团队成员之间的协作。Ansible(配置管理):Ansible 是一个开源自动化平台,主要用于配置管理和基础设施编排。 其简约的性质使开发人员、IT 专业人员和管理员易于使用。Ansible 支持创建机器组并控制它们在生产环境中的运行方式。用于持续反馈的 DevOps 工具分析和整合反馈是 DevOps 方法的关键组成部分。持续反馈可实现持续改进。它需要收集内部见解,如员工调查和错误报告,以及外部响应,如支持票证或社交媒体提及。存在多个 DevOps 工具来支持您的持续反馈循环:Jira Service Management: Jira Service Management 是 Jira 平台中内置的 DevOps 工具。其主要目的是通过在单个中心组织来自各种来源的反馈来增强沟通。它允许客户通过小部件、门户、电子邮件或可自定义的帮助中心提交服务请求和反馈。Parlor:Parlor是用于用户关系管理的客户反馈工具。它与活跃用户实时互动,以收集上下文见解。它与以下业务工具集成:支持票务系统,如 ZenDesk;Jira等技术任务管理平台;像松弛这样的通信工具;数据管理程序,如Excel。用于持续监控的 DevOps 工具在 DevOps 管道中,对应用程序的持续监视需要经常检查错误、系统错误、性能问题以及可能影响产品质量的任何其他内容。DevOps 监视工具应支持两种类型的监视:应用程序和服务器。Prometheus:Prometheus 是一个开源的、社区驱动的性能监控数据库,旨在支持持续监控流程。它为开发人员和 QA 团队提供了强大的报告功能和广泛的客户端库。Prometheus 也适用于 DevOps,因为它具有多种数据可视化模式。用于持续运营的开发运营工具连续运行意味着应用程序和服务必须连续运行,没有中断或停机。上述几种工具具有可以帮助您进行连续操作的功能。但是,像Opsgenie这样的事件管理平台可能是有益的。Opsgenie:Opsgenie是一种 DevOps 工具,用于准备、预测和解决服务中断。它与持续监控工具、聊天平台、票务系统和其他业务应用程序集成。Opsgenie 支持计划定制,以确保在发生挑战时通过适当的沟通渠道通知合适的人员。其自动升级功能可确保捕获关键错误。五大关键要点DevOps 阶段不是线性发生的。相反,它们根据需要进行迭代,以确保最高的软件产品质量。DevOps工具不会产生DevOps。他们通过实施开放式协作和持续反馈收集等实践来支持 DevOps 方法。DevOps 自动化工具对于持续开发和测试至关重要,因为它们有助于减少手动任务。开源 DevOps 工具可以成为采用 DevOps 方法的组织的绝佳资源。协作是 DevOps 的支柱。确保您选择的 DevOps 工具支持整个组织的通信和协作至关重要,而不仅仅是您的团队。
  • [云运维] DevOps理念的技术本质揭秘(8)
    DevOps原则DevOps有几个核心原则在发挥作用。主要细分如下:系统思维:系统思维意味着思考整个系统的性能,而不是特定团队的性能。这种心态确保所有团队和员工都对生产优质产品负责,并阻止团队将缺陷传递到下游。文化:成功的DevOps文化通常与改进协作、实验和持续学习的精神联系在一起。这可能意味着团队确保分配时间来改进工作,团队因承担风险而获得奖励,成员能够从团队内外的其他人那里学习。自动化:DevOps非常重视尽可能实现自动化。这可以减少在重复和耗时的任务上花费的时间,并提高部署速度。例如,DevOps团队可以自动化测试过程,以便开发人员能够尽早、频繁地收到反馈。DevOps实践DevOps有几个关键实践。这些实践包括:持续集成(CI):持续集成意味着来自涉众的反馈和修复持续集成到产品中。这既意味着集成修复程序的过程自动化,也意味着创建持续集成的文化。持续交付(CD):持续交付是指对产品(可能是您的代码)的更改被自动集成,从而使产品始终处于可部署状态。这意味着可以在短时间内(每天、每周等)部署代码。持续集成和持续交付通常统称为CI/CD。将这些实践再向前推进一步,连续部署将在产品发布后添加实时监控、测试和更新的例行程序。在DevOps环境中,组织通常发布更小、更频繁的产品更新,这些更新更能响应客户反馈,而不是团队可能部署的大规模、劳动密集型更新。DevOps工具虽然DevOps首先被认为是一种心态,但有几个DevOps工具用于自动化DevOps过程中的各个阶段。这里有一些。Git:Git是一个版本控制系统。在DevOps中,它用于跟踪代码,对于团队成员协作项目和更新现有项目非常有用。Docker:Docker用于将应用程序容器化,即将应用程序转换为单个软件包的过程。Jenkins:Jenkins是用于构建CI/CD管道的工具,开发人员可以在其中构建、测试和部署软件。Kubernetes:一个容器组织者,Kubernete在DevOps中经常使用。
  • [云运维] DevOps理念的技术本质揭秘(7)
    DevOps文化采用DevOps做法可以通过技术来实现流程的自动化和优化,但这一切都需要从组织内部的文化和参与的人员开始。培养DevOps文化的挑战在于需要深入改变人们的工作和协作方式。但是,通过推行DevOps文化,组织可以创造一个有利于高绩效团队成长的环境。协作、可见性和一致性健康的 DevOps 文化的一个标志是团队间能够协作,首要的便是可见性。开发和 IT 运营等不同团队必须能够相互分享 DevOps 流程、优先级和关注点。这些团队还必须能够共同规划工作,并统一与业务相关的成功目标和衡量标准。范围和责任的转变当团队统一时,他们拥有所有权并参与其他生命周期阶段,而不仅仅是他们的角色对应的阶段。例如,开发人员不仅要对开发阶段的创新和质量负责,还要对他们的改变在运营阶段带来的性能和稳定性负责。同时,IT 操作员一定要在规划和开发阶段中包括治理、安全性和合规性。缩短发布周期DevOps 团队通过在短周期内发布软件保持敏捷。因为进度是渐进式的,缩短发布周期可以让计划和风险管理更容易,同时也可减少对系统稳定性的影响。缩短发布周期还可以让组织适应和应对不断变化的客户需求和竞争压力。持续学习高绩效的 DevOps 团队形成了一种成长思维。他们快速失败,然后将经验教训融入到他们的流程中,不断改进,提高客户满意度,加速创新和适应市场。DevOps 是一个旅程,所以总有成长的空间。
  • [云运维] DevOps理念的技术本质揭秘(6)
    DevOps的最初定义DevOps 是开发(Dev)和运营(Ops)的复合词,它将人、流程和技术结合起来,不断地为客户提供价值。DevOps 对团队意味着什么? DevOps 使以前孤立的角色(开发、IT 运营、质量工程和安全)可以协调和协作,以生产更好、更可靠的产品。通过采用 DevOps 文化、做法和工具,团队能够更好地响应客户需求,增强对所构建应用程序的信心,更快地实现业务目标。DevOps的好处采用 DevOps的文化、做法和工具的团队能够提升效率,以更快的速度构建更好的产品,从而获得更高的客户满意度。若要实现以下业务目标,这种改进的协作方式和生产能力不可或缺:DevOps和应用程序生命周期DevOps 影响应用程序生命周期的规划、开发、交付和运营阶段。每个阶段都依赖于其他阶段,并且这些阶段并非特定于角色。在真正的 DevOps 文化中,每个角色在某种程度上都涉及到每个阶段。计划在计划阶段,DevOps 团队构思、定义和描述他们即将构建的应用程序和系统的特性和功能。他们在低粒度和高粒度级别上跟踪从单个产品任务到跨多个产品组合的任务进展。DevOps 团队以敏捷和直观地方式进行规划的一些方法包括创建积压工作 (backlog)、跟踪 bug、使用 scrum 管理敏捷软件开发、使用看板以及使用仪表板直观呈现进度。开发开发阶段包括编码的各个方面(编写、测试、评审)、团队成员集成代码,以及将代码构建为可部署到各种环境中的生成工件。DevOps 团队寻求在不牺牲质量、稳定性和生产效率的情况下快速创新。为此,他们使用高效的工具、自动化单调和手动步骤,并通过自动化测试和持续集成以小增量迭代。交付交付是以一致且可靠的方式将应用程序部署到生产环境中的过程。交付阶段还包括部署和配置构成这些环境的基础结构,该基础机构受到完全治理。在交付阶段,团队定义了具有明确手动批准阶段的发布管理流程。他们还设置了自动入口,用于推动应用程序经历各个阶段,直到提供给客户。这些流程的自动化使这些流程可伸缩、可重复并且可控制。这样,使用 DevOps 的团队就可以轻松、自信、放心地频繁交付。运营运营阶段包括维护、监视和对生产环境中的应用程序进行故障排除。在采用 DevOps 做法时,团队致力于确保系统的可靠性、高可用性,并在加强安全性和治理的同时实现零停机的目标。DevOps 团队希望在问题影响客户体验之前发现问题,并在问题发生时迅速解决问题。保持这种警惕性需要丰富的遥测、可操作的警报以及全面了解程序和基础系统。
  • [云运维] DevOps理念的技术本质揭秘(5)
    关于DevOps学习和运维的十大注意事项1、代码管理,很多公司对代码管理非常头痛,尤其是客户多了,版本就乱,一次升级就成了一场灾难,因此,代码管理确实非常重要。2、项目进展管理,时间、成本和质量是项目管理的三要素,作为项目经理必须做好平衡。也需要协调好甲乙方资源,推进项目的完成。3、问题管理,要常规运用事故管理的模式,对问题进行根源分析,提出改进意见。这里用好PDCA,RCA这些管理工具,非常有必要。4、系统架构的稳定,架构不是一成不变的,也不应有普世标准。在不同时期,不同的体量规模下,淘宝的技术架构也在不断调整,稳定中的迭代发展是必由之路。但无论是什么时期,一个稳定可拓展的架构会让系统运维起来更顺利,体验更好。5、测试问题,我们用的软件不说进行漏洞测试了,就是一些错误都是上线了再去发现。比较欣慰的是,医疗信息化软件未来可能会作为医疗器械进行管理了,这样一来,一定会提升行业对测试工作的重视程度了。6、知识积累及传递,一个公司一个部门多年的实践经验的总结,这些总结需要靠时间的积累,在经验和教训的积累下慢慢沉淀。当你拥有了丰富的行业知识,你也就成了老油条了。一个团队需要从老油条身上提炼出老油来,这样对于公司和单位的能力提升都很有好处。小鲜肉一抹此油,容光焕发呀。7、运维前端可配置,与用户接触最紧密的就是我们的运维工程师,用户对他提出的需求也最多,系统的灵活性体现在他能运用何种工具对所管理的系统进行客户化配置,以适应客户的大量且多样的需求。如果运维工程师啥都干不了,不但影响公司形象,也会大大拉低研发工程师的效率。8、性能监督和度量,监督和度量能够让我们了解系统的瓶颈和改变方向,尤其是利用一些锚点设置,更能了解用户的习惯,促进用户画像数据的产生,从而做到比用户更了解他自己,做出更好的产品。9、团队建设构建协作共进的IT文化,协作共赢,相互信任是DevOps的初衷和追求目标。而要达成这个目标,就需要培养团队成员之间的认同感。这种认同感不仅是在工作中产生,也需要通过文化进行熏陶和培养。10、采用必要的自动化管理工具,很多新的工具确实是当年没有的,一些新技术的运用,也让当年的一些模式和方法需要改进。自动化的工具会让我们工作更有效率,沟通更顺畅。
  • [云运维] DevOps理念的技术本质揭秘(4)
    微服务、容器和DevOps的关系微服务只是一种设计思路,或者说他给出了如何用正确的方法来进行SOA的实施。理论上来讲他的确和DevOps没什么关系,但是从如何实践DevOps的角度来讲,微服务是非常有意义的。此外,随着诸如Spring Cloud以及微软Fabric等SDK的完善,微服务开发模式也逐步完善,实现了概念的落地。Docker可谓是一种敏捷化的虚拟化技术(较之虚拟机而言)。其实微软Fabric或者CloudFoundry也都脱离开容器的概念提供了微服务开发的解决方案,所以这两者并不是强绑定的关系。但是容器用不可变配置架构实现了微服务从开发到运维的质量保真度,这恰好解决了粒度小,数量多的微服务所带来的运维难题。再加上K8S,Swarm等容器云的支持,docker容器已经形成了事实上的标准。如何利用这个强大的运行环境帮助企业敏捷,推进业务数字化,并且加快业务的投产? DevOps为上面所说的开发模式提供了软件生产线。所以总结的来讲,企业业务敏捷是DevOps发展的直接推动力,容器云,以及微服务为DevOps提供了技术可行性。而敏捷帮助提高DevOps工作效能。对于团队的拆分,这个问题真的要结合产品规模来看。团队的拆分有很多办法,贝索斯说的two pizza team,是建议一个团队中的人尽可能少,不要超过两个Pizza能吃饱的规模。用敏捷实践来讲,可以分为多个特性团队,以及维护团队,不同的团队各司其职,合理分工。在我以前的实践中,三个人可以做一个Feature,来交付一个月迭代的工作量。当然将原有的巨石应用分割成更小的微服务是挑战很大的事情。因为理论上的微服务的设计对现有的团队组织结构,以及工程师设计能力都带来了一定的挑战。有些组织按照DDD(领域驱动的设计)的方式去实践微服务,会发现以前一个应用的复杂度变得很高,对项目管理来讲也是一件头疼的事情。现在有个比较新的看法就是,大家宣称做微服务(MicroService)的时候,实际上做的是迷你服务(MiniService)。迷你服务的粒度较之微服务的粒度更粗一些,关注度由一个域Domain,变成了能力。一个迷你服务提供一种能力,这种能力的提供也许是跨越多个域的。最好的方法是以一个团队能承担的任务划定微服务的界限比较好,这样以来,不论是任务管理,代码构建,产品部署都会比较好做。更关注服务的能力,这样也会减少因为跨域而带来的复杂事物处理。
总条数:52 到第
上滑加载中