DevOps 实践:千里之行

在上一篇 DevOps 渊源:角色消融 中我们分析了在作坊式团队中的责任重叠,也回顾了 DBA 角色的消融。那么,如今我们讲的 DevOps 又是什么角色的消融呢? 我想你已经猜到了,接下来要消融的角色就是运维人员了。那这次又是什么生产力决定了怎样的生产关系的变化呢?实际上,不止是开发人员的生产力的变化,而是包括了运维的生产力在内一起发生了变化。


DevOps = Dev + Ops



视线再次回到上面的作坊式小团队里。以上面那种手工部署的方式,面对少数几台服务器问题还不明显。当业务扩大,用户量迅速在两个月里从 20 万增长到 50 万,服务器也从 3 台增加到了 10 台,针对他们来对应用程序的部署和日常维护的工作量徒增,继续手动操作带来的错误和其他不可控风险(如偶见的服务器环境问题)让人越来越不放心了。这时候,运维人员们捡起了多年不写的脚本,开始了服务器环境自动化的过程。


另一头,开发人员开始引入持续集成实践来保障质量:单元测试被引入、发布版本也可以自动化了。当他们开始实施端到端自动化测试的时候,猛然发现对服务器环境的准备过程竟于生产环境如此类似。


在小团队里,开发人员和运维人员就坐在隔壁,类似于上学时同桌的你。他们很快决定通过结对编程的方式高效地整合他们的工作,并继续统一的工具链体系来提供在开发阶段和生产环境的各类需求。包括代码编译、创建新服务器、安装依赖软件、部署(迁移)数据库、多环境配置、自动化测试,以及版本发布流程全部都能够在统一的软件上完成了。


640?wx_fmt=png


那么,这俩同桌,他们是 Dev,还是 Ops 呢?他们共同宣布了一个新词:DevOps。DevOps 让运维工作展现在 Dev 面前,让他们从更广的视角来看待等整个系统,代码不光要写完,还要能够自动地部署到服务器上。DevOps 不是指运维的消失,而是以更高效和可靠的方式在做运维。

朴实地说,DevOps 包括从代码开发开始,到产品部署到产品环境,再到产品在生产环境的运行期间的监控与维护为止的整个过程。这也是大多数人所理解的 DevOps。如果让一个开发人员来用一个词形容 DevOps 的话,他会说自动化。


DevOps 运动



至此,作坊式团队里的 DevOps 故事也就讲完了。我们看到,小团队在组织层面的包袱很小,而在实践层面也比较容易跟上,往往他们的迫切的问题是开发进度太紧,面对技能不足,却没有足够的时间和机会来夯实技能。要解决这些问题,除了团队客观条件亟待改善之外,还有产品思路和发布规划的优化。这对于小的团队说来,只要决策人下定决心,整个团队成功实践 DevOps 并不困难。


那么,情况在其他团队是怎样的呢?


我们来看一下大一些的团队。由于他们并不缺人手,上述过程就会是另一番景象。再回头看一眼上面的过程,我们不难发现有很多风险很大的地方(例如,开发人员自己编译一个新的程序包,直接放到服务器上),而风险则往往是大团队需要尽力去防止的。于是他们有一系列流程管控措施来防止问题出现在生产环境中。他们有独立的需求分析部门,有严格的代码审查流程(甚至团队),专门的版本发布团队或者负责人,以及话语权很高的质量和风险管理体系。


相比而言,大一些的团队,掌握 DevOps 技能并不成为大的挑战——他们有足够的资源可以在短时间里快速构建这些能力,相反,他们更大的挑战却是在团队结构不变的情况,大家各个“专门”的角色如何向 DevOps 实践看齐,并让这种机制持续下去。这正是 DevOps 运动剑峰所指。《凤凰项目》讲了一个 IT 运维经理临危受命,通过三步工作法,以及同事间协作帮助的情况下,拯救了一家历史悠久的汽车配件制造商的故事。这本书还介绍了开发运维模式的 “三步工作法”。


第一工作法是建立从左到右的高效工作流。典型做法是持续自动化构建、集成和版本部署等。第二工作法是在这个工作流的相反方向,从右向左建立逐级的快速反馈流,及早发现问题,谨防问题向更右边流动。典型做法是高效的代码检查,坚守持续集成纪律,测试前移和自动监控机制等。第三工作法是在组织层面,构建快速试错和学习成长的气氛和文化。典型做法是放权和信任、复盘问题,规模化创新等。


640?wx_fmt=png


这样看来,DevOps 不再只是开发团队的事了,独角戏是唱不持久起来的。它一定还还涉及到围绕开发团队的其他角色,如与其他开发团队的关系和与非开发部门的协作等,它还涉及到企业文化的构建,才能让 DevOps 深化和持久地实践下去。


回顾与讨论



