平台工程与安全

平台工程不是为了取代DevOps,而是DevOps的进一步演进和发展。本文介绍了DevOps和平台工程,以及对于安全的意义。原文: Platform Engineering and Security: A Very Short Introduction

中国云南大理的日落
中国云南大理的日落

我是一名 DevOps 工程师,个人还是希望 DevOps 仍然有其意义,因为很显然,如今已是"DevOps 已死,平台工程万岁"的时代了。

不可否认,自 2022 年以来,我们更频繁的看到"平台工程(platform engineering)"、"开发者门户(developer portal)"以及"后台(Backstage)"等术语。

本文将回答几个基本问题:DevOps 真的死了吗?什么是平台工程?区别是什么?平台工程如何处理 DevSecOps/安全问题?

DevOps 已死?

简单来说,并没有。

如果我这么多年来在技术领域学到了什么,那就是技术、框架和方法论从未真正消亡,而是会成长、适应和发展。

例如,想想敏捷开发。你第一次听说敏捷开发是什么时候?现在死了吗?这就是问题所在。

但某种程度上,DevOps 确实"死"了。虽然从传统意义上讲,DevOps 并没有从科技界消失,但确实"死"了,因为许多尝试 DevOps 的公司和团队都没有达到预期。

不过这并不是什么新闻,因为早在多年前,技术研究和咨询公司 Gartner 的一位数据分析师就已经预测,在整个 2022 年,75% 的 DevOps 计划将无法达到预期目标,而到 2023 年,这一数字可能会增长到 90%。

但需要指出的是,这些 DevOps 计划的失败并不是因为技术上的挑战,而是因为信任、所有权和团队合作等被忽视的人为因素。

DevOps 本应是解决传统运营孤岛中所有问题的银弹,让一切重新变得美好。然而不幸的是,许多团队并没有达到最初预期,而且开发人员似乎并不想从事运维工作:

开发人员不想从事运维?

公平的说,这取决于你问的是谁。有些开发人员认为 DevOps "谁构建,谁运维"的模式肯定是有益的,甚至有时是必要的,而有些开发人员则根本不想接触运维。

Twitter 上有一项关于此问题的民意调查[1],330 名开发人员参与了调查,调查结果显示,41.8% 的受访者表示支持运维任务,42.1% 的受访者表示不支持,16.1% 的受访者表示无所谓。

因此,开发人员更愿意避免与基础架构和运维打交道,这对 DevOps 来说是个坏兆头。在这种情况下,平台工程变得前所未有的热门。

平台工程

如今,非专业的最终用户经常被要求运维一系列复杂的服务,这几乎是不可能的。平台工程与 DevOps 一样,都是为应对日益复杂的现代软件架构而出现的。

DevOps 试图从文化角度解决软件开发生命周期(SDLC)中的协作和速度问题,即重视责任分担模式、持续成长和学习心态,鼓励团队合作、最佳实践和现代工具链,而平台工程则试图从另一个角度来解决问题:自助服务。

我们来看一个具体例子:

团队中的开发人员需要为新创建的应用创建数据库,但他们可能并不完全了解如何使用正确的自动化工具(比如Terraform)在特定云服务商(比如AWS)中创建关系数据库(RDS),并非所有开发人员都知道基础架构在哪里运行以及如何协调。

解决这个问题的 DevOps 方法是使团队具有足够的跨职能知识,让团队中的某个人掌握 AWS 服务和基础设施即代码的专业知识,更重要的是拥有适当权限,通过编写 Terraform 模块和在 AWS 中部署 RDS 来自动化配置云资源。

而对于平台工程,应该有一个作为"内部开发人员门户"的集成产品,这样开发人员就可以通过它以自助服务的方式请求 AWS 中的 RDS,平台将自动创建 RDS。

请注意,这只是一个例子。如果设计得当,内部开发人员门户网站可以实现更多功能。

简而言之,平台工程是一门设计和构建工具链和工作流集成产品的学科,涵盖了整个 SDLC 的操作需求,实现适度的开发人员自助服务,并为云原生时代的各个组织和团队找到合适的抽象层次。

平台工程 V.S. DevOps

虽然平台工程通过提供自动化基础架构操作的自助服务功能改善了开发人员的体验和工作效率,但并不适合所有人,尤其不适合小型团队/公司。即使团队决定购买内部开发人员门户网站作为服务,而不是从头开始构建,仍然需要在幕后维护自动化和模板。想想之前在云上创建 RDS 的例子,团队需要具备维护 Terraform 模板的知识,以生成在 AWS 中创建 RDS 的模块。

如果团队和公司规模太小,不适合开展平台工程,DevOps 可以更好的发挥作用。一般来说,在规模较小的环境中,协作更紧密,节奏更敏捷,组织摩擦更少。

关于平台工程和 DevOps,还有一点至关重要,那就是平台工程不会"取代"DevOps,它的出现不会让 DevOps 被遗忘。

