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

应用的演变历程

企业数字化转型过程和云的迭代发展是相互作用的。在 2007 年之前主要用物理机来作为我们当前应用的载体。而在 2007 年,KVM 诞生,它能让底层操作系统和一些虚拟的网络设备做一些虚拟化的输出。2007 年 - 2010 年是虚拟化发展较好的周期,VMware 和 openstack 是当时的代表生态。到了 2013 年 Docker 开服,云计算迎来了蓬勃发展的周期。2014 年,企业的部分业务开始逐步迁移云上。2017 年后到今天为止,在云原生的模式下,开发人员或者整个 it 部门更聚焦在业务的发展上,所有我们不关心的部分可以全部由云来管理。云开发不必关心开发在哪里,云服务不关心调用到哪里,而云资源方面也不用关心运行到了哪里。这就是从基础设施上云到业务上云,再到当前的全栈云,这样的一条全企业数字化转型之路。

在物理机阶段,使用的是单体架构,这样的架构系统封闭、无法复用,且高度耦合,内部交互复杂。而在第二阶段,采用了面向服务的 SOA 架构,这种架构通常需要 ESB 进行系统集成,进行应用模块解耦,需要统一部署。但是这种架构通常需要较大规模的团队,且可能存在职责割裂。第三阶段是当前使用的比较多的微服务架构,它能充分利用 DevOps,完全解耦能充分利用云化资源自动弹性伸缩等特性,支持高可用,能升级、扩容但不中断业务。

这张图片能较好的展示应用的生命周期管理,以应用为中心,在应用之上是基础资源管理层面,这个层面可以管理应用对应的资产、环境、资源、流水线、部署和监控,这是以基础资源为核心思想下 DevOps 的建设方向。随着越来越云化和微服务化,我们关注的视角从基础资源逐步转成服务思想。

云计算模式下的 DevOps

在物理机时代,随着业务的发展,可能会出现基础设施增长,软件复杂度提升,流量冲击和更新频率变高这些问题。基础设施增长和软件复杂程度提升会给运维带来压力,流量冲击要求运维的测试要有多样的变化,更高的更新频率要求研发人员的快速反馈以及更灵活的需求变更。

在这样的情况下,DevOps 建设迫在眉睫,企业需要提升应用交付的效率和质量,需要越来越多样化的应用部署方式。DevOps 建设要首先要做的是敏捷的建设,因此需要更灵活的需求管理工具,在整个应用交付阶段需要自动化构建和环境快速管理。然后在测试的阶段,我们需要做自动化测试,才能在流程中管控好质量,另外还需要有一个统一的制品管理。从软件开发到应用交付之间,需要有一套统一的制品库将所有的制品进行统一纳管,基于统一的制品可以进行智能化的验收测试。在这整个阶段,核心准则是版本控制一切,内建质量、自动化,过程度量。

这个图片是端到端的 DevOps 能力图谱,建设的重点在图谱下方的持续交付工具链。我们需要采取统一的代码管理工具,帮助我们自动化的提升代码的质量。在安全方面,我们也会运用安全扫描工具集成到流程中,让它进行自动编译。另外,在持续部署阶段,要做好数据库的发布,对不同版本的接口做好管理,并结合一些好的自动化的工具做自动化测试。这些功能点需要一个交付部署流水线串连起来。

我们可以看到,在端到端的能力中会有很多步骤,也需要非常多的工具去执行,如何将这些工具进行很好的串连呢?在企业生产过程中,核心目标有三项:效率、质量和成本,因此可以沿用制造业的流水线来帮助我们快速的生产软件。流水线中我们需要关注 4 项指标:发布频率、变更时长、服务恢复时长和变更失败率。

云原生带来的改变

云原生是一个复杂的东西,它包含开发过程、应用依赖、编排管理、流程管理、数据分析以及非常多的组件。在云计算的模式下,我们可以做到快速交付应用、成果快速发布,但是我们交付的产品是否能给业务带来增长,满足客户的需要呢?这就涉及到如何将应用交付转变为价值交付。通过可靠、可重复的流水线,快速进行软件生产,提升应用效率和软件交付效率,这就是应用交付。而价值交付是指能够快速地响应市场变化,在客户需求不确定的情况下,生产出客户满意的软件。

如何实现价值交付?要基于可靠可重复的流水线,简历自动化的应用交付体系。将敏捷过程全面融入到 DevOps 体系中。架构全面微服务转型,基础设施云化,让开发专注于业务开发。将运营纳入到 DevOps 范畴,实现数字化运营。

