摘要:听华为云DevCloud首席技术布道师徐毅讲述云原生下的DevOps实践。

本文分享自华为云社区《敏捷开发专家一席谈:云原生技术下的华为云DevOps实践之路》,作者:华为云社区精选 。

DevOps最早在2009年被人提出,愿景非常美好,但真正实施起来困难重重。

随着近几年微服务、容器等技术的兴起,使得企业对DevOps的需求更加迫切,实施变得更加容易,DevOps越来越被接受和重视。

同样,为了应对业务的敏捷发布,应用平台的弹性诉求,商业环境的变化,云原生时代已到来,云原生技术已经应用到企业核心业务。

云原生与DevOps是什么关系?其技术优势如何与DevOps结合,才能更加高效便捷的实施呢?云原生时代下,DevOps的落地会遇到哪些困难?华为云是否有一些实践方案去应对?

华为云社区邀请到了华为云DevCloud首席技术布道师徐毅,听他讲述云原生技术下的DevOps实践,深入了解集华为30年研发经验的华为云DevCloud是如何践行DevOps理念的。

从需求侧、平台侧、商业侧等方面来看,云原生产生的业务背景是什么?

众所周知,很多变革都始于技术。技术经由积累产生势能,这些新的技术释放出很强大的生产力并带来创新,满足用户和客户新需求的爆发,从而需求驱动技术的迅速普及和优化,最终带来商业的繁荣。

云原生应该是云化的延伸。在云的发展初期,并非所有的产品技术都是云原生的,随着云计算技术的不断发展,云原生的应用和系统能够更好的满足需求侧在功能和非功能各方面的诉求。从云到云原生这个过程来看,在当下创新加速的VUCA时代,也带来了一系列的变化:

  • 需求变化快,但方向暂不清楚,这就需要IT信息化支撑业务创造的过程更灵活、反应更快速;
  • 在业务板块创造出来之后,会面临着业务使用的强度和频率是不固定的,所以就需要支撑业务供给的灵活性和快速响应的速度;
  • 当下的用户需求和业务的颗粒度,随着市场发展越来越小,所以能够迅速把握市场动态、完成业务创造、提供业务这个全过程周期的速度也变得非常重要,还需要能够拉通整个组织。但不同职能组织都有自己的不同目标,无法做到说改变就改变。

云原生技术的发展,使得各个职能组织去支持、去改变的难度越来越低、投入越来越小,大家更愿意拉通和协作,从而在商业侧能够给企业带来更大的竞争优势。

云原生时代,在享受架构解耦与云端弹性带来的便利同时,对软件研发与交付模式提出了更高的要求,如何才能真正做到云原生下价值交付的的成功?

首先要掌握架构解耦、云端弹性等相关技术,具备研发能力,这是第一要素。

第二,把技术能力运用起来在平衡中去解决业务问题,不能太过于完美主义。例如面对一个遗留系统,是一步到位解耦完毕还是循序渐进呢?分析业务现状的问题并针对性地应用云原生技术能力去解决,去创造价值,是第二个关键要素。

第三是团队通力协作的能力。作为团队的基础,团队的每个成员都具备充分的技术能力,这样团队的能力可以等同于团队成员的合力。团队成员之间通过协作能够产生的化学效应,不只是1+1=2的效果,它将会带来乘数甚至指数级的效应。

第四是组织变革能力。新组织可以直接招募具备云原生技术的成员组建团队,这样带来的好处就是大家没有遗留系统,理解业务即可。如果是一个现成的组织,那么团队成员既要边学习和掌握新技能,边继续发展业务,就如同“给行驶中的汽车换轮子”。这时就需要一种软实力来打消大家的顾虑,推动往云原生的交付模式转变。

云原生与DevOps的关系是是什么?普通DevOps与云原生的DevOps有何不同?

按照CNCF的说法,容器、微服务等被认作是云原生技术。DevOps主要是指一种工作方式或模式,它帮助拉通整个价值创造过程中各环节的人和组织,通力协作缩短价值创造的周期时间。在这个过程中,就需要从人、工具和流程方法三个维度去改变。