在上一篇,我们主要讲了作坊式团队中角色重叠,这种重叠天然是由于他们的天然压力所决定的。于是,事实中不少小团队长年累月地受困于无尽的需求变更,还没来得及思考怎么打造好团队,团队里的力量就在一次次更新的过程被不断稀释得只剩下一团乱象。但如果团队幸运地遇到了懂得打造工程师文化的负责人,那他们反而更能利用优势,在 DevOps 运动中成为最具活力的那一群。


640?wx_fmt=jpeg


各司其职并通力协作是大型项目的常见做法,人类的各项大型工程一次次成功地实践着这样的经验。然而在 IT 领域这样的协作模式正在受到挑战。近年来,我们发现不少产品是由只有少数人的团队研发的,在短时间取得了巨大的成功。


芬兰的游戏公司 SuperCell 以 5~7 人小团队的模式在短时间里快速地推出不同的游戏,同时收集用户的喜好信息,据此决定进一步投放到这个游戏的资源。如果受不到欢迎,就快速宣布失败、分析教训并用于新游戏的研发。到他们被腾讯以 86 亿美元被收购时,整个公司不超过 200 人。


这些不断踊现的案例让不少大型团队也在思考如何更好地调整姿态来尝试接受 DevOps,让它成为团队的日常风格,从而提升团队效能。不过,作为一个探索性命题,我们不妨深入再想一层:如果说 DevOps 是 IT 开发团队需要考虑的方法论的话,那么对于大型企业来说,组织层面又该怎么办?


上面提到,DevOps 对企业文化是有所期待的,而文化这种一般变起来是相当难的,对于那些暂时还是业务驱动的企业来说尤其如此。显然,这时候,对于改变企业文化来说,DevOps 作为一种驱动力来说是远远不足的。答案在数字化转型体系可以找到,它正是企业组织整体的敏捷性。在这个体系中,它更将学习型组织设定为企业整体的文化。当然,要在更广的层面去转型,更是谈何容易?不过,换个思路来想,IT 团队的 DevOps 相当于自下而上的转型,而企业层面的数字化主动转型则是由上而下的转型。大胆地想象一下,假如数字化转型获得成功,团队的 DevOps 文化会不会自然踊现呢?

原文地址 :https://blog.jijiechen.com/post/devops-the-future/

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线段树专题-黑白棋盘 BZOJ-1453

线段树专题-黑白棋盘 题目来源 BZOJ−1453BZOJ-1453BZOJ−1453 题意 QQQ次操作每次操作给出(x,y)(x,y)(x,y),将(x,y)(x,y)(x,y)个格子颜色取反每次操作后,输出棋盘上黑白联通块的个数n≤100,Q≤104n \le 100,Q \le 10^4n≤100,Q≤104 题解 显然不能直接套并查集,因为直接套…

约数个数

约数个数 题目大意: 求a到b之间每个数的约数的个数之和 原题: 题目描述 定义f(x)为x的约数个数,x为正整数。 f(a)f(a1)……f(b),即a,b之间每个数的约数的总和。 输入 一行两个正整数a、b,以一个空格隔开。 输出…

P2257-YY的GCD【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P2257 题目大意 给出n,mn,mn,m,求∑i1n∑j1m[gcd(i,j)∈p]\sum_{i1}^n\sum_{j1}^m[gcd(i,j)\in p]i1∑n​j1∑m​[gcd(i,j)∈p] 定义ppp是质数集 解题思路 首先考虑定义f(x)∑i1n∑j1m[gcd(i,j)x]f(x)\sum_{i1}…

asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...

最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionless的学习做下笔记!Exceptionless是什么?能做什么呢?“Exceptionless”这…

【dfs】【树】机器选择

机器选择 题目大意: 有一个树状的图,要求安一个点,使这个点到最远的点的距离最小 原题: 题目描述 自从省队NOI赛前集训在scz举行之后,一个名叫cs1.6.exe的文件开始在机房广泛使用起来。每天大家都要找神犇小X借移…

ACM-ICPC中博弈论的一些小小总结

博弈论 参考 [1]https://blog.csdn.net/clover_hxy/article/details/53818624 [2]https://blog.csdn.net/foreyes_1001/article/details/82862324 [3]https://www.cnblogs.com/lxm940130740/p/3268803.html 一.尼姆博弈 问题提出 下面给出Nim游戏的三种变体 现有nnn堆石子,每…

