当我们在谈论DevOps时我们在谈论什么?



  • 当我们在谈论DevOps时我们在谈论什么?

    DevOps 集文化理念、实践和工具于一身,可以提高企业高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,能够帮助企业更快地发展和改进产品。

    开发,测试,运维在以前可能更多的是相关性较低的独立个体.更关注于独立自主的任务,职责划分较为明显,出问题后也更容易产生对立情绪.

    DevOps运用一系列的标准化流程,以及自动化工具.使得需求管理正规化,从代码编写,测试,部署,监控报警可视化,数据回收分析,正向反馈需求评审形成完整闭环.

    0_1542016475709_devops_loop.png

    从技术角度来说,DevOps更像是自动化工具链的整合.

    撇开ideas阶段的需求管理不说,我们来看通常情况下代码从提交到变成服务需要经历哪几个步骤.

    代码提交-构建-测试-代码审查-部署-测试-监控

    Devops里称之为CI(Continuous Delivery)/CD(Continuous Deployment)

    0_1542016553785_ProcessFlowClr.png

    传统运维只负责最后两个步骤,部署及监控,稳定性是他们的最爱,变更是悬在他们头上一把摇摇欲坠的利刃.
    可是日益快速变化的市场需求使得开发不得迭代版本变更服务,从而更好的适应市场.
    变更意味着风险与矛盾,如何降低风险,减少矛盾,提高效率就是DevOps干的活.
    为了保证代码上线交付的安全性,敏捷性,可控性.
    流程化以及标准化必不可少,尽量脱离人工干预的可能.

    在DevOps里有个理念叫Pipeline as Code,当DevOps工具链完全整合后,只需要修改pepeline的代码就可以自动化管理代码上线的流水线,在可视化平台可以一眼看到每个步骤的执行过程及结果.

    DevOps工具链是一个非常庞大的分支,会在后续章节一一展开.

    DevOps的火热也对DevOps提出了更高的要求

    • DevOps需要运维站在开发的角度想问题,可以不会高超的编程技巧,但是基本的编译,依赖,构建知识必不可少
    • Devops需要有更敏锐的大局观,需要掌握的知识点更多了,要求也更高了
    • Devops需要更懂底层原理,出了问题才能更快的定位出问题的本质
    • Devops需要有更强的独立完成任务能力,Google/Github/Stackoverflow是最好的老师
    • Devops需要有更强的持续学习能力.技术在进步,架构在演化只有持续学习才能找到最合适自己的解决方案
    • Devops需要足够,才会想尽办法 Automatic everything
    • 不会说段子的运维不是好DevOps,沟通协调能力也很重要

    DevOps Roadmap

    以下是Kamran Ahmed,以及佚名整理制作的两张devops roadmap图
    0_1542016677745_devops_roadmap_1.png
    0_1542016685280_devops_roadmap_2.png

    接下来我们不会对每个模块进行详细深入解刨,而是以最佳实践的方式进行展开

    最后附上一张大家眼中的DevOps
    0_1542016730127_devops_word_cloud.png