坦白的讲:世界上没有哪种工具能够像DevOps这么神奇(或敏捷,或精益)。DevOps在开发和运营团队之间建立了完美的合作与沟通,因此与其说这是一种神奇的工具,不如说是一种文化的转变。

然而,团队之间也拥有支持自动化和协作的工具及技术。经常有人问我们在Atlassian时关于支持DevOps工作方式所用到的工具(除了我们自己)。所以,我准备拟定一份购买指南,标明购买DevOps工具时所需要的东西并且告知您我们团队所用到的工具。

尽管许多工具都能以这种或那种的方式在开发周期的各个阶段发挥作用,但没有一种工具能在每个阶段起到主要作用。所以,当我们谈及DevOps工具时,将其分解到各阶段是很有帮助的。我将其分解成:规划、构建、持续集成、部署、运营以及持续反馈。


1.    规划2.    构建3.    持续集成4.    部署5.    运营6.    持续反馈


1.    规划

视觉与设计方面达成协作

根据敏捷手册中的内容,我们推荐使用在规划中允许您的开发团队实现迭代的工具。这样,您就能很快地从用户那里获知情况,并通过用户反馈优化产品。寻找能够提供sprint规划特点的工具。

另外,优先考虑为您的开发团队持续收集用户反馈,并加以组织形成可执行信息。寻找可以支持“异步讨论”的工具(如果您愿意)。重要的是每个人都可以分享并发表评论:想法、策略、目标、需求、路线图以及文档。

不要忘记整合。无论您决定将功能或项目开发到多大范围,都应当将用户想法列入您的开发列表。

我们使用的工具:Confluence, HipChat,JIRA Software

2.    构建

开发的阶段环境

虽然Puppet和Chef主要受益于运维,但开发人员通过工具来提供各阶段的开发环境比如Docker。虚拟编码和可支配的产品副本可以帮助您完成更多工作。

一些奇怪的类路径?Mave安装突然被损坏?基础设施自动化意味着重新配置比修复的速度更快,也更可靠,这也意味着您可以加快升级您的开发环境。

当整个团队在相同配置的环境中工作时,“用自己的机器工作!”别开玩笑了,这是真的(现在就是在开玩笑)。

我们使用的工具:Docker

基础设施自动化

开发人员创建模块化应用,因为模块化应用更加可靠,易于维护。所以,为何不将这种想法延续至IT基础架构之中?

这很难应用到系统之中,因为他们总是在不断变化。因此我们通过代码配置加以解决。配置代码可应用于裸机,并将服务器恢复至基线水平。

它可以存储在版本控制系统中。可对其进行测试。纳入CI(持续集成)中。同行评审。您可以对其进行命名。

当在代码中对系统知识库编译时,题目文件和内部文档变得不太重要。产生可重复的流程和可靠的系统。少说话,多做事。

我们使用的工具:Bamboo, Bitbucket, Chef,Docker, Puppet

协作编码

不需要等待董事会批准后再部署到生产环境中,您可以通过“拉请求”进行同行评审,以提高代码质量和生产量。

什么是拉请求?“拉请求”可以将您在资源库发布一个开发分支的变化告知您的团队。随后您的团队可以查看这个更改,并在将它们集成到主代码行之前进行讨论修改。

3.    持续集成

持续集成

持续集成就是每天都要对共享存储库中的代码进行多次检查,并且每次都要对其进行测试。这样,您能及时发现问题,在最初阶段修复它们,并尽可能早的向你的用户展现新的功能。

由于分支和合并的工作流程是时下比较流行的(这是理所当然的!),所以避免在多分支环境中运行CI的工具可以保证在不降低开发速度的情况下进行严格的测试。

寻找那些可以自动将测试结果应用到开发分支中的工具,并在分支构建成功时为您提供是否将其推送至master的选择。除了这一点,您可以通过一个简单的集成从您的团队沟通工具中获得实时警报。

我们使用的工具:Bamboo, HipChat

自动化测试

从长远来看,自动化测试的回报会随着时间的推移通过加快开发和测试周期体现。而在一个DevOps环境中,最重要的是它的另一个原因:意识。

对于准备和支持开发构建工作,自动化测试的操作过程透明化以及彻底性是非常重要的。与手动测试不同,自动化测试每次都可以保证诚信地执行且遵循相同的标准。它们还会生成报告和趋势图,以帮助识别高风险区域。

风险在软件中是真实存在的,但您不能忽略您无法预料的风险。帮您的运营团队一个忙,让他们和您一起探究幕后是如何运行的。寻找能支撑墙板的工具,让每个人都可以参与项目的具体构建或部署结果的评论中。工具的额外加分特点是能够使在突击测试和探索性测试中的相关操作更加容易。

我们使用的工具:Bamboo, Bitbucket,Capture for JIRA

4.    部署

发布仪表盘

