CODING DevOps 系列第三课:云计算、云原生模式下 DevOps 的建设
本文首先会和大家分享当前整个应用生命周期的演变历程,然后讲解云计算模式下 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 的建设的更多相关文章
- 云原生时代的DevOps平台设计之道
开发人员与运维人员是 IT 领域很重要的两大人群,他们都会参与到各种业务系统的建设过程中去.DevOps 是近年间火爆起来的一种新理念,这种理念被很多人错误的解读为"由开发人员(Dev)学习 ...
- API 管理在云原生场景下的机遇与挑战
作者 | 张添翼 来源 | 尔达Erda公众号 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...
- 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第1篇
项目初探 项目地址: 原项目:https://github.com/lonng/nanoserver 调过的:https://github.com/Kirk-Wang/nanoserver 这将是一个 ...
- 扩展 GRTN:云原生趋势下的 RTC 架构演进
在 2021 LiveVideoStackCon 音视频技术大会上海站,聚焦 "轻端重云和边缘架构新模式" 专场,阿里云视频云的 RTC 传输专家杨成立(忘篱)带来 "基 ...
- CODING DevOps 系列第四课:DevOps 中的质量内建实践
什么是质量内建 随着时间的推移,我们项目的开发效率会逐渐降低,直到几年之后整个项目可能就无法维护,只能推倒重来.具体的表现首先就是随着时间推移,我们会发现整个需求列表里面能做的需求越来越少,因为每当我 ...
- CODING DevOps 系列第五课:微服务测试——微服务下展开体系化的微服务测试
微服务测试的痛点与挑战 这张图可以形象地展示单体服务和微服务的对比,单体应用就像左边巨大的集装箱,软件模块和应用都包括其中:而微服务就像是由一个小集装箱组成,微小的服务组成一个庞大.完整的系统.单体服 ...
- 潭州课堂25班:Ph201805201 django 项目 第三课 码云注册,django项目 (课堂笔记)
d码云注册,登录, 创建项目: 生成秘钥 想看秘钥: 添加公钥 复制 ssh 连接 通过 git clone <ssh> 连接 在服务器上创建 python3 虚拟环境, 创建项目 p ...
- [.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)
一.前言 在专题二中已经应用DDD和SOA的思想简单构建了一个网上书店的网站,接下来的专题中将会对该网站补充更多的DDD的内容.本专题作为一个准备专题,因为在后面一个专题中将会网上书店中的仓储实现引入 ...
- 问题三:Appium 的 UIAutomator2 模式下使用 sendKeys 出现错误
在Appium默认的模式下,可以对TextFiled控件进行sendKeys操作: 设置capabilities.setCapability("automationName",&q ...
随机推荐
- APP元素定位和操作
webdriver 提供了八种元素定位方法: 在 Python 语言中对应的定位方法如下:find_element_by_id()find_element_by_name()find_element_ ...
- [PHP动态]0001.关于 PHP 7 你必须知道的五件事
1.今年的计划表已出.PHP 7 时间表 RFC 投票一直通过, PHP 7 将在2015年10月发布.尽管有些延迟,但我们还是很高兴它在今年内发布.PHP 7 详细时间表由此查看. 2.PHP 要上 ...
- [安卓基础] 009.组件Activity详解
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 跨域解决方案 - webpack devServer
1. 定义 如果一个项目中配置了webpack, 那么我们使用 webpack devServer 来配置代理转发请求来达到解决跨域问题的目的 webpack devServer 能够解决跨域问题的根 ...
- 【HBase】与关系型数据库区别、行式/列式存储
[HBase]与关系型数据库区别 1.本质区别 mysql:关系型数据库,行式存储,ACID,SQL,只能存储结构化数据 事务的原子性(Atomicity):是指一个事务要么全部执行,要么不执行,也就 ...
- WEB前端程序员需要的网站整理
前端学习资源实在是又多又广,在这样的一个知识的海洋里,我们像一块海绵一样吸收,想要快速提高效率,平时的总结不可缺少,以下总结了一些,排版自我感觉良好,推送出来. 一.插件类网站 jQuery插件库:h ...
- Java蓝桥杯 算法训练 复数归一化
算法提高 复数归一化 时间限制:1.0s 内存限制:512.0MB 编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(aa+bb) + ib/sqrt(aa+b* ...
- Java实现 蓝桥杯VIP 算法训练 明明的随机数
问题描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应 ...
- Java实现 LeetCode 106 从中序与后序遍历序列构造二叉树
106. 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序 ...
- Java实现 蓝桥杯 历届试题 小朋友排队
问题描述 n 个小朋友站成一排.现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友. 每个小朋友都有一个不高兴的程度.开始的时候,所有小朋友的不高兴程度都是0. 如果某个小朋友 ...