尽管很多人说,随着平台工程的兴起,DevOps 已死,但这并不是一种方法取代另一种方法的情况,而是两种方法可以结合在一起。我们可以将平台工程称为 DevOps 的"进化",两者仍在促进相同的目标,并能帮助 DevOps 提高效率。我们很可能仍然会经常看到 DevOps 文化,而且许多软件工程组织也很可能会建立平台团队,从而将软件开发人员和 IT 运维人员凝聚在一起。

安全在新范式中的定位

说到 DevOps,就不能不提到安全(或 DevSecOps),毕竟安全是头等大事。

DevOps通过"左移"来解决安全问题。在传统软件开发方法中,与安全相关的任务只在SDLC的最后处理,而这可能会导致项目延迟并且不可扩展,DevOps/DevSecOps使用自动化工具尽可能早的在SDLC的每个阶段"嵌入"安全。

例如,在编写代码时,开发人员会考虑潜在的安全问题,如在哪里存储secrets和凭证,以及如何从代码中安全的获取(而不是在将所有secrets推向生产之前进行最终审计/审查)。另外,在构建虚拟机镜像或容器镜像时,每次构建都会自动进行漏洞扫描,并在发现任何漏洞时进行修复(而不是在交付生产之前进行一次性扫描)。

这就是"左移"。

所有这些以更敏捷、反应更快、更自动化的"左移"方式处理secrets的方法,在平台工程中仍然被坚持继承了下来,DevOps 和平台工程在这里并不矛盾。

只是在平台工程的帮助下,内部开发人员门户网站可以将整个过程的自动化提升到另一个层次。我们来看两个具体的例子:

想象一下,当你想创建一个新的微服务时,内部开发人员门户网站可以使用现有模板引导创建整个存储库,而不只是编写一些模板代码。然后通过技术手段构造 CI/CD 流水线、Dockerfiles 和 Kubernetes 清单,这不仅能为应用程序提供脚手架代码,还能提供 CI/CD 流水线、Dockerfiles、Helm charts和 Kubernetes YAML,其中预配置的流水线遵循 DevSecOps 最佳实践,能扫描源代码中的硬编码secrets,并对 YAML 等进行校验。

想象一下,你想存储一些secrets。与其去弄清团队正在使用哪个secrets管理器,部署在哪里,以及是否有权限创建secrets,还不如访问与secrets管理器集成的内部开发人员门户,以自助服务的方式创建secrets,而不必过多担心任何底层细节,这正是平台工程所能提供的抽象程度。

想象一下,你想在云上启动一个新的虚拟机。与其从头开始编写自动化代码(或从现有代码库中复制粘贴),然后在部署前审查安全组设置,还不如简单的访问内部开发人员门户网站,点击一个按钮,然后使用由平台工程团队维护和保护的模板来完成所有工作。

所有这些都是平台工程的魅力所在:

  • 自助服务
  • 适度抽象
  • 最佳实践和自动化
总结

本文探讨了 DevOps 和平台工程,它们之间的区别,以及新范式如何解决安全问题。


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!

参考资料
[1]

Twitter上关于DevOps的调查: https://twitter.com/luca_cloud/status/1562349679660122112

本文由 mdnice 多平台发布

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

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

相关文章

Vue.js+SpringBoot开发社区买菜系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 数据中心模块2.1.2 菜品分类模块2.1.3 菜品档案模块2.1.4 菜品订单模块2.1.5 菜品收藏模块2.1.6 收货地址模块 2.2 可行性分析2.3 用例分析2.4 实体类设计2.4.1 菜品分类模块2.4.2 菜品档案模块2.4.3…

FRM模型十二:极值理论

目录 极值理论介绍GEVPOT 代码实现 极值理论介绍 在风险管理中,将事件分为高频高损、高频低损、低频高损、低频低损。其中低频高损是一种非常棘手的损失事件,常出现在市场大跌、金融体系崩溃、金融危机以及自然灾害等事件中。 由于很难给极端事件一个准…

嵌入式驱动学习第一周——git的使用

前言 本文主要介绍git的使用,包括介绍git,gitee,以及使用gitee创建仓库并托管代码 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏&#xf…

阿里最新EMO:只需要提供一张照片和一段音频,即可生成会说话唱歌的AI视频

只要一张照片加上音频,就能让你说话唱歌,阿里做到了。 最近,阿里新上线了一款AI图片-音频-视频模型技术EMO,用户只需要提供一张照片和一段任意音频文件,EMO即可生成会说话唱歌的AI视频。以及实现无缝对接的动态小视频…

JavaScript-关于事件、事件流(捕获、冒泡)、事件源、常用事件

1.如何注册事件(如何绑定事件) ​ 何为注册事件,就是给元素添加事件,其方式有传统注册事件、方法监听注册事件。 0、1级事件(传统注册事件)不允许多个响应程序 我们在元素内或js内使用on的方式就是传统注册事件,这种形…

【论文阅读笔记】Explicit Visual Prompting for Low-Level Structure Segmentations

1.介绍 Explicit Visual Prompting for Low-Level Structure Segmentations 低级结构分割的显式视觉提示 2023年发表在IEEE CVPR Paper Code 2.摘要 检测图像中低级结构(低层特征)一般包括分割操纵部分、识别失焦像素、分离阴影区域和检测隐藏对象。虽…

