平臺工程與安全

平臺工程不是為了取代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.pswp.cn/news/711749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711749.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711749.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c# 調用存儲過程

1.調用返回OUT的存儲過程 a.調用OUT字符串的存儲過程&#xff1b; #region 連接數據庫/// <summary>/// 連接數據庫/// </summary>/// <param name"connStatus"></param>/// <param name"dbNode"></param>/// <ret…

Android WebView訪問網頁+自動播放視頻+自動全屏+切換橫屏

一、引言 近期&#xff0c;我發現電視家、火星直播等在線看電視直播的軟件都已倒閉&#xff0c;而我奶奶也再無法通過這些平臺看電視了。她已六十多歲&#xff0c;快七十歲啦。這些平臺的倒下對我來說其實沒有多大的影響&#xff0c;但是對于文化不多的她而言&#xff0c;生活中…

Linux下的時間同步,以及ntp時間服務器配置流程

Linux下的時間同步&#xff0c;以及ntp時間服務器配置流程 概論常見時間操作命令Linux下的系統時間配置Linux硬件的時間的設置系統時間和硬件時間的同步NTP服務器時間的同步NTP服務的安裝NTP的時間同步定時任務里的時間同步配置文件同步時間 概論 但在Linux下&#xff0c;系統…

SpringBoot中間件簡介

Spring Boot是一個Java框架&#xff0c;它提供了一系列中間件來簡化應用程序的開發和集成。以下是一些常見的Spring Boot中間件&#xff1a; Web中間件&#xff1a; Servlet容器&#xff08;內嵌Tomcat、Jetty或Undertow&#xff09; Spring MVC&#xff08;用于構建Web應用程…

HBuilderX創建uniapp項目使用 tailwindcss

