平臺工程文化:軟件開發的創新路徑和協作之道

在快速發展的軟件開發領域,具有前瞻性思維的企業組織正在擁抱平臺工程文化的變革力量。這種創新方法強調創建共享平臺、工具和實踐,使開發人員能夠更快、更高效地交付高質量的軟件。在本文中,我們將深入探討平臺工程文化的核心原則和深遠的好處,探索它如何在技術團隊中促進協作、創新和可擴展性的獨特融合。

01 平臺工程文化的本質

平臺工程文化的核心理念是建立一套可重復使用、可擴展的工具、服務和框架,為整個組織的開發人員賦能。這種文化提倡創建可被不同團隊和項目利用的集中式平臺,而不是將基礎設施和通用服務視為孤立的項目。這種方法的協作性和前瞻性消除了重復勞動,簡化了開發流程,并確保了不同產品和服務之間協調一致的產出。

02 平臺工程的基本原則

  • 抽象和標準化:平臺工程師熟練地抽象底層基礎設施和服務的復雜性,為開發人員提供簡單和標準化的 API。這樣,他們就能讓開發人員專注于構建特性和功能,而不是處理低層次的實施細節。

  • 自動化:平臺工程文化的核心是對自動化的高度重視。自動化調配、部署、測試和監控流程使團隊能夠以更高的速度、可靠性和一致性交付軟件。

  • 自助服務:平臺工程師努力賦予開發人員自助服務功能,使他們能夠毫不費力地訪問和管理資源。這些自助服務平臺有助于加快迭代速度,減少日常任務對集中團隊的依賴。

  • 持續改進:平臺工程文化深深植根于持續改進的原則。平臺工程師會積極征求開發人員的反饋意見,找出痛點,迭代演進平臺,以滿足不斷變化的開發需求

03?擁抱平臺工程文化的優勢

  • 加速開發:通過提供預構建的組件和服務,平臺工程文化加速了開發過程。開發人員可以集中精力構建應用邏輯,從而減少冗余,加快新功能和新產品的上市時間。

  • 增強協作:平臺工程文化培養跨團隊協作精神。平臺團隊與應用程序開發團隊攜手合作,促進合作意識和共同責任,以交付高質量軟件。

  • 可擴展性和效率:共享平臺本質上可以減少冗余工作并提高軟件開發效率。隨著組織的發展,該平臺可以無縫擴展以適應不斷增長的需求,而無需大幅增加資源。

  • 一致性和可靠性:標準化平臺可確保各產品的一致性,從而帶來更可靠、更可預測的用戶體驗。此外,自動化流程可減少人為錯誤,提高系統可靠性。

  • 鼓勵創新:通過將常見的基礎架構問題委托給平臺團隊,應用程序開發人員可以專注于創新和構建獨特的功能,為其產品或服務增加實質性價值。

  • 降低風險:標準化平臺降低了系統故障和中斷的風險,提高了整體可靠性和性能。

向平臺工程文化過渡可能會帶來一些挑戰。循序漸進的采用過程,加上持續的反饋循環,可以確保無縫過渡,并確保每個人對平臺工程文化的接受。

04?案例研究:Licious 的卓越平臺工程之旅

以 Licious 為例,我們將分析向平臺工程過渡的實際好處與優勢。在 Licious 內部已經意識到需要一種更加精簡、可擴展和高效的軟件開發和部署方法。

在這一過程中,和許多其他企業一樣,都遇到了與軟件開發規模相關的挑戰。隨著應用程序數量的不斷增加、版本的頻繁發布以及復雜的技術堆棧,Licious 發現在 DevOps 實踐中保持一致性、可靠性和效率變得越來越困難

認識到現有 DevOps 方法的局限性,去年年初,我們決定過渡到平臺工程,以全面應對這些挑戰。隨后我們分階段實施了戰略路線圖。

第 1 階段:通過自動化和左移增強 DevOps 能力

在第一階段,我們確定了以下工作領域:

  • 戰略和可衡量指標:我們對當前的實踐進行了全面評估,找出了痛點,并制定了一個具有衡量標準的強大 DevOps 工程方法愿景。我們制定了明確的戰略,使平臺工程目標與公司的長期業務目標保持一致。

  • 團隊重組和技能發展:對技術熟練的 DevOps 工程師團隊進行了重組和技能提升,使其專門從事平臺工程。還提供了額外的培訓,以確保他們掌握 IaC、容器化和通過云原生方法實現自動化部署管道等領域的必要知識。幫助他們將編程作為核心,而不僅僅是腳本。

  • 采用基礎設施即代碼:我們投資于 IaC 實踐,使用 Terraform 自動配置和管理基礎設施。這使得基礎架構部署和補丁的一致性、可重復性和版本控制成為可能。

  • 容器化和編排:使用 Docker 進行容器化,并通過 Kubernetes 進行協調,以簡化跨不同環境的應用部署、擴展和管理。采用云原生堆棧。創建基于 Kubernetes 的操作員,以自動化方式處理手動操作。

  • 在 45 天內將 100+ 項服務從 EC2 遷移到 Kubernetes

  • GitOps 和左移:我們投入了大量時間開發自助服務流程,并充分利用 GitOps 原則,使開發團隊能夠自主調配資源、管理部署和監控服務。這消除了資源瓶頸,減少了人工干預的需要。

  • 持續改進:我們不斷收集開發團隊的反饋意見,并根據實際使用情況和挑戰迭代改進平臺工程實踐。