如何区分普通DevOps和云原生DevOps,主要看一个组织在应用DevOps的过程中,是否使用云原生技术开发应用或者系统。 举例来讲,DevOps开发一个传统的单机应用,不需要开发人员掌握容器或微服务等技术,对部署和发布的自动化要求也不高,或许也不需要灰度发布、应用监控等功能,往往只需应用几个DevOps工具就能够满足需求。

当然,它是被定义为DevOps,所以代码提交之后的编译构建、测试、打包、安装启动等,都要能够以全自动化的方式完成,无需人工干预,那这个应用的研发过程就是一个普通的DevOps。

云原生模式严格意义上来说,是整个应用的生产过程都在云上, 需求在云端的系统上管理,代码存放和评审、测试用例都在云上进行,甚至日常交流、开会等方面也都在云上进行,这就是比较彻底的云原生DevOps。这时就需要一个可以拉通各个环节的云原生DevOps工具的平台,我们称之为一站式云原生DevOps平台。

云原生的DevOps对于开发者来说,意味着什么?如何尽快在实际工作中实践?

应该说是未来的趋势。个人开发者可以利用云厂商提供的便利,以极低的成本,去学习和实践云原生DevOps开发的全过程,掌握运用各种云原生技术,去创造价值。同时,开发者要从自身的长远发展出发,自己的未来自己做主,不要仅仅依赖于工作中实践,可以考虑去主动的投资学习。毕竟自身能力的提升是带来更大回报的最常见手段,其他手段都依赖于能力的提升。

在云原生2.0的趋势下,越来越成熟的云原生技术化解了开发者的诸多难题,开发者突破个人职业瓶颈的核心关键是掌握1+N关键能力,就是1个DevOps平台加上N套技术栈,再配合云原生提供的开发能力,开启第二曲线。想了解更多,可以直击文章《云原生开发者须具备的1+N技能,开启第二曲线》中做了详细的解读。

DevOps新挑战:如何解决实际开发运维中的问题

要说DevOps如何解决实际开发运维中遇到的问题,首先我们应该先分析当下开发运维会遇到哪些问题,简单列举几个点:

第一个问题:现在市场需求变化很快,产品要快速响应,频繁的进行版本更迭。

当下很多项目都在使用微服务框架,其中一个好处是可以减少变更影响的范围,但微服务其实对运维的要求相对变高了,因为之前你只负责一个单体服务的发布,现在你要负责多个微服务的发布,传统组织结构以及运维方式很难满足,这其实也是促使DevOps诞生的一个主要因素。DevOps是可以通过一系列的自动化工具,将很多以前需要手工操作的流程变成自动化的。比如发布包的构建、部署任务参数配置等等,然后对各个服务按照不同场景,做出不同的发布策略,进行自动化的发布,加速产品新特性的上线。

第二个问题:产品上线后,数据运营和分析。

这点容易被忽略,很多人认为DevOps就是自动化工具链,其实数据分析、运营也是DevOps中很重要的一部分。 DevOps文化中,度量是很重要的一环,这个度量不是说向老板汇报用的,而是通过数据去了解各个服务的运行情况、用户的使用情况等,然后根据分析结果对产品进行优化改进。传统的运维模式很难建立这种反馈机制,不搞清楚市场或者用户群体感受的开发,很容易闭门造车,而DevOps则是提倡在运营环节建立反馈机制来解决这个问题。

其他方面问题:比如基础设施、网络、场地等方面的投入,相当于把资源托管,让开发者更多的聚焦于新特性的交付。以上这些其实都是DevOps解决实际生产中的问题的例子。

有调查显示开发者在DevOps整个软件开发生命周期中,测试阶段遇到的延迟最多,华为云是否有一些实践方案去应对?

