精华内容
参与话题
问答
  • DevOps

    2021-01-09 23:00:34
    什么是DevOps 前言 字面意思上说 DevOps 是指“开发运维一体化”,即通过工具辅助开发完成运维的部分工作,减少成本。但深入理解了 DevOps 之后,你会发现 DevOps 其实是一种软件研发管理的思想,方法论,他追求...
    
    什么是DevOps
    
    

    前言

    字面意思上说 DevOps 是指“开发运维一体化”,即通过工具辅助开发完成运维的部分工作,减少成本。但深入理解了 DevOps 之后,你会发现 DevOps 其实是一种软件研发管理的思想,方法论,他追求的是一种没有隔阂的理想的研发协作的状态,可能涉及到的角色有开发、测试、产品、项目管理、运维等等。所以我们认为,为了帮助研发团队在保持质量的前提下提高交付效率的方法和方法论都隶属于 DevOps 的范畴。

    比如 Google 提出的 5 个 DevOps 原则,这套原则中必须依赖于工具辅助的部分只有后两点,更多的则是对于开发组织形式的内省:

    精简组织架构;
    愿意承担一部分试错带来的损失;
    分阶段地一小步一小步地进行转型;
    最大化地利用工具和自动化流程;
    对所有的过程和结果进行记录和分析。
    所以 DevOps 不是简单的开发软件化,而是企业的学习能力不断提升的结果,将企业改造成敏捷应对的学习型组织,运用新的工具,优化组织架构和流程,不断地进行自我革命和创新的方式。工具是辅助,而非基础。


    一、困难重重的 DevOps 落地?

    在弄清楚了 DevOps 的宏观定义之后,我们再来观察一下 DevOps 目前在国内的实践现状。根据南京大学 «DevOps 中国•2018 年度调研» 的调研报告,目前设有 DevOps 实践团队的公司中,科技和互联网行业占比接近 70%。其他行业的从业者对 DevOps 的认知还存在一定的不足。

    这与我们的调研走访体验一致:大多数企业都愿意尝试运用 DevOps ,但是在实践 DevOps 中,普遍碰到了比较大的困难。主要是以下三个原因:

    1.对 DevOps 有不切实际的预期

    部分团队为了做 DevOps 而做 DevOps,并没有真正的从业务的角度出发来考虑。

    如前文所说,DevOps 不是银弹,高水平的研发团队在 DevOps 实践中将快速找到研发质量与业务增长的平衡点。但对于许多仍然在使用中心化的研发组织形式的团队来说,DevOps 的尝试无法立即获得肉眼可见的增长数据,思索与尝试带来的对团队的训练可能会是第一份收获。

    2.步子迈得太大

    新生代互联网公司诞生于 DevOps 理念已经相对成熟的年代,且互联网公司天生地将迭代速度作为追求目标之一,使得这些公司能够在发展的初期,就将 DevOps 的理念融入到公司的架构设计中。
    在这里插入图片描述
    上图是 Netflix 的整个系统架构。如此复杂的系统架构同时还能每天迭代几十个版本,无法通过传统的研发管理模式来维护,只有通过实践 DevOps 的理念,来优化组织的分工、资源和能效,才能得以实现。在这样的组织里,已经不需要有人了解所有模块是做什么,每个人只需要对自己的模块负责。

    而很多企业,为了巩固和提高自己的市场竞争力,非常急于达成上述高效的状态,并且希望能一步到位。国内其实大部分团队都没到大规模实践 DevOps 的时间点,有些团队甚至连分支开发、并行开发的方式都没有。我给这类的企业建议是:不要想着一口气吃成个胖子,一步一步来,先理解 DevOps 的理念和对业务的实际意义,然后搭建一只小的 DevOps 团队来承接一项新业务,旧的业务仍然使用旧系统,双轨并行,等待小团队适应了 DevOps 的管理节奏之后再向其他团队进行推广。

    在这里插入图片描述
    之前出过一篇关于 DevOps 的专题报告《四周年 · 专题报告:双速 IT》,也可以作为参考。

    3.工具链危机

    实践 DevOps 的原则中很重要的一点就是对工具的运用及依赖工具搭建合适企业的自动化流程。但是目前市面上缺乏成熟的 DevOps 工具链,各个服务商的细分工具层出不穷,企业为了搭建整套 DevOps 流程,需要研究几十种工具,并选取其中的 7-8 种进行落地实践。非常依赖于管理者的项目经验,没有 DevOps 经验的团队起步将会比较困难。

    以 CODING 为例。2018 年之前 CODING 产品仅有任务及代码管理模块。我们是这样进行工作的:产品经理在 CODING 上撰写文档创建任务,研发 Leader 将任务分配给开发,开发完成后提交代码,并创建 MR,我们在本地部署了 Jenkins 进行持续集成进行构建和测试,再由其他工程师进行人工评审,通过后并到发布分支,进行预发布,再通过持续集成进行构建,自建 Docker registry 进行构建物管理。构建出的 Docker 镜像在测试环境和预发布环境上依次进行自动化测试及人工测试,测试通过后,使用我们运维自己搭建的工具进行部署管理。

    目前 CODING 每天都进行产品迭代,可以快速响应用户需求并保证服务质量,但搭建这一整套的流程高度依赖于团队能力,门槛非常高。

    3.DevOps 是未来的趋势

    既然 DevOps 这么难,坑这么多,为什么还要做呢?因为这是企业未来的长期诉求。

    从大趋势上分析,未来所有企业都将是软件企业,制造软件、服务软件、构建于软件。比如全世界最大的出行公司 Uber,其实是一个软件公司,而非出租车公司。从企业自身诉求出发,中国的中大型企业已经逐步进入了创新驱动的阶段。无论是供给侧改革还是智能制造 2025 都要求企业修炼内功,提高效率促进创新。过去几年中在塑造前沿行业的 DevOps 理念将在 2019 年左右成为主流,成为企业能否在行业内脱颖而出的关键性因素。

    在 Statsia 2018 年的报告中,有超过 72% 的企业或多或少地开始践行 DevOps 的理念,其中完整采用 DevOps 的比例高达 17% ,而在 2017 年这个数字仅有 10%。
    在这里插入图片描述
    真正能够实践 DevOps 的团队也会为自身的业务带来巨大的提升。根据 Puppt 的2017 DevOps State Report,DevOps 型团队将部署频率提高46倍,交付速度提高 440 倍。

    可见,在国际上来说,DevOps 已经处于企业爆发性需求的前夜。而在国内公司中,新兴企业的成功实践也在为中国企业的 DevOps 输送方法论与有经验的专家。

    字节跳动可以说是 DevOps 最佳践行者之一。在其创始人张一鸣看来:

    公司的业务越复杂,人越多,组织就越大。这导致信息失效、(下属)向上管理和业务变大。他把类似组织的负规模效应称为“自嗨”,这是他所不能接受的。
    故而字节跳动在组织架构上,总共只有 3 个核心部门:技术、Growth 和商业化,分别负责研发、推广和收入。

    在这里插入图片描述
    今日头条、抖音、西瓜视频……字节跳动的每款 App 都基于这三个部门来发展。在项目开始时,公司会为每个项目设置虚拟项目组,由三个核心部门抽调人员组成,试水成功后直接推广。所有产品共用一条技术线,快速试错。针对 App 类产品的快速迭代的业务特性,字节跳动依据 DevOps 理念对组织架构进行调整和优化,从结构上保证了技术支持业务创新的能力。

    4.Why Now?

    DevOps 的理念和优势被说了很多年,但一直都只在少量公司有能力实践。 软件的工程化历史还比较短暂,业务需求与技术理念都日新月异,前两年大量的团队还在为了研发新的业务疲于奔命,没有精力关注研发效能升级的问题。许多团队的研发管理还停留在靠微信喊话和 Excel 管理的阶段。

    而如今,在市场遇冷和企业数字化转型的契机下,更多的公司开始将目光放在企业内部的效率提升和研发成本的控制上。

    在 Netflix、Google 这样发展比较久的的巨型公司可以耗费大量的内部资源从底层服务开始从零搭建 DevOps 流程。而像字节跳动这样的新型公司可以如此快速实现敏捷,也得益于云服务的逐步成熟。

    尤其是在当前环境下,运维业务逐步多样化和复杂化,很多传统的运维技术和解决方案已经不能满足当前运维所需,越来越多的团队选择使用 Docker kubernetes 等技术提升运维能力。同时,云厂商的 SaaS、IaaS 和 PaaS 服务相对于传统的运维业务帮助企业节省大量硬件维护的成本和时间,让企业能专注于业务的发展与创新。

    总结

    孙子兵法有云,凡兵法韬略,在道不在术。面对日新月异的的市场,企业必须逼迫自己不断的进行革新来应对市场变化。就像马化腾在互联网大会上提到的,现在互联网已经发展到了深水区,甚至是无人区。只有不断的迭代,迅速反应,才能应对未来的变化,而这也正是 DevOps 所强调的。

    展开全文
  • Devops

    2020-04-13 12:00:21
    https://www.jianshu.com/p/c5d002cf25b9 ----Devops软件研发的系统化流程 https://zhuanlan.zhihu.com/p/95309012 ----Devops工具介绍

    https://www.jianshu.com/p/c5d002cf25b9 ----Devops软件研发的系统化流程
    https://zhuanlan.zhihu.com/p/95309012 ----Devops工具介绍

    展开全文
  • devops

    2019-06-01 21:02:00
    DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。 DevOps的概念 DevOps一词的来自于Development和Operations的...

     

    DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。

     

     

    DevOps的概念

    DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。

    DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。

     

     换句话说,DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个DevOps能力图,良好的闭环可以大大增加整体的产出。

    历史变革

    由上所述,相信大家对DevOps有了一定的了解。但是除了触及工具链之外,作为文化和技术的方法论,DevOps还需要公司在组织文化上的变革。回顾软件行业的研发模式,可以发现大致有三个阶段:瀑布式开发、敏捷开发、DevOps。

    DevOps早在九年前就有人提出来,但是,为什么这两年才开始受到越来越多的企业重视和实践呢?因为DevOps的发展是独木不成林的,现在有越来越多的技术支撑。微服务架构理念、容器技术使得DevOps的实施变得更加容易,计算能力提升和云环境的发展使得快速开发的产品可以立刻获得更广泛的使用。

    好处是什么?

    DevOps的一个巨大好处就是可以高效交付,这也正好是它的初衷。Puppet和DevOps Research and Assessment (DORA) 主办了2016年DevOps调查报告,根据全球4600位各IT公司的技术工作者的提交数据统计,得出高效公司平均每年可以完成1460次部署。

    与低效组织相比,高效组织的部署频繁200倍,产品投入使用速度快2555倍,服务恢复速度快24倍。在工作内容的时间分配上,低效者要多花22%的时间用在为规划好或者重复工作上,而高效者却可以多花29%的时间用在新的工作上。所以这里的高效不仅仅指公司产出的效率提高,还指员工的工作质量得到提升。

    DevOps另外一个好处就是会改善公司组织文化、提高员工的参与感。员工们变得更高效,也更有满足和成就感;调查显示高效员工的雇员净推荐值(eNPS:employee Net Promoter Score)更高,即对公司更加认同。

    快速部署同时提高IT稳定性。这难道不矛盾吗?

    快速的部署其实可以帮助更快地发现问题,产品被更快地交付到用户手中,团队可以更快地得到用户的反馈,从而进行更快地响应。而且,DevOps小步快跑的形式带来的变化是比较小的,出现问题的偏差每次都不会太大,修复起来也会相对容易一些。

    因此,认为速度就意味着危险是一种偏见。此外,滞后软件服务的发布也并不一定会完全地避免问题,在竞争日益激烈的IT行业,这反而可能错失了软件的发布时机

    为什么DevOps会兴起?

    为什么会继续火下去?

    条件成熟:技术配套发展

    技术的发展使得DevOps有了更多的配合。早期时,大家虽然意识到了这个问题的,但是苦于当时没有完善丰富的技术工具,是一种“理想很丰满,但是现实很骨感”的情况。DevOps的实现可以基于新兴的容器技术;也可以在自动化运维工具Puppet、SaltStack、Ansible之后的延伸;还可以构建在传统的Cloud Foundry、OpenShift等PaaS厂商之上。

    来自市场的外部需求:这世界变化太快

    IT行业已经越来越与市场的经济发展紧密挂钩,专家们认为IT将会有支持中心变成利润驱动中心。事实上,这个变化已经开始了,这不仅体现在Google、苹果这些大企业中,而且也发生在传统行业中,比如出租车业务中的Uber、酒店连锁行业中的Airbnb、图书经销商Amazon等等。能否让公司的IT配套方案及时跟上市场需求的步伐,在今天显得至关重要。

    DevOps 2016年度报告给出了一个运维成本的计算公式: 
    停机费用成本 = 部署频率 * 版本迭代失败概率 * 平均修复时间 * 断电的金钱损失

    来自团队的内在动力:工程师也需要

    对于工程师而言,他们也是DevOps的受益者。微软资深工程师Scott Hanselman说过“对于开发者而言,最有力的工具就是自动化工具”(The most powerful tool we have as developers is automation)。

    工具链的打通使得开发者们在交付软件时可以完成生产环境的构建、测试和运行;正如Amazon的VP兼CTO Werner Vogels那句让人印象深刻的话:“谁开发谁运行”。(You build it, you run it)

    实现DevOps需要什么?

    硬性要求:工具上的准备

    上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下:

    • 代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion

    • 构建工具:Ant、Gradle、maven

    • 自动部署:Capistrano、CodeDeploy

    • 持续集成(CI):Bamboo、Hudson、Jenkins

    • 配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail

    • 容器:Docker、LXC、第三方厂商如AWS

    • 编排:Kubernetes、Core、Apache Mesos、DC/OS

    • 服务注册与发现:Zookeeper、etcd、Consul

    • 脚本语言:python、ruby、shell

    • 日志管理:ELK、Logentries

    • 系统监控:Datadog、Graphite、Icinga、Nagios

    • 性能监控:AppDynamics、New Relic、Splunk

    • 压力测试:JMeter、Blaze Meter、loader.io

    • 预警:PagerDuty、pingdom、厂商自带如AWS SNS

    • HTTP加速器:Varnish

    • 消息总线:ActiveMQ、SQS

    • 应用服务器:Tomcat、JBoss

    • Web服务器:Apache、Nginx、IIS

    • 数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库

    • 项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker

    在工具的选择上,需要结合公司业务需求和技术团队情况而定。(注:更多关于工具的详细介绍可以参见此文:51 Best DevOps Tools for #DevOps Engineers)

    软性需求:文化和人

    DevOps成功与否,公司组织是否利于协作是关键。开发人员和运维人员可以良好沟通互相学习,从而拥有高生产力。并且协作也存在于业务人员与开发人员之间。

    出席了2016年伦敦企业级DevOps峰会的ITV公司在2012年就开始落地DevOps,其通用平台主管Clark在接受了InfoQ的采访,在谈及成功时表示,业务人员非常清楚他们希望在最小化可行产品中实现什么,工程师们就按需交付,不做多余工作。

    这样,工程师们使用通用的平台(即打通的工具链)得到更好的一致性和更高的质量。此外,DevOps对工程师个人的要求也提高了,很多专家也认为招募到优秀的人才也是一个挑战。

    DevOps的采用现状

    哪些公司在用?

    DevOps正在增长,尤其是在大企业中:调查发现,DevOps的接受度有了显著提高。74%的受访者已经接受了DevOps,而去年这一比例为66%。目前,在81%的大企业开始接受DevOps,中小企业的接受度仅为70%。

    那么具体而言都有些公司在采用DevOps呢?Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Target(泛欧实时全额自动清算系统)、Walmart、Sony等等。

    他们怎么实施的?

    首先,大企业正在自下而上接受DevOps,其中业务单位或部门(31%)以及项目和团队(29%)已经实施DevOps。不过,只有21%的大企业在整个公司范围内采用了DevOps。 

    其次,在工具层面上,DevOps工具的用量大幅激增。Chef和Puppet依然是最常用的DevOps工具,使用率均为32%。Docker是年增长率最快的工具,用量增长一倍以上。Ansible的用量也有显著增加,使用率从10%翻倍至20%。

     

    参考:https://www.cnblogs.com/liufei1983/p/7152013.html

    转载于:https://www.cnblogs.com/cuiqq/p/10960991.html

    展开全文

空空如也

1 2 3 4 5 ... 20
收藏数 22,198
精华内容 8,879
关键字:

devops