如何在保持安全/合规的同时更快地构建应用程序:DevOps 指南

随着敏捷思维方式的兴起,开发和 DevOps 团队都面临着持续的压力,他们需要以迭代方式缩短发布周期并加快部署速度,以满足不断增长的客户期望。随着这种对速度的追求越来越强烈,维护安全性和合规性标准的复杂性也随之增加。

当今 DevOps 工作流程的主要挑战之一是“速度与安全性的困境”。问题是:如何在不影响安全协议和监管要求的情况下跟上快速发展?

在本指南中,我们将探讨 DevOps 团队面临的一些最紧迫的挑战。我们还将讨论 Incredibuild 如何帮助您在不牺牲 DevOps 合规性的情况下更快地交付高质量和安全的应用程序。

常见瓶颈和合规性挑战

让我们看一下构建过程中导致发布周期变慢的一些常见瓶颈。

大型代码库的构建时间长

随着应用程序复杂性的增加,其代码库也随之增加。对于每个新功能、错误修复或更新,构建需要更长的时间,从而导致等待时间延长,从而减慢开发速度。

较长的构建时间源于需要跨多个依赖项、模块和服务重新编译、运行测试和打包代码。在复杂的整体式架构中,此问题尤其具有挑战性,因为一个领域的更改可能需要重新构建完整的应用程序。

虽然将整体式架构拆分为微服务可能会有所帮助,但它通常需要对架构进行重大改革。对于不断承受加速发布压力的 DevOps 团队来说,像 Incredibuild 这样智能分配工作负载的工具可以通过运行加速构建来发挥关键作用,而无需完全重新设计现有管道。

测试执行瓶颈

测试对于交付高质量和安全的软件开发至关重要,但它也可能是一个主要瓶颈,尤其是在代码库和测试套件扩展时。

自动测试通常需要在每次代码更改后重新运行,这可能会消耗很大一部分构建时间。虽然单元测试通常很快,但跨多个服务验证功能的集成和端到端测试可能非常耗时。

当团队缺乏并行测试功能时,测试瓶颈通常会变得更糟,从而导致排队测试运行延迟发布过程。有效的测试管理和优先级排序策略(例如仅测试修改后的代码或首先运行关键测试)有助于减少延迟。

这就是像 Incredibuild 这样的解决方案可以提供帮助的地方。它可以在分布式计算机上并行执行测试,使大型测试套件能够同时运行。

CI/CD 管道中的资源约束

随着多个开发人员并行工作,对共享基础设施资源(如 CPU、内存和磁盘 I/O)的需求会增加,尤其是在高峰时段。

当这些资源受到限制时,构建和测试会排队,从而导致整个开发管道出现延迟。此外,在云环境中扩展资源的成本可能很高,特别是对于流量模式激增或偶尔使用密集型服务的组织。当工作负载激增时,本地基础设施可能无法提供足够的灵活性来快速扩展,而云扩展会带来潜在的延迟和预算问题。

为了解决这些问题并优化资源使用,Incredibuild 将构建和测试工作负载分布在网络或云中的空闲 CPU 之间;这减轻了资源限制,减少了构建队列时间,并允许更快的扩展。

在不影响安全性的情况下加速构建的策略

让我们探索一些策略,以加快构建速度,同时保持强大的 DevOps 安全标准。

构建管道的并行执行和分布式处理

缩短构建时间的最有效方法之一是将工作负载分布在多台机器或处理器上,从而实现并行执行。通过在可用资源之间拆分任务(例如编译或测试),团队可以在不牺牲准确性或安全性的情况下显著加快流程。

Incredibuild 等分布式处理平台允许 DevOps 团队跨网络或云实例利用闲置的 CPU 能力。

缓存和增量构建

缓存和增量构建通过对未更改的代码重用以前的构建结果来帮助避免冗余处理。对大型代码库进行微小更改时,完全重新构建效率可能很低,从而在尚未修改的文件上浪费时间。

增量构建仅重新编译或重新处理更改的文件,从而显著缩短构建时间。通过使用缓存机制来存储这些中间结果,DevOps 团队可以实现更快的构建,同时确保仅重新评估相关文件。

自动测试和安全扫描

自动测试和安全扫描对于及早识别漏洞和功能问题至关重要。通过将安全扫描(例如静态代码分析和漏洞评估)直接集成到 CI/CD 管道中,团队可确保在每个阶段都遵循安全协议。

支持并行化测试的工具允许快速执行这些测试。自动化、持续的测试为安全可靠的构建提供了所需的保证,同时保持了高速,防止安全性成为加速工作流程中的事后考虑。

在 CI/CD 管道中实施安全性和合规性检查