测试阶段遇到延迟的问题是说很多时候安全测试在整个软件生命周期中做的比较晚,导致很多漏洞之类的没有测出来。这个问题其实很好解决,首先可以从单元测试入手,在新特性开发之前,根据验收标准写好单元测试,等到功能开发完成直接进行单元测试,这样就会减少测试的延迟。

DevOps也主张将测试环节尽可能地嵌入到流水线中,华为云DevCloud提供了代码检查功能,检查代码的漏洞。还有就是现在很多项目都在用微服务框架,微服务框架中服务与服务之间是通过API进行交互的,那我们也可以将接口测试作为一个主要安全管控手段,将他纳入到持续交付流水线中,每次执行流水线时,自动进行接口测试。

华为云云原生DevOps的升级是否分阶段,每个阶段的路径是什么?

华为云积极地参与业界相关标准和能力模型的共建共创,作为重要参考来构建DevOps相关产品。业界主流是根据DevOps的自动化程度将它划分成三个阶段:

1、保证代码时刻可以进行构建的持续集成;

2、将代码自动化部署到类生产环境进行测试的持续交付;

3、将最新的代码直接自动化部署至生产环境的持续部署;

其中,持续集成自动化程度相对会低一些,持续部署自动化程度是最高的。但更多的时候需要结合业务场景去选择是持续集成、持续交付或是持续部署,并不是所有的场景都必须做到持续部署。如果条件允许的话,一定是自动化程度越高,就意味交付频率越快。

华为云是否有云原生的DevOps体系框架、落地实践案例等?

华为云提供的云原生DevOps体系框架叫做HE2E,即华为端到端(End to End)DevOps框架。是结合了华为30年研发经验并集合了业界先进的实践所形成的一套可操作可落地的敏捷开发方法论。HE2E围绕一个名为凤凰商城的电商平台项目,按照DevOps方式完成从提交代码到流水线部署上线的全过程,项目使用了微服务、容器等多种云原生技术,其中DevOps部分依托于华为云DevCloud。

在这个实践中,开发者可以通过华为云DevCloud的项目管理功能进行敏捷项目管理。项目的示例代码也是通过华为云DevCloud的代码仓库codehub,项目使用微服务架构,前后端分离,并且可以通过华为云DevCloud进行云端构建实现持续集成,将前后端打成Docker镜像放到云端镜像仓库,供部署使用。

从集成到部署,还可以通过DevCloud的流水线功能串联起来,在流水线中配置构建、部署任务实现云原生的DevOps,这个流程和现在很多企业的实际开发场景也吻合。

最后,对于开发者来说,DevOps是神秘的,自己可能没有精力或资源搭建DevOps工具链,其实这部分可以通过H2E2——相当于是用华为云搭好的一套架子,直接使用华为云DevCloud体验云原生的DevOps。

点击关注,第一时间了解华为云新鲜技术~

