简述DevOps和ChatOps

来源:互联网 发布:中国数据统计年鉴 编辑:程序博客网 时间:2024/06/07 05:56

前段时间有个同事接手了一个名为DevOps的任务,今天无意中又听见了一个成为ChatOps的东西。

下面来看看这两个到底是何方神圣。


一、DevOps

DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。

简介


我们可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。
传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法。


可能需要引入DevOps的场景

  1. 使用敏捷或其他软件开发过程与方法
  2. 业务负责人要求加快产品交付的速率
  3. 虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍
  4. 数据中心自动化技术和配置管理工具的普及
  5. 有一种观点认为,占主导地位的“传统”美国式管理风格(“斯隆模型 vs 丰田模型”)会导致“烟囱式自动化”,从而造成开发与运营之间的鸿沟,因此需要DevOps能力来克服由此引发的问题。
  6. DevOps经常被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。

DevOps对应用程序发布的影响

在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下:
与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)
减少变更范围与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。加强发布协调靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。自动化强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。


DevOps五大重点

  1. 警惕总体安全风险。虚拟化、云、BYOD以及软件定义网络(SDN)等新兴技术不断得到采用意味着网络变得越来越复杂,愈发的异构化,安全风险也是如此。这其中的巨大挑战是迄今为止,安全被视为是事后想法,而安全组织又被认为是企业的抑制因子,只会告诉企业什么做不了而不是如何安全地做事情。这是一个文化问题,需要安全、开发者以及运营团队培育出此前未有过的一定水平的信任和协作。做到这一点的唯一办法是逐步地、带着警惕地去做。
  2. 观察安全风险变化,把DevOps看作一种可将开发者和IT运营引向更快更高效的部署、运营及升级应用的协作理念和流程很重要。
  3. 注意可伸缩性。企业和技术的人必须在功能、推向市场的时间、成本以及风险承受能力等方面做出权衡。你需要有合适的衡量目标,包括特定模式下的那些端点上有多少用户,有多少并发请求。
  4. 争取实现易用—DevOps就是自动化和可重复性。
  5. 管理网关。尽管新的目标是在开发和运营团队之间建设最好的文化,但为了确保产品环境保持稳定,在这两个职能之间保留一些网关仍然是好的。


DevOps三种便利

将人置于技术之前

投资在那些关注技术的使用,以及如何采用持续开发、测试、集成、部署和操作的培训计划上。

安全和管理

对云应用开发的管理必须是系统性的,构建在DevOps流程中的每一步,包括对使用的服务或API,以及服务发现和服务的依赖上所做的限制的政策。

作出改变

DevOps需要改变和发展以跟上新兴的理念和技术。在设计你的DevOps流程时始终要将变化考虑在内。


DevOps度量标准

  • 开发应用所花费的最高时间:帮助理解可以多快得开发应用
  • 失败部署的百分比:看出是否部署成功
  • 客户ticket数:显示产生了多少问题
  • 故障恢复的平均时间:显示从应用程序bug或者故障恢复需要多长时间
  • 用户数:显示应用程序对于用户而言的有用程度

DevOps在大型机上使用

devops加快交付速度

devops填补了之前的空白部分,devops通过建立一个完整的生命活动周期,devops关注如何更好地获取IT运维团队的反馈。devops将敏捷原则应用于管理领域,devops使得开发人员和管理员可以进行毫无障碍的沟通。
devops还有很多不足,devops导致代码交接容易出现延迟。devops同样的情况也会出现在重大bug的修复过程中。

devops运行时软件优化

devops可以在两个方面提升知识水平和程序质量。首先,devops对于许多较新的、面向对象的操作系统,比如Linux,devops很有可能不关机而一直保持运行状态。因此,devops容易出现问题,比如错误的垃圾回收机制以及不能正确重新组织关系型数据存储。
devops借鉴了大型机管理员积累的经验来重新认识软件平台类型,以及可能引起这些类型问题的开发和/或测试流程。devops开发团队可以使用嵌入式模式保护代码来部署代码库和测试环境。
devops的目标是在测试环境中,或者devops以代码的形式嵌入到应用程序自身当中以获取大型机复杂性的现有知识,devops不希望大型机管理员发现问题所在。devops并不仅可以使得开发人员和测试人员的工作更加轻松,同样可以简化管理员的工作。