点击观看课程完整视频。

CODING DevOps 系列第三课:云计算、云原生模式下 DevOps 的建设的更多相关文章

  1. 云原生时代的DevOps平台设计之道

    开发人员与运维人员是 IT 领域很重要的两大人群,他们都会参与到各种业务系统的建设过程中去.DevOps 是近年间火爆起来的一种新理念,这种理念被很多人错误的解读为"由开发人员(Dev)学习 ...

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

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

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

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

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

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

  5. CODING DevOps 系列第四课:DevOps 中的质量内建实践

    什么是质量内建 随着时间的推移,我们项目的开发效率会逐渐降低,直到几年之后整个项目可能就无法维护,只能推倒重来.具体的表现首先就是随着时间推移,我们会发现整个需求列表里面能做的需求越来越少,因为每当我 ...

  6. CODING DevOps 系列第五课:微服务测试——微服务下展开体系化的微服务测试

    微服务测试的痛点与挑战 这张图可以形象地展示单体服务和微服务的对比,单体应用就像左边巨大的集装箱,软件模块和应用都包括其中:而微服务就像是由一个小集装箱组成,微小的服务组成一个庞大.完整的系统.单体服 ...

  7. 潭州课堂25班:Ph201805201 django 项目 第三课 码云注册,django项目 (课堂笔记)

    d码云注册,登录, 创建项目: 生成秘钥 想看秘钥: 添加公钥 复制 ssh 连接 通过  git clone <ssh> 连接 在服务器上创建 python3 虚拟环境, 创建项目  p ...

  8. [.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)

    一.前言 在专题二中已经应用DDD和SOA的思想简单构建了一个网上书店的网站,接下来的专题中将会对该网站补充更多的DDD的内容.本专题作为一个准备专题,因为在后面一个专题中将会网上书店中的仓储实现引入 ...

  9. 问题三:Appium 的 UIAutomator2 模式下使用 sendKeys 出现错误

    在Appium默认的模式下,可以对TextFiled控件进行sendKeys操作: 设置capabilities.setCapability("automationName",&q ...

随机推荐

  1. 【JUC】synchronizated和lock的区别&新lock的优势

    原始构成 synchronized是关键字,属于JVM层面 javap -c 的结果显示 synchronized是可重入锁 11:是正常退出 17:是异常退出[保证不产生死锁和底层故障] Lock是 ...

  2. SD.Team字符表情集大全(持续更新中..)

    一.超级可爱的字符表情集 01. <( ̄︶ ̄)> 02. <( ̄︶ ̄)/ 03. b( ̄▽ ̄)d 04. 汗( ̄口 ̄)!! 05. ╮( ̄▽ ̄)╭ 06. ╰( ̄▽ ̄)╭ 07. ╮ ...

  3. lua string方法拓展

    --[[-- 用指定字符或字符串分割输入字符串,返回包含分割结果的数组 local input = "Hello,World" local res = string.split(i ...

  4. Chisel3 - util - Math vs. CircuitMath

    https://mp.weixin.qq.com/s/8lC8vQnBdKW9C39H0QFFkA     对数相关的辅助方法,Math通过软件方法实现,CircuitMath通过硬件方法实现.   ...

  5. chrome和Firefox浏览器渲染页面的不同

    一直很好奇chrome和firefox这两大浏览器的页面渲染有什么不同,今天自己写了些html代码来做了下检验. 先做html编码,代码如下: <!DOCTYPE html><htm ...

  6. 万字超强图文讲解AQS以及ReentrantLock应用(建议收藏)

    | 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it ...

  7. 注解@NotNull/@NotEmpty/@NotBlank

    @NotNull:不能为null,但可以为empty @NotEmpty:不能为null,而且长度必须大于0 @NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度 ...

  8. JavaSE(一) 语言概述

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 目录 1 基础常识 2 Java语言版本迭代概述 3 Java语言应用的领域 4 Java语言的特点 5 ...

  9. Java实现 蓝桥杯 算法提高 抽卡游戏

    试题 算法提高 抽卡游戏 某个抽卡游戏卡池抽出限定卡的概率为p,该游戏有一个"井"的机制,抽满k次卡后直接送这张限定卡.试求获得这张限定卡需要的期望抽卡次数.输入为一行,用空格隔开 ...

  10. Java实现 蓝桥杯 算法训练 矩阵乘法

    算法训练 矩阵乘法 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 输入两个矩阵,分别是ms,sn大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均 ...