第一階段成果

第一階段的結果非常積極。在團隊內部,我們能夠:

1. 減少 DevOps 每天執行的冗余任務。

2. 減少對 DevOps 的依賴和阻礙。

3. 提高系統的可靠性和可擴展性。

4. 減少由于高峰時段和活動而導致的意外中斷。

5. 服務所有者更有能力自信地管理其應用程序。

6.?最重要的是,改善DevOps工程師的工作與生活平衡,減少夜間意外急救時間。

第 2 階段:內部開發人員平臺

Licious 平臺工程之旅的下一階段是內部開發人員平臺。

為什么?

在向 Kubernetes 平臺遷移的過程中,我們面臨的大部分挑戰都是如何找到已廢棄服務的所有權以及部署在 Git 上的活動分支。因此,我們萌生了建立內部服務目錄的想法。

要解決什么問題??

減少新服務的載入時間;改善開發人員體驗并實施服務成熟度指數;簡化我們從開發到生產的發布過程,實現對 DevOps/平臺工程師的零依賴。

進展如何?

目前,我們的 IDP 之旅還處于初期階段。但是,當我們越多地了解其他公司對內部開發人員平臺(如 Spotify 的 Backstage)的調整時,我們就越堅信自己走在正確的道路上。

第二階段成果

Licious 從 DevOps 到平臺工程的轉變,展示了采用整體方法進行軟件開發和部署的變革性影響。通過創建一個標準化、可擴展和自助式的平臺,將效率、可靠性和協作提升到新的水平。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207614.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207614.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207614.shtml

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

相關文章

C語言期末考試復習PTA數據類型及表達式-分支結構程序-循環結構-數組經典選擇題

目錄 第一章:C語言數據類型和表達式 第一題: 第二題: 第三題: 第四題: 第五題: 第六題: 第七題: 第八題: 第九題: 第二章:分支結構程序…

打包 抖音直播云游戲

抖音直播云游戲 oaid資源中的bcpkix-jdk15to18-1.68.jar與抖音云游戲的資源沖突。 其實資源名稱是一樣的,拷貝時資源名稱有變化。 為解決此問題,需要規范化文件的資源名稱,將.置為_ Error: Command failed: cmd /c echo off && Chc…

NoSuchColumnFamilyException: org.apache.hadoop.hbase.regionserv

問題 在IDEA運行HBASE腳本時出現如下報錯: org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family table does not exist in region hbase:meta,,1.1588230740 i…

Java多線程并發(二)

四種線程池 Java 里面線程池的頂級接口是 Executor,但是嚴格意義上講 Executor 并不是一個線程池,而只是一個執行線程的工具。真正的線程池接口是 ExecutorService。 newCachedThreadPool 創建一個可根據需要創建新線程的線程池,但是在以前…

深入了解數據庫鎖:類型、應用和最佳實踐

目錄 1. 引言 2. 數據庫鎖的基本概念 2.1 悲觀鎖和樂觀鎖 2.2 排他鎖和共享鎖 3. 悲觀鎖的應用場景 3.1 長事務和大事務 3.2 并發修改 3.3 數據庫死鎖 4. 悲觀鎖的最佳實踐 4.1 精細控制鎖的粒度 4.2 避免死鎖 4.3 考慮樂觀鎖 5. 案例分析 5.1 銀行系統的轉賬操作…

【GEE筆記】隨機森林特征重要性計算并排序

隨機森林是一種基于多個決策樹的集成學習方法,可以用于分類和回歸問題。在gee中可以使用ee.Classifier.smileRandomForest()函數來創建一個隨機森林分類器,并用它來對影像進行分類。 隨機森林分類器有一個重要的屬性,就是可以計算每個特征&a…

人工智能虛擬化環境

人工智能虛擬化環境通過模擬、管理和優化計算資源、數據資源和軟件環境,可以為人工智能算法和應用提供更加高效、靈活和可靠的運行平臺。本文將探討人工智能虛擬化環境的概念、技術和應用,并展望其在人工智能領域的未來發展。 首先,人工智能…

LVGL的學習