在整个 CI/CD 管道中整合安全性和合规性检查对于交付具有弹性和合规性的软件至关重要。“左移”方法在开发早期引入安全措施,从一开始就减少漏洞和合规性风险。

通过在 CI/CD 流程的每个阶段集成安全实践,团队可以创建一个持续的反馈循环,使安全性成为一种主动而非被动的措施。有多种解决方案可帮助进行此集成。

CI/CD 安全的基本工具

在代码提交阶段,开发人员可以执行代码审查、静态分析和提交签名以验证代码安全性。在构建阶段,团队可以使用静态应用程序安全测试 (SAST) 工具在执行之前分析源代码并发现代码库中的漏洞。

在测试过程中,动态应用程序安全测试 (DAST) 可以评估已部署环境中的运行时漏洞。DAST 工具模拟运行时环境中针对应用程序的攻击,发现访问控制不当或会话处理漏洞等问题。

在部署时,使用策略即代码或合规性即代码 (CaC) 解决方案进行合规性检查,确保在最终发布之前遵守监管标准和监管。CaC 工具可自动进行基础设施配置和策略中的监管检查,验证部署是否符合合规性标准。

通过实施左移实践、跨 CI/CD 阶段的安全检查点和自动化工具的组合,DevOps 团队可以在不减慢开发速度的情况下提高安全性。

帮助平衡速度和安全性的工具和技术

平衡速度和安全性是 DevOps 团队面临的一项关键挑战,因为他们努力快速交付高质量的应用程序。幸运的是,有一些现代工具可以同时支持加速开发和强大的安全实践。

我们将在下面讨论其中一些解决方案。

Incredibuild:分布式处理和缓存,实现更快的构建

Incredibuild 是一个分布式计算平台,通过将任务分解为更小的进程并将其分布在多个 CPU(无论是在本地还是在云中),从而显著加快构建时间。

在这里插入图片描述

图 1:Incredibuild 构建缓存

通过利用网络上的空闲 CPU 周期,Incredibuild 将普通构建流程转换为高度并行化的任务。这大大减少了构建时间,帮助开发人员在不影响准确性的情况下更快地迭代。此外,Incredibuild 的缓存机制可确保在后续构建中重复使用未更改的组件,从而进一步优化构建流程并节省时间。

分布式处理和缓存的这种组合使团队能够跟上快速的发布周期,同时保持构建质量和稳定性。

GitLab CI/CD 和 Jenkins:促进自动化合规性检查

GitLab CI/CD 和 Jenkins 是流行的 CI/CD 平台,支持在安全的 DevOps 工作流中实现端到端自动化。这些工具允许团队在管道的各个阶段嵌入安全性和合规性检查,以便代码在流程的早期就符合安全标准。

例如,团队可以设置 Jenkins 管道,以便在每个构建中自动运行静态代码分析和安全扫描,从而在问题进入生产环境之前发现问题。GitLab CI/CD 通过其安全性和合规性管理功能提供类似的功能,允许团队在整个 CI/CD 流程中定义和实施合规性策略。

通过自动化驱动的合规性检查,这些工具可以简化安全验证,而不会减慢开发速度。

Snyk 和 OWASP ZAP:自动漏洞检测

Snyk 和 OWASP ZAP 是用于识别应用程序中安全漏洞的强大工具。

Snyk 擅长扫描开源依赖项、识别已知漏洞并建议补救步骤;所有这些都使团队能够尽早保护他们的代码库。

在这里插入图片描述

图 2:Snyk 代码扫描示例(来源:Snyk)

作为 DAST 解决方案,OWASP ZAP 允许您在最后测试阶段扫描正在运行的应用程序,以查找错误配置和安全失误等漏洞。通过自动进行漏洞检测,这些工具可以降低部署不安全代码的风险,同时无缝集成到 CI/CD 工作流中。

Terraform 和 AWS Config:大规模维护合规性

随着基础设施的发展,确保大规模合规性变得具有挑战性。Terraform 和 AWS Config 等工具将合规性作为代码实施,以在整个基础设施中自动实施监管标准。

借助 Terraform,团队可以编纂基础设施配置,将策略直接嵌入代码中,以防止未经授权的更改。同时,AWS Config 会监控您的 AWS 资源是否发生配置更改,并提醒团队注意不合规的配置。

平衡速度和安全性/合规性的最佳实践

在软件开发中实现速度和安全性之间的平衡需要一种战略方法并遵守两个关键的最佳实践。

一致的审计和监控

定期监控可确保尽早发现并解决新的漏洞、配置更改或合规性问题。通过实施自动化安全扫描、日志记录和审计跟踪,DevOps 团队可以在潜在问题升级之前发现问题,从而降低违规和监管处罚的风险。

AWS Config 等持续合规性工具和 Prometheus 等监控平台提供实时警报和自动响应,在快速进行开发的同时确保系统安全。