文章目錄 一、創建package.json文件二、打開終端 yarn / npm 安裝依賴三、創建 vue.config.js文件四、創建postcss.config.js文件五、創建tailwind.config.js文件六、App.vue文件的style中引入tailwindcss 一、創建package.json文件 {"devDependencies": {"aut…

藍橋杯算法 一.

分析&#xff1a; 本題記錄&#xff1a;m個數&#xff0c;異或運算和為0&#xff0c;則相加為偶數&#xff0c;后手獲勝。 分析&#xff1a; 369*99<36500&#xff0c;369*100>36500。 注意&#xff1a;前綴和和后綴和問題

知識(202402)

1.Conditional Conditional來源于spring-context包下的一個注解。Conditional中文是條件的意思&#xff0c;Conditional注解它的作用是按照一定的條件進行判斷&#xff0c;滿足條件給容器注冊bean。 可以控制一個配置類是否注入到容器中&#xff0c;比如控制xxl-job不自動注冊…

【wpf】關于綁定的一點明悟

背景簡介 軟件功能為&#xff0c;讀取一個文件夾下的所有子文件夾&#xff0c;每個文件夾對自動對應生成 一組 “按鍵四個勾選” 按鍵點擊觸發&#xff0c;可以發送與其對應文件夾中的一些內容。這個綁定的過程我在之前的文章有過詳細的介紹&#xff0c;非常的簡單。 這里回顧…

3月1日做題總結(靜態庫與動態庫)

前言 最近學到了靜態庫和動態庫的相關知識&#xff0c;就順便整理了一下相關題目。如果對靜態庫和動態庫知識不熟悉的同學&#xff0c;推薦看這篇文章——《靜態庫與動態庫》&#xff0c;講的很詳細。 第一題 關于靜態庫與動態庫的區別&#xff0c;以下說法錯誤的是&#xff…

mac jupyter使用現有的python環境

mood&#xff1a;python 編程真的是在反復的與自己和解啊 本來超級的畏難情緒 讀會兒書 計算機博士的書 感覺還是要堅強的。《研磨記》--一位博士生的回憶錄 作者技術真的強啊 正文開始&#xff1a; 聚焦搜索&#xff0c;打開終端激活虛擬環境&#xff1a;conda activate pyt…

力扣爆刷第83天之hot100五連刷1-5

力扣爆刷第83天之hot100五連刷1-5 文章目錄 力扣爆刷第83天之hot100五連刷1-5一、1. 兩數之和二、49. 字母異位詞分組三、128. 最長連續序列四、283. 移動零五、11. 盛最多水的容器 一、1. 兩數之和 題目鏈接&#xff1a;https://leetcode.cn/problems/two-sum/description/?…

javascript中使用‘use strict’和不使用的區別

錯誤處理&#xff1a; 嚴格模式使得 JavaScript 對某些可能的問題拋出錯誤&#xff0c;而在非嚴格模式下&#xff0c;這些問題可能會被忽略。例如&#xff0c;未聲明的變量&#xff08;即全局變量&#xff09;在非嚴格模式下會被隱式地創建為全局變量&#xff0c;而在嚴格模式…

十一、 二進制位運算

描述 Python有位運算&#xff0c;是直接將數字看成二進制&#xff0c;直接對二進制數字的每一位進行運算。現輸入兩個十進制整數x、y&#xff0c;請計算它們的位與、位或&#xff0c;輸出按照十進制的形式。 輸入描述&#xff1a; 一行輸入兩個整數x、y&#xff0c;以空格間…

git:合并兩個不同倉庫的代碼

有兩個代碼倉庫&#xff1a;代碼倉庫A、代碼倉庫B&#xff0c;其中一個倉庫的代碼是為了新項目拉取的新分支&#xff0c;所以分支的部分修改歷史是相同的 現在要將代碼倉庫B 的代碼合并到代碼倉庫A 實現思路&#xff1a;分支合并 實現步驟&#xff1a; # 1、clone代碼倉庫A…

外匯天眼:ASIC 獲得針對前 Blockchain Global 董事的臨時出行限制令

澳大利亞證券與投資委員會&#xff08;ASIC&#xff09;已經針對前Blockchain Global Limited&#xff08;清算中&#xff09;董事梁國&#xff08;又名Allan Guo&#xff09;獲得了臨時旅行限制令。這些命令在其他方面&#xff0c;阻止郭先生在2024年8月20日或進一步命令之前離…

(done) 如何計算 Hessian Matrix 海森矩陣 海塞矩陣

參考視頻1&#xff1a;https://www.bilibili.com/video/BV1H64y1T7zQ/?spm_id_from333.337.search-card.all.click 參考視頻2&#xff08;正定矩陣&#xff09;&#xff1a;https://www.bilibili.com/video/BV1Ag411M76G/?spm_id_from333.337.search-card.all.click&vd_…

【JGit】 AddCommand 新增的文件不能添加到暫存區

執行git.add().addFilepattern(".").setUpdate(true).call() 。新增的文件不能添加到暫存區&#xff0c;為什么&#xff1f; 在 JGit 中&#xff0c;setUpdate(true) 方法用于在調用 AddCommand 的 addFilepattern() 方法時&#xff0c;將已跟蹤文件標記為需要更新。…

C語言基礎—習題及代碼(一)

1.讀取一個65到122之間的整型數&#xff0c;然后以字符形式輸出它&#xff0c;比如讀取了97&#xff0c;輸出字符a #include <stdio.h> int main(){int n;scanf("%d",&n);if(n>65 && n<122){printf("%c\n",n);} } 2.判斷某個年份…

windows安裝部署node.js以及搭建運行第一個Vue項目

一、官網下載安裝包 官網地址&#xff1a;https://nodejs.org/zh-cn/download/ 二、安裝程序 1、安裝過程 如果有C/C編程的需求&#xff0c;勾選一下下圖所示的部分&#xff0c;沒有的話除了選擇一下node.js安裝路徑&#xff0c;直接一路next 2、測試安裝是否成功 【winR】…

語義內核框架(Semantic Kernel)

語義內核框架-Semantic Kernel 首先看看官方描述&#xff1a;Semantic Kernel 是一個開源 SDK&#xff0c;可讓您輕松構建可以調用現有代碼的代理。作為高度可擴展的 SDK&#xff0c;可以將語義內核與來自 OpenAI、Azure OpenAI、Hugging Face 等的模型一起使用&#xff01;通…