該LVGL基于LVGL的8.2版本 開關的控件Demo lv_obj_t* switch_obj lv_switch_create(lv_scr_act());lv_obj_set_size(switch_obj, 120, 60);lv_obj_align(switch_obj, LV_ALIGN_CENTER, 0, 0); 對象: 對于這一類對象,他們有共同的屬性的幾個特征。 創建部…

.NET使用分布式網絡爬蟲框架DotnetSpider快速開發爬蟲功能

前言 前段時間有同學在微信群里提問,要使用.NET開發一個簡單的爬蟲功能但是沒有做過無從下手。今天給大家推薦一個輕量、靈活、高性能、跨平臺的分布式網絡爬蟲框架(可以幫助 .NET 工程師快速的完成爬蟲的開發):DotnetSpider。 注…

Vue3組件使用問題

Vue3組件學習 文章目錄 Vue3組件學習一、Message 全局提示組件返回數據換行問題二、DatePicker 日期選擇框組件限制選定年份問題 一、Message 全局提示組件返回數據換行問題 問題&#xff1a;使用中發現僅僅通過寫入\n或<br/>&#xff0c;無法實現回車顯示的結果。 解決…

java中synchronized關鍵字的用法

在java編程中&#xff0c;經常需要用到同步&#xff0c;而用得最多的也許是synchronized關鍵字了&#xff0c;下面看看這個關鍵字的用法。因為synchronized關鍵字涉及到鎖的概念&#xff0c;所以先來了解一些相關的鎖知識。java的內置鎖&#xff1a;每個java對象都可以用做一個…

在Pytorch中使用Tensorboard可視化訓練過程

這篇是我對嗶哩嗶哩up主 霹靂吧啦Wz 的視頻的文字版學習筆記 感謝他對知識的分享 本節課我們來講一下如何在pytouch當中去使用我們的tensorboard 對我們的訓練過程進行一個可視化 左邊有一個visualizing models data and training with tensorboard 主要是這么一個教程 那么這里…

Flutter一直 Running Gradle task ‘assembleDebug‘

Flutter升級到3.13.7之后&#xff0c;一直Running Gradle task ‘assembleDebug’&#xff0c;之前運行還沒問題。 試了各種方法&#xff0c;比如添加阿里云鏡像&#xff0c;flutter\packages\flutter_tools\gradle目錄下修改build.gradle.kts文件&#xff0c;都不行。 參考大佬…

Termux+Hexo結合內網穿透輕松實現安卓手機搭建博客網站發布公網訪問

文章目錄 前言 1.安裝 Hexo2.安裝cpolar3.遠程訪問4.固定公網地址 前言 Hexo 是一個用 Nodejs 編寫的快速、簡潔且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在幾秒內&#xff0c;即可利用靚麗的主題生成靜態網頁。 下面介紹在Termux中安裝個人hexo博客并結合…

ArkTS語言難嗎?鴻蒙指南

HarmonyOS的開發語言是ArkTS、JS(JavaScript)。 ArkTS簡介 ArkTS是HarmonyOS優選的主力應用開發語言。ArkTS圍繞應用開發在TypeScript&#xff08;簡稱TS&#xff09;生態基礎上做了進一步擴展&#xff0c;繼承了TS的所有特性&#xff0c;是TS的超集。因此&#xff0c;在學習…

骨傳導耳機品牌排行榜哪家強?盤點2024年骨傳導耳機排行榜前十

隨著科技的發展&#xff0c;耳機已經從單純的音樂播放工具&#xff0c;演變為我們生活中不可或缺的伴侶。其中&#xff0c;骨傳導耳機憑借其獨特的傳聲方式&#xff0c;逐漸受到越來越多消費者的青睞。骨傳導耳機通過骨頭直接傳遞聲音&#xff0c;避免了外耳道感染和中耳疾病&a…

Java中不同轉換符實現不同數據類型到字符串的轉換

String類的format()方法用于創建格式化的字符串以及連接多個字符串對象。熟悉C語言的同學應該記得C語言的sprintf()方法&#xff0c;兩者有類似之處。format()方法有兩種重載形式。 format(String format, Object... args) 新字符串使用本地語言環境&#xff0c;制定字符串格式…

(企業項目)SpringBoot實現雪花算法id注冊功能

以下是使用 Spring Boot 實現雪花算法的完整代碼。 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class SnowflakeGeneratorApplication {public static void mai…

Java 簡易版 TCP(一對一)聊天

客戶端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;p…

刪除有序數組中的重復元素-練習雙指針編程最好的一道題-費元星

這是練習編成雙指針最好的一道題&#xff0c;邏輯簡單&#xff0c;優化簡單。 簡單理解&#xff1a;采用雙指針&#xff0c;總左邊進行開始&#xff0c;如果有新元素則將前面移動到后面。然后加一個剪枝操作&#xff0c;如果前后元素大于1&#xff0c;再移動。 給你一個 非嚴格…