协作

开发、安全和运营团队之间的传统分离通常会造成瓶颈。采用 DevSecOps 模型可鼓励这些团队之间密切合作,将安全实践直接嵌入到开发工作流程中。

借助 DevSecOps,开发人员、安全专家和运营人员可以共同协作,从头开始创建安全的应用程序,而不是在最后改进安全性。这种协作使每个人都在优先考虑安全性的共同目标和最佳实践上保持一致。

定期的跨职能会议、共享仪表板和联合规划会议可确保团队尽早解决安全性和合规性问题,在降低风险的同时保持开发速度。

案例研究

以下是使用 Incredibuild 的客户的真实场景及其体验。

Adobe

Adobe 是数字媒体领域的全球领导者,其大型软件项目的构建时间缓慢,这影响了生产力。

为了解决这个问题,Adobe 实施了 Incredibuild,将构建时间从 7.5 小时缩短到 15 分钟。该平台的高性能编译 (HPC) 集群可按需访问,使开发人员无需额外的硬件即可加速构建。

Incredibuild x Adobe

Incredibuild 的灵活性、稳定性以及与 Adobe 基础架构的集成节省了大量时间和成本,事实证明,它对 Adobe 的企业需求非常宝贵。

Major European bank

一家拥有 300 年历史并在 55 个国家/地区开展业务的欧洲领先金融机构利用 Incredibuild 来简化其 CI/CD 流程。

面对云使用的监管限制和频繁的内部轮班,该银行的 700 人定量分析团队使用 Incredibuild 来优化 C++ 编译和 Ninja 构建,该基础设施拥有超过 15,000 个帮助程序内核和 700 个启动器。

Incredibuild 将构建时间从 25 小时缩短到 40 分钟,显著提高了跨职能和远程团队的生产力。Incredibuild 的卓越支持和基础设施加速也因使银行的运营稳定和高效而受到赞誉。

结束语

对快速应用程序部署的需求通常与严格的安全和法规要求相竞争,但通过正确的方法,团队可以同时实现这两点。

通过实施并行处理、缓存、增量构建和全面监控等策略,DevOps 团队可以显著加快工作流程,而不会影响质量或合规性。

借助 Incredibuild 的分布式处理和缓存,团队可以通过更快的迭代来提高构建速度和效率,从而加快上市时间。同时,该平台支持严格的安全实践,以确保您的应用程序安全合规。

任何愿意采用平衡方法的组织都可以实现更快、安全且合规的应用程序开发。立即试用 Incredibuild,了解如何简化 DevOps 管道,同时提高应用程序的质量和安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中常见的PO、VO、DAO、BO、DO、DTO、POJO、Query类解释(通俗易懂)

文章目录 先点击收藏和点赞,切勿白嫖,感谢一丶PO(persistant object)持久对象二丶VO(value object)值对象三丶DAO(Data Access Objects) 数据访问对象接口四丶BO/DO(Business Object) 业务对象层五丶DTO(Data Transfer Object) 数据传输对象六丶POJO(Plain Old Java Objects) 简…

Websocket的基本使用

1. WebSocket WebSocket 是一种在单个TCP连接上进行全双工通信的协议,它在现代 Web 开发和网络应用中发挥着重要作用。在 WebSocket 出现之前,实现服务器与客户端实时通信主要采用轮询Polling和长轮询Long - Polling等技术。轮询是客户端定时向服务器发…

MySQL安装及基础操作

以下是基于MySQL 8.4.3版本(在Win11上)的安装: 1.mysql的获取 官网:www.mysql.com 也可以从Oracle官方进入:https://www.oracle.com/ 下载地址:https://downloads.mysql.com/archives/community/ 两者…

基于6自由度搬运机器人完成单关节伺服控制实现的详细步骤及示例代码

以下是基于6自由度搬运机器人完成单关节伺服控制实现的详细步骤及示例代码: 1. 系统概述 单关节伺服控制是指对机器人的单个关节进行精确的位置、速度或力矩控制。在6自由度搬运机器人中,每个关节通常由伺服电机驱动,通过反馈传感器&#x…

虚拟机新挂载磁盘后磁盘无法使用ssh问题 Permission denied (publickey).

在给vmware虚拟机挂载磁盘后再新磁盘目录里面使用ssh拉取代码一直报错: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. manifests: 虚拟机可以添加硬盘,…

每天五分钟深度学习框架PyTorch:ResNet算法模型完成CAFIR十分类

本文重点 ResNet模型已经搭建完成了,本文我们使用ResNet来跑一下CAFIR10的数据集,看一下分类效果如何? 代码 本文总结 在之前的课程中我们对残差块以及ResNet模型进行了详细的介绍,并且我们对模型训练这些基础的数据集进行了详…

