运维建设之理论基础

导读

本文主要介绍运维建设依赖的理论基础,并结合工作实际给出了一些分析。

DevOps理念

DevOps这个词来源于2009年在比利时根特市举办的首届DevOpsDays大会,为了在Twitter上更方便的传播,由DevOpsDays缩写为DevOps。

DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的目标是缩短从开发到部署的周期,通过打破开发、测试、运维之间的壁垒,实现持续交付(Continuous Delivery)。

DevOps落地依赖组织文化(Culture)、自动化(Automation),同时也要关注结果度量(Measurement)、知识分享(Sharing),所谓的CAMS四原则。CICD等自动化技术只是其中一个环节,并非全部。

效果方面,相比于软件开发的瀑布模式、敏捷开发,DevOps将开发、测试、部署三个环节打通,做到了快速迭代、持续反馈;其价值,不再限于开发阶段、而是贯穿了软件全生命周期。

zone

zone

当前盛行的云原生概念,吸纳和演进了DevOps理念,云原生技术促进了DevOps的结果达成。

本文主要内容,引用自鲜枣课堂的《DevOps到底是什么意思》

康威定律

康威定律(Conway’s Law)可以简述为: 「组织结构决定产品形态」,想要什么样的系统、就搭建什么样的团队,有什么样的团队、就尝试搭建什么样的系统。

康威定律,是马尔文-康威1967年提出的,起初发表在杂志上,后经《人月神话》引用而出名、并被命名为康威定律。康威定律包括四个定律,

  • 第一定律: 组织沟通方式决定系统设计
    • 原文: Communication dictates design
    • 举例: 想要搞微服务,公司的团队就要按照微服务来划分。想要什么样的系统,就搭建什么样的团队;有什么样的团队,就尝试搭建什么样的系统、不要无畏挣扎,如小公司团队没得划分、搞微服务就是找死
  • 第二定律: 时间再多一件事情也不可能做的完美,但总有时间把他做完
    • 原文: There is never enough time to do something right, but there is always enough time to do it over
    • 举例: 人手永远是不够用的,事情也永远做不完,但可以一件一件的来。这也是Devops要解决的问题,即持续的开发、测试、交付、部署,过程中不断反馈调整
  • 第三定律: 线型系统和线型组织架构间有潜在的异质同态特性,这是第一定律的具体应用
    • 原文: There is a homomorphism from the linear graph of a system to the linear graph of its design organization
  • 第四定律: 大组织比小系统更倾向于分解
    • 原文: The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems
    • 举例: 组织沟通成本随着人员数量指数增长,沟通成本=Nx(N-1)/2,这也是为什么互联网公司往往追求小团队

从康威定律可以看出,技术架构绝不仅仅是一个技术问题,更是公司组织和政治问题、公司越大越是如此。参考了原文

技术成熟度曲线

Gartner技术成熟度曲线(Gartner’s Hype Cycles),以图形方式展示了技术和应用的成熟度和采用情况,以及它们与解决实际业务问题和利用新机会的潜在相关性,Gartner原文

multicloud-architecture

每个技术成熟度曲线,都将新技术的生命周期划分为如下五个关键阶段,

  • 技术萌芽期:潜在的技术突破即将开始。早期的概念验证报道和媒体关注引发广泛宣传,通常不存在可用的产品、商业可行性未得到证明
  • 期望膨胀期:早期宣传产生了许多成功案例,通常也伴随着多次失败。某些公司会采取行动,但大多数不会
  • 泡沫破裂谷底期:随着实验和实施失败,人们的兴趣逐渐减弱,技术创造者被抛弃或失败。只有幸存的提供商改进产品,使早期采用者满意,投资才会继续
  • 稳步爬升复苏期:有关该技术如何使企业受益的更多实例开始具体化,并获得更广泛的认识。技术提供商推出第二代和第三代产品,更多企业投资试验,保守的公司依然很谨慎
  • 生产成熟期:主流采用开始激增。评估提供商生存能力的标准更加明确,该技术的广泛市场适用性和相关性明显得到回报

技术成熟度曲线在运维领域同样适用,如辅助判断云原生的成长阶段、决定运维大规模投入的时机。



Prev     Next