先论DevOps

DevOps 是一天实践方法,在保证高质量的前提下缩短系统变更从提交到部署。

DevOps 对传统职能部门的挑战

对于传统技术组织架构,团队通常是按照技能划分,除了业务开发部门,通常还会有测试部、运维部、安全部,项目管理部等技术支撑部门,大家按照职责各行其是搭建各自的工具平台,并通过项目的方式协作,完成系统的交付。这样相互隔离的各部门沟通效率比较低,出了问题大家总是互怼。

DevOps 文化提倡打破原有职能组织的限制,每个职能团队都开始拥抱和接受 DevOps 高度协同,研发和交付一体化的思维,同时也看到各个团队都正面临着转型、痛苦和挑战。

运维团队

大概 10 年前我的一个老大曾经问我一个问题:如果一个公司快倒闭了,最后一个失业的岗位会是谁?他给的答案是运维,因为一个公司只要存在一天就需要有运维去确保机器运行正常。

这个答案看似正确,然而在公有云的大潮下,一切都被冲击的支离破碎,传统运维工程师的需求大量减少开始面临着岗位危机,运维开发团队开发的传统的资产管理、运维监控等系统在公有云上都已经有成熟的产品。流程导向的 ITIL 运维管理体系已经过时,优秀的运维开发工程师开始转向技术导向的 DevOps 平台建设,研究和开发 docker 容器、自动化运维、智能运维等技术,顺利的完成了自身技能和职能的转变。可能的问题是由于长期工作在交付末端,很多人会面临着对软件研发工程理解不足的问题。

DevOps 模式定义

DevOps 集文化理念、实践和工具于一身,可以提高组织高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,能够帮助组织更快地发展和改进产品。这种速度使组织能够更好地服务其客户,并在市场上更高效地参与竞争。

DevOps 的工作原理

在 DevOps 模式下,开发团队和运营团队都不再是“孤立”的团队。有时,这两个团队会合为一个团队,他们的工程师会在应用程序的整个生命周期(从开发测试到部署再到运营)内相互协作,开发出一系列不限于单一职能的技能。

在一些 DevOps 模式下,质保和安全团队也会与开发和运营团队更紧密地结合在一起,贯穿应用程序的整个生命周期。当安全是所有 DevOps 团队成员的工作重心时,这有时被称为“DevSecOps”。
这些团队会使用实践经验自动执行之前手动操作的缓慢流程。他们使用能够帮助其快速可靠地操作和发展应用程序的技术体系和工具。这些工具还可以帮助工程师独立完成通常需要其他团队协作才能完成的任务(例如部署代码或预置基础设施),从而进一步提高团队的工作速度。

DevOps 的优势

速度

高速运转,让您可以更快速地针对客户进行创新、更好地适应不断变化的市场,同时更有效地推动业务成果。DevOps 模式能够帮助您的开发人员和运营团队实现这些目标。例如,微服务和持续交付能够让团队充分掌控服务,然后更快速地发布更新。

快速交付

提高发布的频率和速度,以便您能够更快速地进行创新并完善产品。您发布新功能和修复错误的速度越快,就越能快速地响应客户需求并建立竞争优势。持续集成和持续交付是自动执行软件发布流程(从构建到部署)的两项实践经验。

可靠性

确保应用程序更新和基础设施变更的品质,以便您能够在保持最终用户优质体验的同时,更加快速可靠地进行交付。使用持续集成和持续交付等实践经验来测试每次变更是否安全以及能够正常运行。进行监控和记录实践经验能够帮助您实时了解当前的性能。

规模

大规模运行和管理您的基础设施及开发流程。自动化和一致性可在降低风险的同时,帮助您有效管理复杂或不断变化的系统。例如,基础设施即代码能够帮助您以一种可重复且更有效的方式来管理部署、测试和生产环境。

增强合作

建立一个适应 DevOps 文化模式的更高效的团队,强调主人翁精神和责任感。开发人员和运营团队密切合作,共同承担诸多责任,并将各自的工作流程相互融合。这有助于减少效率低下的工作,同时节约大家的时间(例如,缩短开发人员和运营团队之间的交接时间,编写将运行环境考虑在内的代码)。

安全性

在快速运转的同时保持控制力和合规性。利用自动实施的合规性策略、精细控制和配置管理技术,您可以在不牺牲安全性的前提下采用 DevOps 模式。例如,利用基础设施即代码和策略即代码,您可以大规模定义并追踪合规性。

DevOps 实践经验

以下列举了一些 DevOps 最佳实践:

  • 持续集成
  • 持续交付
  • 微服务
  • 基础设施即代码
  • 监控和日志记录
  • 沟通与合作

关键字:云平台,微服务,容器化,CI/CD,SRE,敏捷开发….

参考资料