软件交付中压力最大的部分之一是让所有的变化、测试以及未发布的版本信息部署到一个地方。任何人在发布前经历的最后一件事情是需要一个漫长的会议来报告状态。这就是发布仪表盘流行的地方。

寻找一个集成了您的代码库和部署工具的单一仪表盘工具。在一个地方对于你想寻找的关于分支,构建,拉请求和部署警告等信息提供高可视化。

我们使用的工具:JIRA Software

自动化部署

没有什么神奇的方式可以让自动化部署工作于每个应用程序和IT环境中。但是,使用Ruby或bash将Operations’runbook转换成一个cmd-executable脚本是一种常用的启动方法。良好的工程实践是至关重要的。使用变量分解出主机名 – 为每个环境提供独特的脚本或者代码是无趣的(至少一半是无意义的)。创建实用方法或脚本以避免代码重复。并且同行审查您的脚本,执行完整性检查。

首先尝试自动化部署到您的最低级别的环境中,其中您将频繁地使用自动化,接着复制所有的方式至生产环境。如果不出意外,这次练习强调了您的环境之间的差别,并生成一个标准化的任务列表。作为奖励,通过自动化,标准化部署减少了环境内部和之间“服务器漂移”。

像Puppet和Chef等配置工具减少了在标准化环境中的困难。并且有负载工具协助自动化部署。Atlassian公司自己的Bamboo支持逐步协调复杂部署,并为每个环境的历史提供可视性。

集成了Puppet或Chef的HipChat允许您从聊天室控制部署。通过简单搜索,您肯定能够找到一种适合您且在运算内的应用程序。

我们使用的工具:AWS, Bamboo, HipChat,Puppet

5.    运营

应用程序及服务器性能监控

应该对以下两种类型实施自动化监控:服务器监控和应用程序性能监控

手动““topping”一个盒子或通过测试接入您的API都对现场检查是有帮助的。但是要了解趋势和您应用程序(和环境)的整体健康状况,您需要7X24小时可以监听和记录数据的软件。

如您所想:这样一种应用软件是存在的。事实上有很多这样的软件。New Relic,Splunk和Nagios是最受欢迎的,而且能够满足这两种类型的监控。寻找可以与您的群组聊天客户端相集成的工具,以便将提醒信息直接发送给您的团队群或某事件的专属群。

我们使用的工具:BigPanda,HipChat,HostedGraphite,Nagios,NewRelic,PagerDuty,Pingdom,Splunk

沟通与集群

跨团队沟通是实现文化转变的第一步,聊天工具可促进它的实时性。很多聊天工具都有专用的群,在这里专家可以对发布在群里的事件及时跟进,并快速修正。

同样重要的还有保持警惕,这样可以最大限度地维持正常运行时间。寻找一个可扩展和可集成监控工具的聊天工具,让您不会错过任何一个重要的服务降级警报。

最受企业喜爱的是拓展他们自己之外的沟通。寻找一个可以帮您及时通知用户的工具,让他们实时了解您的动态。

我们使用的工具:BigPanda,DataDog, HipChat,NewRelic, PagerDuty,StatusPage

事件、变更和问题跟踪

增进团队之间协作的关键是确保他们可以查看相同的工作。当事件被报告时发生了什么?他们是否有联接并追踪软件的问题?当发生改变时,他们是否与发布相关联了?

没什么比在不同的系统中进行事件和软件项目追踪更能阻碍开发与运维间的协作了。寻找那些使事件、变化、问题和软件项目在一个平台上的工具,帮助您快速识别并解决问题。

我们使用的工具:JIRA Service Desk,JIRA Software

6.    持续反馈

通过用户反馈创造更好的产品

客户已经告诉您,您是否创造了合格的产品——您只需要倾听即可。这包括NPS数据、流失调查、bug报告、支持文件,甚至是事件推文。在DevOps文化中,产品团队中的每个人都能够查看用户评论,因为他们为一切从发布计划到探索性测试提供帮助指导。

寻找应用程序将您的聊天工具与您最喜爱的调查平台及集成用于收集NPS的反馈。Twitter和/或Facebook也可以与聊天工具集成进行实时反馈。为了更深入的分析来自社会化媒体的反馈,一个可以使用历史数据得出报告的社交媒体管理平台是很值得投资的。

分析并引入反馈在短期内会感觉可能减缓了发展步伐,但从长远来看,它比发布没有人想要的新功能更有效。

我们使用的工具:GetFeedback,HipChat,JIRA Service Desk,Pendo,Surveymonkey,HootSuite

完善您的DevOps工具集

Atlassian的工具可在开发生命周期的每个阶段提供跨团队协作支持。正如您所看到的,我们利用同行构建的插件和单机工具增强我们的DevOps工具集。

在小公司里,一个团队可能负责整个开发生命周期。在大公司里,是被各个部门承担的。无论如何,DevOps都能够打破僵局,使这个生命周期更快、高度自动化以及无缝协作 - 无论是跨职能团队还是在一个团队中。