P3312-[SDOI2014]数表【莫比乌斯反演,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P3312 题目大意 定义F(x)F(x)F(x)表示xxx的约数和 给出n,m,an,m,an,m,a,求∑i1n∑j1m[F(gcd(i,j))≤a]∗F(gcd(i,j))\sum_{i1}^n\sum_{j1}^m[F(gcd(i,j))\leq a]*F(gcd(i,j))i1∑n​j1∑m​[F(gcd(i,j))≤a]∗F(g…

使用 IIS 在 Windows 上托管 ASP.NET Core2.0

准备:操作系统:Windows Server 2008 R2 或更高版本开发环境:VS2017回到顶部第一步:新建项目ASP.NET Core Web应用程序在 Visual Studio 中,选择“文件”>“新建”>“项目”。在新建项目对话框的左侧窗格选择“.N…

数学推导题,NTT,快速数论变换,Wannafly-导数卷积

导数卷积 题目描述 题解 参考了一下标程的推导过程,因为这个推导对我这种数学弱渣真的有点难鸭. [1]f(x)f(x)f(x)的iii次导函数: f(i)(x)ai∗i!0!ai1∗(i1)!1!∗x1...an−1∗(n−1)!(n−1−i)!∗xn−1−if^{(i)}(x) a_{i}*\frac{i!}{0!} a_{i1}*\frac{(i1)!}{1!}*x^{1} ...…

初一级练习题(2019.3.8)

成绩: rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111hkyhkyhky250250250100100100100100100505050000222lyflyflyf240240240100100100505050505050404040333wjjwjjwjj210210210909090707070505050000555lthlthlth12012012020202050505050505…

使用 C# 代码实现拓扑排序

0.参考资料尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用。https://www.codeproject.com/Articles/869059/Topological-sorting-in-Csharphttps://songlee24.github.io/2015/05/07/topological-sorting/https://www.cnblogs.com/skywang1…

P3327-[SDOI2015]约数个数和【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P3327 题目大意 TTT组询问给出n,mn,mn,m,d(x)d(x)d(x)表示xxx的约数个数,求∑i1n∑j1md(i∗j)\sum_{i1}^n\sum_{j1}^md(i*j)i1∑n​j1∑m​d(i∗j) 解题思路 对于iii和jjj的两个约数a,ba,ba,b如果他们…

数学推导题,NTT,快速数论变换,Wannafly-乒乓球

乒乓球 题目描述 小 BoBoBo 是某省乒乓球名列前茅的选手,现在他有 nnn 颗乒乓球一字排开,第iii颗乒乓球的权值为 wiw_iwi​ 每次他会随机从现有的乒乓球中等概率选一颗拿走,然后得到的收益是这颗球左边第一个乒乓球和右边第一个乒乓球的权值…

ASP.NET Core 2.1带来SignalR、Razor类库

随着.NET Core 2.1的发布,微软推出了 ASP.NET Core 2.1。这是一个强大的版本,包括实时通信库SignalR,更新的模板使GDPR更容易遵守,并且针对Angular、React,以及React Redux更新了SPA模板。在2013年发布传统的ASP.NET时…

【bfs】WJ的逃离

WJ(J)的逃离 题目大意: 有一个nm的矩阵,*是不可走的,0是可走的,求1,1到n,m的最小转弯次数 原题: 题目描述 当WJ醒来时,发现自己被困在一个地图的左上角,幸好WJ有张图…

P2408- 不同子串个数【SA】

正题 题目链接:https://www.luogu.com.cn/problem/P2408 题目大意 给出一个字符串,求有多少个不同的子串。 解题思路 进行后缀排序之后,对于位置iii他有n−i1n-i1n−i1个后缀,然后它和排在它前面的后缀有heightiheight_iheighti​个重复的…

针对ASP.NET Core Web API的先进架构

.NET Core 最初是在2016年发布的,随着.NET Core 2.0的发布,微软拥有了下一个通用、模块化、跨平台和开源的平台主版本。.NET Core已经创建了许多API,在当前版本的.net框架中均可用。它最初是为下一代ASP.NET解决方案而创建的,但现…

线段树-HDU5737-这题有点神

HDU5737 题意 [1][1][1]有长度为nnn的序列A,BA,BA,B [2]Q[2]Q[2]Q此操作两种类型 (1,l,r,x)(1,l,r,x)(1,l,r,x)将区间[l,r][l,r][l,r]的aia_iai​覆盖为xxx(2,l,r)(2,l,r)(2,l,r)询问区间[l,r][l,r][l,r]中有多少ai≥bia_i \ge b_iai​≥bi​ 题解 考虑用线段树维护. 重点考…

【高精】Oliver的成绩(jzoj 2008)

Oliver的成绩 题目大意: Oliver考了一次试,现在知道他的语数英的成绩,还有年级其他n个人的成绩,现在问Oliver三科各和年级第一差多少分,如果Oliver在这一科上是第一,则输出‘0’ 样例输入 10 10 10 …

P4070-[SDOI2016]生成魔咒【SA,平衡树】

正题 题目链接:https://www.luogu.com.cn/problem/P4070 题目大意 长度为nnn的字符串,对于每个iii求字符串1∼i1\sim i1∼i部分有多少个不同的子串。 解题思路 对于整个串ans∑i1nn−i1−heightians\sum_{i1}^nn-i1-height_ians∑i1n​n−i1−heighti​&#xff…