在非容器环境中实现DevOps

采用DevOps方式实现软件交付的原因之一是为了消除生产部署过程中的瓶颈,对于服务器端软件,通常涉及以下部分:

  • 应用程序环境,如操作系统参数
  • 第三方组件,如应用程序服务器,web服务器和数据库
  • 顶部运行的应用软件

为了消除部署瓶颈,DevOps旨在打破开发人员和IT运营人员之间的障碍(也是DevOps得名的原因),以促进协作的工作环境。因此,需要确保生产环境与开发环境保持同步,并且所有部署过程一起执行。实现这一目标的方式之一是通过使用容器,如Docker或Kubernetes。事实上,很多人将容器和DevOps理解成了同义词,并且将这两者建立了依赖的关系。

但是,这两者不需要依赖关系:完全可以在非容器环境下实现DevOps。

为什么容器很重要

容器是管理运行软件的操作系统的轻量级的抽象,它能够将进程彼此隔离,对资源使用加以限制,并帮助打包软件依赖。容器不会替代虚拟化,因为容器的操作更接近应用程序级别,而不是物理级别。

容器的高效率使得它应用非常广泛,通过容器用户可以快速部署并实现软件组件联机,与虚拟化相比它能够以较低的成本启动新的应用案例,用户可以更紧密地控制应用程序环境。例如,如果开发人员在容器中编写和构建软件,则容器及其中的一切都可以被打包并传输到生产服务器。效率和自动化使得DevOps和云运行良好。

容器中好的DevOps用例始终围绕着快速上线新服务器连接的需求,这通常是微服务部署的案例。容器可以非常有效地快速启动和破坏微服务和开发/测试环境,除此以外,在DevOps中使用容器更多的是一个选择,而不是一个需求,DevOps远不止目前这些。

非容器环境下无痛部署

不管容器能带来多少好处,有很多理由支持我们不采用容器化的方法来进行软件部署。包括:

  • 缺乏容器技能或相关知识
  • 特殊应用性能要求(即实时系统)
  • 实用软件环境下不支持的硬件(即嵌入式系统,专用或传统操作系统)
  • 公有云部署等等

不依赖容器来实现DevOps的成功,需要关注以下3点:

1、自动化:通过工具尽可能地实现自动化,无论是大型机应用程序还是微服务,都可以通过工具来减少手动工作量及其失误。

2、持续集成:通过持续集成,确保系统始终可用、可测试且理论上可释放,测试开发工作的结果是反馈循环的一部分。

3、连续测试:连续测试软件模块、组件、服务等,不要等到开发结束之后才集成和部署系统。

特定的构建和部署工具是有帮助的,并且通常需要达到使部署简化的自动化水平。然而,DevOps的最大成就主要来自于三个方向的努力:

  • 持续开发构建和测试周期
  • 更频繁地部署到生产服务器
  • 直接和即时反馈给开发人员

通过这三个努力,软件永远不会被孤立地构建,组件不断地进行集成,而且每个人都能知道需要改进的地方一切正常。因此,开发和IT部门可以保证正在构建的内容将按照预期的方式进行部署和运行。业务上线的过程中就在不断地突破瓶颈,因为在部署过程和生产环境中伴随着软件的测试,因此在开发周期结束时可以正常使用。

人员是DevOps成功的关键

成功的关键不是工具集,而是人员、沟通和度量。因为使用DevOps实践,当开发新版本的软件时间被限制在几周或者几个月内,在最终期限到来的时候,用户不用担心软件的部署对生产造成的影响,因为在开发过程中一直在进行测试。

这就是为什么它被称为DevOps实践,而不是DevOps过程、DevOps组、DevOps工具集或DevOps环境。容器可是成为DevOps实践的一个补充,帮助管理生产环境,但它不应该是DevOps必须的。相反,专注于DevOps实践,并在这个过程中使用容器才有意义。

原文链接:http://www.informationweek.com/devops/implementing-devops-without-containers/a/d-id/1328336


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/18704.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于17-03-13
0