首先是选择正确的DevOps工具,最重要的是认真审视当前软件和IT操作过程,并决定需要改进的地方。我希望这个清单可以为您指明正确的方向。

如何选择正确的DevOps工具的更多相关文章

  1. (转)权威支持: 选择正确的 WebSphere 诊断工具

    权威支持: 选择正确的 WebSphere 诊断工具 原文:https://www.ibm.com/developerworks/cn/websphere/techjournal/0807_supau ...

  2. Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾

    Fbric.Ansible.Docker.Chaos Monkey:DevOps工具的年中回顾 [编者按]近日,Cyber Engineering Solutions Group 技术经理 Hasan ...

  3. Web Scale IT 与 6 种 DevOps 工具

    新年伊始,在总结过去一年 IT 行业变化和发展的同时,不少企业更关注未来一年甚至几年的行业趋势.Gartner 于 2014 年发表了文章 Gartner Says By 2017 Web-Scale ...

  4. JavaScript是如何工作: 深入探索WebSocket和HTTP/2与SSE + 如何选择正确的路径!

    原文:<JavaScript是如何工作: 深入探索 websocket 和HTTP/2与SSE +如何选择正确的路径! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 文章底部分 ...

  5. [转] 如何选择正确的Hadoop版本

    Gartner:如何选择正确的Hadoop版本 这份报告的全名是<How to Choose the Right Apache Hadoop Distribution>.主要介绍了企业如何 ...

  6. 从大厂DevOps工具链部署,看现代产品的生命周期管理

    目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...

  7. 研发过程及工具支撑 DevOps 工具链集成

    https://mp.weixin.qq.com/s/NYm63nkCymIV3DbL4O01dg 腾讯重新定义敏捷 |Q推荐 小智 InfoQ 2020-09-03 敏捷开发奠基人 Robert C ...

  8. 再聊我们自研的那些Devops工具

    两年前我写了篇文章『我们自研的那些Devops工具』介绍了我们自研的一些DevOps工具系统,两年过去了这些工具究竟还有没有在发光发热,又有哪些新的变化呢,我将通过这篇文章来回顾一下这两年的发展与变化 ...

  9. 太多选择——企业如何选择合适的BI工具?

    在没认清现状前,企业当然不能一言不合就上BI. BI不同于一般的企业管理软件,不能简单归类为类似用于提高管理的ERP和WMS,或用于提高企业效率的OA.BPM.BI的本质应该是通过展现数据,用于加强企 ...

随机推荐

  1. top.location.href和localtion.href有什么不同

    top.location.href=”url”          在顶层页面打开url(跳出框架) self.location.href=”url”         仅在本页面打开url地址 pare ...

  2. rotate array 旋转数组

    class Solution {public: void rotate(vector<int>& nums, int k) { int n=nums.size(); int i=0 ...

  3. Discuz2 x3深入研究内容资料

    http://blog.csdn.net/yanhui_wei/article/category/1136193

  4. [UML]转:UML类图集中关系的总结

    转:http://blog.csdn.net/dragonpeng2008/article/details/6836448 在UML类图中,常见的有以下几种关系: 泛化(Generalization) ...

  5. 1029 C语言文法定义与C程序的推导过程

    1 阅读并理解提供给大家的C语言文法文件. 2 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 3 给出一段C程序,写出用上述文法产生这段C程序的推导过程. program → exte ...

  6. opencv的实用研究--分析轮廓并寻找边界点

    opencv的实用研究--分析轮廓并寻找边界点 ​      轮廓是图像处理中非常常见的.对现实中的图像进行采样.色彩变化.灰度变化之后,能够处理得到的是“轮廓”.它直接地反应你了需要分析对象的边界特 ...

  7. 基于SURF特征的图像与视频拼接技术的研究和实现(一)

    基于SURF特征的图像与视频拼接技术的研究和实现(一)      一直有计划研究实时图像拼接,但是直到最近拜读西电2013年张亚娟的<基于SURF特征的图像与视频拼接技术的研究和实现>,条 ...

  8. Python学习笔记-Day2-Python基础之字典操作

    字典的常用操作包括但不限于以下操作: 字典的字典的索引,新增,删除,循环,长度等等 这里将对列表的内置操作方法进行总结归纳,重点是以示例的方式进行展示. 使用type获取创建对象的类 type(dic ...

  9. Spring资源访问

    资源访问 1.Resource Jdk提供的访问资源的类并不能很好地满足各种底层的资源访问需求, 比如缺少从类路径或者web容器的上下文中获取资源的操作类. 鉴于此, Spring设计了一个Resou ...

  10. 通过PowerShell查询本机IP地址

    脚本内容如下: Write-Host "本机IP地址为:"(ipconfig|findstr "IPv4")[1].split(":")[1 ...