云原生应用理念经过几年的落地实践已经得到企业市场的广泛认可,云原生应用更是成为企业数字化转型的必选项。基于云原生技术架构衍生的产品和工具,已经逐渐应用在开发者的日常工作当中。
近日,全球最具影响力的咨询机构Forrester联合阿里云发布《云原生开发者洞察白皮书》,JFrog中国首席架构师王青受邀参与该白皮书的编写。Forrester首次定义云原生时代开发者的能力模型,助力开发者拥抱云原生技术,实现开发者自身的转型。
早在2020 年IDC发布的报告中,曾提到在未来的 3-5 年,软件制品的数量会越来越多,到 2025 年,全球会出现520M 个应用,超过 60%的企业软件版本的部署频率为 1 天,甚至更短。软件发布的种类也越来越多,Go、Maven、Docker、NPM 等类型的制品会不断的从研发中心构建出来,并推送到云环境进行部署。同时,由于开发者不熟悉云资源的使用,且依赖大量的开源软件,导致开发的软件遇到了部署难、安全管控难、传输慢等常见问题。
这样就给开发者带来一个新的挑战:开发者如何将制品快速的分发到各个云原生环境进行快速、安全的发布?我认为开发者需要从以下几个方面做出改变。
一、软件供应链安全可控
在云原生环境下,你的服务极有可能是对互联网开发服务的,由于开发者使用的依赖包往往来自于互联网公有仓库,这就使得使用了开源软件的应用容易被黑客攻击。大家可以尝试在云环境中安装一个 Jenkins 直接对外提供服务,用不了几天就会被黑客攻击,并且在你不知情的情况下种下木马,去挖矿或者执行其他任务。
我们应该如何解决?
整个部署过程必须使用自动化工具来保障软件供应链的安全可控,应当通过自动化工具自动生成软件物料依赖清单 SBOM,并实时扫描依赖包的漏洞风险和 License 合规性。开发者应该使用实时的开源组件分析工具,进行实时的 SAST 静态应用安全扫描,在开发阶段把已知的安全漏洞扫描出来,并根据优先级进行修复。参考以下操作流程:
1.1 使用Sonarlint 进行静态代码扫描,实时修复漏洞
1.2 在IDE中安装JFrog插件,实现开源组件漏洞和License的合规性检查
通过对开源软件供应链的扫描,实现对依赖的管控。
在构建过程中,自动收集软件物料清单 SBOM 如下:
通过自动的依赖清单收集,能够清晰的定义软件版本的依赖信息,以及依赖组件的漏洞扫描信息和 License 合规性信息。
二、面向云资源的部署
开发者在云原生环境下,想要实现应用的部署,必须熟悉云资源的类型,从而将云资源的字段从应用配置中抽取出来,这样才能实现一次构建,处处运行。以 Kubernetes 应用开发为例,开发者之前在本地配置的数据库、存储、端口等配置都需要抽取出来,定义成 YAML 文件的变量,抽象成 Helm Chart,这样开发者在本地开发配置的程序内,不做任何修改,只通过修改应用的 Chart Values文件,即可实现云环境的适配。
三、 Docker镜像高效分发
当版本发布之后,需要具备快速、高效的将版本分发到多地数据中心、边缘节点、IOT 设备等能力,例如支持大文件分片分发,支持 Docker 镜像的 P2P 分发等能力。
Docker 镜像的P2P分发将成为大企业在云原生环境下的必备能力,通过 P2P 分发,能够极大的提升 Docker 镜像的下载速度,快速的将新功能部署在服务器上,更快的给用户带来价值。
云原生时代已经来临,在云原生的环境下,企业及开发者想要占据先机,快人一步,就必须实现流动式的软件版本发布,才能在发布频率越来越快的将来站稳脚跟,奋勇前进。
添加小助手微信:JFrogjiewachina,您将获得《云原生开发者洞察白皮书》