有道翻译相关介绍

官网:有道翻译 (youdao.com) 翻文本与文档 长短句实时翻译,109种语言互译 支持医学、计算机、金融经济等专业领域翻译 提供42个专业术语库&上传自定义术语库 翻词汇 实时收录最新词汇,8种语言互译 完整收录新牛津、柯林斯、韦氏等权威…

贪心算法(算法竞赛、蓝桥杯)--修理牛棚

1、B站视频链接&#xff1a;A27 贪心算法 P1209 [USACO1.3] 修理牛棚_哔哩哔哩_bilibili 题目链接&#xff1a;[USACO1.3] 修理牛棚 Barn Repair - 洛谷 #include <bits/stdc.h> using namespace std; const int N205; int m,s,c,ans; int a[N];//牛的位置标号 int d[N…

基于springboot实现街球社区网站系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现街球社区网站系统演示 摘要 本文主要讲述了基于SpringBootVue模式的街球社区网站的设计与实现。这里所谓的街球社区网站是通过类似于百度贴吧之类的网上论坛使得所有的街球爱好者有一个可以互相交流的平台,并使所有用户可以在社区进行教学视频的观看以及相关…

【LeetCode】一周中的第几天+ 一年中的第几天

2023-12-30 文章目录 一周中的第几天方法一&#xff1a;模拟思路步骤 方法二&#xff1a;调用库函数方法三&#xff1a;调用库函数 [1154. 一年中的第几天](https://leetcode.cn/problems/day-of-the-year/)方法一&#xff1a;直接计算思路&#xff1a; 方法二&#xff1a;调用…

智慧灌区项目案例(甘肃省兰州市某重点灌区)

​甘肃省兰州市某重点灌区自上个世纪80年代建成后,灌溉面积达到30万亩,对推动当地农业发展发挥了重要作用。但长期以来,该灌区的水利管理仍主要依靠人工统计记录,缺乏实时监测和精细化管理。为实现灌区管理的现代化升级,甘肃水利局委托星创易联公司设计实施水利信息化项目。 项…

MAC M1 安装mongodb7.0.5 版本

1、进入官网 Download MongoDB Community Server | MongoDBDownload MongoDB Community Server non-relational database to take your next big project to a higher level!https://www.mongodb.com/try/download/community 2、选择版本 3、下载后解压 放到 /usr/local 并修改…

HarmonyOS—端云一体化组件

概述 DevEco Studio还为您提供多种端云一体化组件。集成端云一体化组件后&#xff0c;您只需进行简单配置即可向应用用户提供登录、支付等众多功能。 登录组件 您可使用端云一体化登录组件向应用用户提供登录和登出功能&#xff0c;目前支持帐号密码登录、手机验证码登录、以…

css【详解】—— 圣杯布局 vs 双飞翼布局 (含手写清除浮动 clearfix)

两者功能效果相同&#xff0c;实现方式不同 效果预览 两侧宽度固定&#xff0c;中间宽度自适应&#xff08;三栏布局&#xff09;中间部分优先渲染允许三列中的任意一列成为最高列 圣杯布局 通过左右栏填充容器的左右 padding 实现&#xff0c;更多细节详见注释。 <!DOCTYP…

【Linux C | 网络编程】getaddrinfo 函数详解及C语言例子

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

数据库进阶——如何提升数据库的安全性,以MySQL和Redis加固为例

目录 引出数据库加固加固思路MySQLRedis Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 数据库进阶——如何提升数据库的安全性&#xff0c;以MySQL和Redis加固为例 数据库加固 加固思路 账号配置 应按照用户分配账号&…

Linux进阶——系统安全,重要文件,加固系统的相关配置

目录 引出Linux系统安全一、重要文件二、帐户口令三、权限管理四、日志配置五、服务安全六、其他配置 缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Linux进阶——系统安全&#xff0c;重要文件&#xff0c;加固系统的相关配置 Linux系统安…

C习题002:澡堂洗澡【仅供参考】

问题 输入样例 在这里给出一组输入。例如&#xff1a; 2 5 1 3 3 2 3 3 输出样例 在这里给出相应的输出。例如&#xff1a; No代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB 代码 #include<stdio.h> int main() {int N,W,s,t,p;int arr_s[…

Spring 学习记录

Spring 学习记录 1. Spring和SpringFrameWork1.1 广义的Spring2.1 狭义的Spring2.3 SpringFrameWork / Spring框架图 2. Spring IOC容器(即上图中的Core Container)2.1 相关概念 (IOC DI 容器 组件)2.2 Spring IOC容器的作用2.3 Spring IOC容器接口和具体实现类 3. Spring IOC …

TDengine 研发分享:利用 Windbg 解决内存泄漏问题的实践和经验

内存泄漏是一种常见的问题&#xff0c;它会导致程序的内存占用逐渐增加&#xff0c;最终导致系统资源耗尽或程序崩溃。AddressSanitizer (ASan) 和 Valgrind 是很好的内存检测工具&#xff0c;TDengine 的 CI 过程就使用了 ASan 。不过这次内存泄漏问题发生在 Windows 下&#…