Python网络爬虫与数据采集实战——网络爬虫的基本流程

网络爬虫(Web Scraper)是用于自动化地从互联网上抓取信息的程序。它广泛应用于搜索引擎、数据采集、市场分析等领域。本文将详细探讨网络爬虫的基本流程,包括URL提取、HTTP请求与响应、数据解析与存储,以及一个实际的爬虫示例。文…

1.3 双指针专题:快乐数(medium)

1.题目链接 202. 快乐数 - 力扣(LeetCode)https://leetcode.cn/problems/happy-number/submissions/609206400/ 2.题目描述 编写⼀个算法来判断⼀个数 n 是不是快乐数。 「快乐数」 定义为: 对于⼀个正整数,每⼀次将该数替换…

系统结构知识点

1.主存和辅存以页面交换数据 2.计算机系统硬件固体软件 3.计算机系统结构概念的实质是确定计算机系统中软,硬件的界面,界面之上是软件实现的功能,界面之下是硬件和固体实现的功能 4.计算机组成是指计算机系统结构的逻辑实现。计算机实现是…

STM32 HAL库 CAN过滤器配置

之前在STM32 f407 CAN收发 基于HAL库和Cubemx配置_stm32f407can收发程序-CSDN博客这篇博文里写了一下配置CAN收发的方法,当时由于并没有使用过滤器的现实需求,所以就也没仔细研究。现在工作中确实需要用到过滤器了,有些项目中控制器和发动机E…

飞搭系列|数据迁移功能全新升级,助力用户实现高效无缝迁移!

前言 飞搭低代码平台(FeiDa,以下简称“飞搭”),为企业提供在线化、灵活的业务应用构建工具,支持高低代码融合,助力企业低门槛、高效率和低成本地快速应对市场变化,加速复杂业务场景落地。 在之…

【后端】【ubuntu】 ubuntu目录权限查看的几种方法

在Ubuntu中,有多种方式可以查看目录或文件的权限,以下为你详细介绍常见的指令及其使用方法: 1. ls -l 命令 这是最常用的查看文件和目录权限的命令,-l 选项用于以长格式列出文件和目录的详细信息,其中就包含权限信息…

深度学习与大模型基础-向量

大家好!今天我们来聊聊向量(Vector)。别被这个词吓到,其实向量在我们的生活中无处不在,只是我们没注意罢了。 1. 向量是什么? 简单来说,向量就是有大小和方向的量。比如你从家走到学校&#x…

TCP/IP原理详细解析

前言 TCP/IP是一种面向连接,可靠的传输,传输数据大小无限制的。通常情况下,系统与系统之间的http连接需要三次握手和四次挥手,这个执行过程会产生等待时间。这方面在日常开发时需要注意一下。 TCP/IP 是互联网的核心协议族&…

用Python和Docker-py打造高效容器化应用管理利器

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着容器化技术的发展,Docker已成为现代化应用部署的核心工具。然而,手动管理容器在规模化场景下效率低下。本文深入探讨如何利用Python结…

【RabbitMQ】事务

事务的简单配置及使用 配置事务管理器声明队列生产者代码测试 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的&#xff0c…

在 IntelliJ IDEA 中配置 Git

1. 确保已安装 Git 在配置之前,确保你的系统已经安装了 Git。 检查是否已安装 Git: bash 复制 git --version 如果未安装,请前往 Git 官网 下载并安装。 2. 在 IntelliJ IDEA 中配置 Git 打开 IntelliJ IDEA。 进入设置: Windo…

【A2DP】蓝牙A2DP协议剖析:从架构到规范

目录 一、A2DP 协议架构 1.1 A2DP 协议栈结构组成 1.2 协议栈各部分的关系与作用 二、设备配置与角色定义(Configurations and roles ) 2.1 角色定义 2.2 配置示例与角色体现 三、用户需求与场景 3.1 用户需求与场景 3.2 协议限制 3.3 协议要求…

【从零开始学习计算机科学】操作系统(五)处理器调度

【从零开始学习计算机科学】操作系统(五)处理器调度 处理器调度一些简单的短程调度算法的思路先来先服务(First-Come-First-Served,FCFS)优先级调度及其变种最短作业优先调度算法(SJF)--非抢占式最短作业优先调度算法(SJF)--抢占式最高响应比优先调度算法轮转调度算法…

27. Harmonyos Next仿uv-ui 组件NumberBox 步进器组件禁用状态

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! 文章目录 1. 组件介绍2. 效果展示3. 禁用状态设置3.1 整体禁用3.2 输入框禁用3.3 长按禁用 4. 完整示例代码5. 知识点讲解5.1 禁用状态属性5.2 禁用…