devops提高大型机管理员工作效率

devops可以改善这种大型机管理模式,devops提高大型机管理员的工作效率。首先,devops通过实现标准配置和Linux相关任务的自动化,devops可以保证管理员拥有更多时间来“救火”。devops通过确保解决方案是长期有效和高质量的来减少对于处理紧急情况的处理需求。此外,devops让管理员也参与敏捷开发流程,和开发团队进行沟通,当开发团队拥有了一个能够快速定位问题并且修复运行时问题的测试工具或者代码库之后,devops就可以减少管理员修复bug以及与开发部门协调所花费的时间。[13]


DevOps加强云应用安全

1.自动化手动安全测试

自动化在DevOps中很重要因为它提供了准确性和速度。应用交付需要高效,而手动安全测试就是不够快。更重要的是,第三方在外部手动测试中往往会漏掉测试错误。
尽管组织不需要完全抛弃手动测试,他们应该将自动化过程提上日程。安全团队应该确定如何自动实施他们的手动过程。当嵌入坚固DevOps到你现有的云环境中时,对安全测试工具进行审核以确保可以将其加入到持续集成和应用交付过程中。然后,删除或替换不适合DevOps的工具或者不能与你的云业务集成的工具。

2.尽早优先处理安全性

尽管IT行业采用敏捷和DevOps过程的比例很大,安全测试周期仍然还是基于传统繁琐的瀑布模型。这意味着许多组织忘记做安全资格测试,如PCI检查和风险评估,直到几乎为时已晚。为了更有效地同步安全和DevOps周期,从开发过程一开始就进行安全测试。

3.建立跨职能团队参与

实施坚固DevOps,安全团队需要开发和运营团队紧密合作。当这么做时,安全专家应该保持开放的心态去了解他们同事的文化和语言。这样,这种关系就成了一种真正的伙伴关系而不是一种机械的形式。

4. 在运营中嵌入安全工具

在一个坚固DevOps模型中,安全团队应该让组织的其他部门也了解安全工具。通过分享技术知识,企业将有更广阔的劳动力,可以解决在第一线的安全问题。为了帮助小的安全团队在更大的DevOps组织内扩展其业务影响力,可以把安全工具包括在通用的操作工具包里。

5.监控和审计集成过程

紧密监控和记录集成和交付流程,以确保高质量的软件。这也有助于识别安全问题。使用粒度变化日志为审计人员准备信息,以及可扩展的云安全监测工具。这些工具应能够自动跟踪和测量新添加的资源。此外,它们应汇总监测数据和快速检测实际的问题,同时消除误报。[14]


二、ChatOps

Hubot 是嵌入到 Github 聊天系统里的软件,或者说,它是个聊天机器人。5 年前,一个名为 Ryan Tomayko 的员工构建了 Hubub,目的是让工程师们更方便地管理 Github 的硬件和软件。

通过向 Hubot 发送信息,工程师们可以升级服务器上的系统,删除数据库中的数据,甚至让全部的服务器下线。不过,Hubot 的能力在不断增强。如今,它向公司里所有人提供服务,处理各种纷繁复杂的任务。

在公司外部,Hubot 被称作是“ChatOps”工具。就是说,它能够处理“运营”任务,比如设置新服务器和数据库,或者升级 GitHub 网站背后的代码。ChatOps 是 Github 自造的单词,不过,这种想法来源于软件界的 DevOps 运动。通过一些新型的软件,工程师们可以让公司内部的大量硬件和软件实现自动化设置和升级。ChatOps 添加了对话元素。

Hubot 的能力不仅仅就局限于系统任务。如果你想要与地球另一端的员工对话,Hubot 能告诉你对方的时区;如果你是公司的程序员,Hubot 能告诉你,GitHub 软件的特定部分何时有过改动;如果你是财务部门的员工,Hubot 能向你展示公司最近的收入数据。


参考文献:

http://netsmell.com/post/github-gitbot.html

http://baike.baidu.com/link?url=q3gi-QFyQjPuVtYpDV84lCAwaEu6S_7FWfbJ0AaXHUz-kw6EJtnWlqOaTYpj1SI_u2WNODQgaPNx2ADWyvVY0_#17


0 0