当前位置: 首页 > 科技观察

DevOps和左移的三个技巧

时间:2023-03-14 00:00:09 科技观察

如果应用于您的应用程序生命周期,DevOps解决的问题很少。它用于自动化应用程序装配线,是数字化转型的强大工具。用查尔斯·狄更斯的话来说,“这是最好的主意,也是最坏的主意。”这是什么意思?DevOps及其解释。DevOps最好的想法是InfrastructureasCode,即IaC。IaC不是手动构建一个冗长且容易出错的过程的应用程序环境,而是在模板中定义“如何”构建环境,然后使用模板定义自动构建该环境。这是以计算机速度而不是人类速度发生的,而且同样重要的是,它每次都一致地完成,从而大大提高了应用程序质量。如果做得好,DevOps可以显着提高应用程序的速度。这种应用程序开发和部署方法被称为“左移”,因为它将开发后任务移至应用程序生命周期的早期。然而,DevOps挑战比比皆是。然而,虽然DevOps的基础设施即代码是它最好的想法,但它也是——正如它经常实施的那样——最糟糕的想法之一。开发人员经常被告知他们负责创建IaC模板。这有一些逻辑。毕竟,应用程序的开发人员应该最了解其基础架构需求,对吗?另一方面,这也让开发人员负责了解生产网络需求、大规模存储配置和弹性资源管理。由于这一繁重的要求,可以公平地说DevOps不是基于应用程序生产环境复杂性的灵丹妙药。然而,受左移原则的启发,许多IT组织认为将其他任务移至应用程序生命周期的早期是有意义的。因此,开发人员负责测试。安全。和补丁管理。不幸的是,这些任务并不像通常所追求的那样被视为“代码”。也就是说,之前负责它们的小组将责任连同通常用于执行小组任务的手动清单一起转交给开发人员。因此,开发人员在他们不具备特殊专业知识的领域做了大量的手工工作。你猜怎么了?做某事的开发人员不会更快地完成它,特别是如果他们的主题专业知识较少。因此,DevOps方法的潜在速度通常仍远低于预期。ShiftRightShiftLeft那么,ShiftLeft的“ascode”方法的前进方向是什么?应用程序是否注定要陷入由不堪重负的开发人员执行的手动流程中?一句话,没有。但是组织需要以正确的方式向左移动。以下是有关如何做到这一点的三个提示。(1)自动化所有任务如果基础架构即代码有意义,那么测试即代码、安全即代码和补丁管理即代码也有意义。换句话说,将DevOps的逻辑应用于生产路径中的所有步骤。当然,这意味着将开发技能应用于这些任务,这需要开发人员。期望主题专家(例如,QA人员)的资料发生变化以包括编程经验。它还意味着将每个任务自动化为自己的应用程序,并具有自己的生命周期管理。(2)将生产路径视为自动化产品拥有最快生产路径的技术组织将整个过程视为一个集成产品,在其各个子步骤中实现自动化。这意味着在中间步骤之间自动切换并消除手动批准。我在看着你,变更控制委员会。在现实世界中,大多数手动审批步骤都是自动勾选审核框的正式仪式。如果从一步到另一步的切换可以简化为自动点头,那么也可以简化为自动切换,并有明确的异常处理。这也意味着生产路径需要像产品本身一样作为一个整体进行管理,并进行架构审查以确保所有自动化子系统协同工作。如果这听起来像是工作和投资,那你是对的。然而,如果没有这个,生产路径将保持缓慢,两端的速度(通过Dev和Ops)预订中间相同的旧的缓慢手动步骤。(3)向左移动虽然自动化所有任务(以及自动化整个流程)是重要的一步,但如果易受攻击或过时的代码构成应用程序的基础,确保良好的安全性仍然是一个挑战。俗话说,垃圾进,垃圾出。当漏洞已知或有人利用它时,这些类型的安全漏洞会变得更糟。随之而来的是疯狂地更新代码库并将更新投入生产。当开发人员从一张白纸开始并直接从Internet下载库和组件时,这个问题很常见。令人震惊的是,有多少基于容器的应用程序是使用从DockerHub下载的图像构建的,尽管已知许多最流行的应用程序包含过时和/或易受攻击的代码。更好的方法是为开发人员提供准备好的代码库,这些代码库已知是最新的并且被评估为没有错误。这种机制称为模板、框架或加速器。从本质上讲,开发人员将模板下载到他们喜欢的IDE中,然后从包含应用程序功能的安全代码库开始。应用程序更新完成后,将进入上述自动化流程。应用程序工件在生命周期的不同阶段创建和移动,直到最终部署。通过将进程保留在特定应用程序管道之外以监视已发布的漏洞,可以将这种代码卫生方法扩展到生命周期的其余部分。如果漏洞被发布并且补丁可用,应用程序构建和部署过程就会开始,这会自动更新相关的工件并将它们投入生产。这避免了手动跟踪每个应用程序包含哪些库和组件。它还避免了与尝试确保每个相关应用程序都得到更新相关的危机管理,这不可避免地会留下一些遗留问题,并使易受攻击的应用程序永远无法修复。这种“进一步左移”的新兴行业术语是安全软件供应链,这种方法在未来将变得更加普遍,尤其是随着越来越多的业务流程转向数字机制。事实上,DevOps既可以是好主意也可以是坏主意,这取决于它的应用方式。在应用程序生命周期上,它解决的问题很少。自动化概念作为应用流水线的一部分,是数字化转型的有力工具。