敏捷开发专家一席谈:云原生技术下的华为云DevOps实践之路的更多相关文章

  1. 性能达到原生 MySQL 七倍,华为云 Taurus 技术解读【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  2. Python开发还在用virtualenv?不如了解下pipenv...#华为云·寻找黑马程序员#

    又见 Kenneth Reitz 之前公众号写了一篇文章爬虫新宠requests_html 带你甄别2019虚假大学,其中主要是为了介绍模块**requests_html,这个模块的作者还开发了req ...

  3. ​第3届云原生技术实践峰会(CNBPS 2020)重磅开启,“原”力蓄势待发!

    CNBPS 2020将在11月19-21日全新启动!作为国内最有影响力的云原生盛会之一,云原生技术实践峰会(CNBPS)至今已举办三届. 在2019年的CNBPS上,灵雀云CTO陈恺喊出"云 ...

  4. 云原生技术赋能ISV实现应用现代化

    日前,由BP商业伙伴主办,中国开源云联盟和云原生应用现代化联盟协办的2021-2022云计算生态峰会成功举办.头部ISV代表.最终用户和云原生技术专家等与会各方围绕"云原生技术赋能ISV&q ...

  5. 云原生网络代理(MOSN)的进化之路

    本文系云原生应用最佳实践杭州站活动演讲稿整理.杭州站活动邀请了 Apache APISIX 项目 VP 温铭.又拍云平台开发部高级工程师莫红波.蚂蚁金服技术专家王发康.有赞中间件开发工程师张超,分享云 ...

  6. 牛年 dotnet云原生技术趋势

    首先祝大家:新年快乐,牛年大吉,牛年发发发! 2020年的春节,新冠疫情使得全球业务停滞不前,那时候,没有人知道会发生什么,因此会议被取消,合同被搁置,项目被推迟,一切似乎都停止了.但是我们却见证了I ...

  7. 扩展 GRTN:云原生趋势下的 RTC 架构演进

    在 2021 LiveVideoStackCon 音视频技术大会上海站,聚焦 "轻端重云和边缘架构新模式" 专场,阿里云视频云的 RTC 传输专家杨成立(忘篱)带来 "基 ...

  8. API 管理在云原生场景下的机遇与挑战

    作者 | 张添翼 来源 | 尔达Erda公众号 ​ 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...

  9. 网易云通过KCSP认证,云原生技术实力再获认可

    近日,网易云通过KCSP认证,正式成为CNCF官方认可的Kubernetes服务提供商,也标志着网易云在云原生领域的技术实力得到了业界认可. Kubernetes是第一个从CNCF毕业的开源项目,凭借 ...

  10. 《CNCF × Alibaba云原生技术公开课》知识点自测(一):第一堂“云原生”课

    (单选)1.容器启动后,我会时常 SSH 进入到容器里然后写很多文件.请问这破坏了云原生理念了吗? A. 否   B. 是 (单选)2.云原生架构必须选型 Kubernetes 方案. A. 否  B ...

随机推荐

  1. python 自动创建Hype-V虚拟机脚本

    安装模块 pip install pywinrm 脚本如下 #!/usr/bin/env python3 # coding=utf-8 # author:LJX # describe:一键创建hype ...

  2. 查找数组中第K大的元素

    要查找一个数组中的第 K 大元素,有多种方法可以实现,其中常用的方法是使用分治算法或快速选择算法,这两种方法的时间复杂度到时候O(n). 快速选择算法示例: package main import & ...

  3. zookeeper源码(04)leader选举流程

    在"zookeeper源码(03)集群启动流程"中介绍了leader选举的入口,本文将详细分析leader选举组件和流程. leader选举流程(重要) quorumPeer的st ...

  4. webgoat _v8.1全流程通关

    1.1 (A1)SQL Injection (intro) 概念 本课程介绍了什么是结构化查询语言(SQL),以及如何操纵它以执行开发人员原始意图之外的任务. 目标 用户将对SQL的工作原理和用途有基 ...

  5. WPF --- TextBox的输入校验

    引言 在WPF应用程序开发中,数据校验是确保用户输入数据的正确性和完整性的重要一环. 之前在做一些参数配置功能时,最是头疼各种参数校验,查阅一些资料后,我总结了数据校验方式有两种: Validatio ...

  6. Codeforces Round 909 (Div3)(本菜鸟只补到了E)

    Codeforces Round 909 (Div.3) A. Game with Integers 水题,就是可以被3整除的输出"Second",不能被3整除的输出"F ...

  7. Cannot resolve symbol ‘c:forEach‘;Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/corede

    #### Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/core:等类似,都是因为 在jsp页面中加入<%@ tagli ...

  8. Django学习(三) 之 模板中标签的使用

    写在前面 最近看到稀土掘金在搞2023年终总结征文活动,一直想尝试投稿试试,周末我就花了近一下午时间写完初稿,然后周一.周二完成精读再改稿,感觉OK,昨晚凌晨第一时间在稀土掘金投稿. 结果,又发生了同 ...

  9. 基于 Webpack5 Module Federation 的业务解耦实践

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:贝儿 前言 本文中会提到很多目前数栈中使用的特定名词,统一 ...

  10. C++ Qt开发:ComboBox下拉组合框组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ComboBo ...