DevOps初期对开发非常有优势,但随着版本更新与供应商的合作关系,运维逐渐成为重要角色。
有很多方法可以让开发者像IT运维经理那样思考——把他们加入凌晨2点的值班名单是个不错的方法——但为组织内扮演不一样职责的两类人提供信息共享工具,可以在整个应用程序生命周期内让所有人都获得一致的信息。
若应用程序没有按照设计的那样工作,将是一场灾难,PJM互联电网公司IT运营中心经理Colin Brisson说。该公司位于美国东北部,经营着一家日前市场。假设应用程序无法在同一时间关闭掉每位用户的买盘,那么市场是不公平的。
“你需要了解这些应用程序何时会出现问题,” Brisson说,只是这样做是无法发现开发中所有问题的。当留个主要程序在同一个基础设施上运行后——将产生复杂的相互作用,他说。
适合的工具
共享某个DevOps工具并不像听起来那么容易——“发布”、“部署”与“自动化”对双方皆有不一样含义。
“开发与运营之间存在着一个完整的语言障碍,这里指的不是方言,”Gartner公司的分析师Gonni Colvile在2014年IT基础架构与运营管理峰会期间说。
工作负载自动化与管理简化,是应对业务快速变化必不可少业务应用程序,所以选择适合的DevOps工具对应用程序性能的影响与底层硬件是一样的。
然而,这是一个困难的决定。部分原因是DevOps工具集功能无法一刀切;没法双击鼠标就安装好DevOps.“要明白每个工具在特定场景下,能为应用程序生命周期的每个阶段提供何种功能,”Colville说。需要找到一款可以与开发、测试再到生产相适应的工具。
应用程序生命周期
在应用程序生命周期的初期,开发者占据统治地位。然后,重点将转向上线前的部署任务,接着再转移到监控系统,以监控运行的计算机应用程序。假设应用程序的价值持续增长,生产效率率——应用程序如何工作,其可以怎样帮助公司增长或怎样才是最好的服务架构将正为之后的焦点。
对于易扩展和更新的计算机应用程序,开发需要考虑自动化。Chef,一款资历悠久的DevOps工作流管理工具,与Docker集装箱容器平台集成,通过镜像部署的轻量级虚拟化方式独立运行应用程序。容器集装箱主机能够提供共享内核的轻量级虚拟机,满足业务孤立运行。
Docker集装箱式部署替代传统运用程序部署采用安装包的方法,可以快速将应用程序更新同开发环境部署到正式环境中。
Chef可以基于服现有的服务器模版创建Docker镜像。这些镜像存在一个库中,类似另外一款开源工具Git.DevOps团队可以选择何时何地进行部署,并且可以进行双向配置变更,举个例子数据库服务器的地址并没有包含在初始镜像中。
团队可以依赖的DevOps工具,除了Chef还有其他竞争者,Puppet可以关联生产环境管理人员与代码之间的交流沟通。
另一家厂商,JumpCloud,提供自动化平台,可以让IT团队使用最擅长的脚本语言进行操作。这样开放的计算机应用程序对运维人员来说,只需要掌握脚本语言,而不需要开发人员的专业编码知识,JumpCloud高管说。
基于日志的DevOps工具同样可以让运营与开发链更紧密衔接。Splunk和Logentries这样的工具,以及其他各种开源软件,可以跟踪日志时间并分析数据以帮助分析和故障诊断。这样能够为不一样的团队提供一个共同的预约,方便大家在代码问题上达成共识。团队也可以通过其他来源添加额外数据,包括服务器或应用程序性能监控工具。
整体目标是通过应用程序层级或更低层级的配置变更,让应用程序和运营团队看到代码更新对应用程序效率的影响,或协助排查故障问题,这些都是根据实际情况而定。
Logentries是一款可以添加注释到DevOps工具仪表板上的工具,IT团队的不一样人员,可以查看日志事件中上下文信息和知识。
“记录事件描述与解决方案,这样的情报可以节约其他人四小时的工作时间,”公司首席科学家Trevor Parsons说
由于不一样产品能够在开发、质量保证、测试、预生产和生产阶段提供更好的的功能,投资DevOps工具组合是十分必要的。你还可能需要一套工具集,因为不一样应用程序有着不一样的生命周期,而且基于云计算的计算机应用程序可能需要不一样的DevOps工具,与托管的物理或虚拟机有所区别。