平台工程文化:软件开发的创新路径和协作之道

在快速发展的软件开发领域,具有前瞻性思维的企业组织正在拥抱平台工程文化的变革力量。这种创新方法强调创建共享平台、工具和实践,使开发人员能够更快、更高效地交付高质量的软件。在本文中,我们将深入探讨平台工程文化的核心原则和深远的好处,探索它如何在技术团队中促进协作、创新和可扩展性的独特融合。

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.mzph.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;无法实现回车显示的结果。 解决…

在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 简易版 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…

检验科LIS系统源码,临床检验数据的采集、存贮、处理、提取、传输、汇总

检验科LIS系统源码 临床检验信息管理系统是医院信息管理系统的重要组成部分&#xff0c;实现对LIS系统所涉及的人流、物流、财流进行综合管理&#xff0c;对在临床检验活动各阶段中产生的数据进行采集、存贮、处理、提取、传输、汇总、加工生成各种信息&#xff0c;从而为医院的…

freeswitch编译mod_av支持webrtc MCU通话

系统环境 一、FS相关网站 二、第三方库安装 1.apt安装 2.指定版本sofia-sip安装 3.指定版本spandsp安装 4.指定版本libks安装 5.指定版本openssl安装 三、指定版本FS安装 1.CPPFLAGS配置 2.编译器版本 3.FS配置编译 四、FS&#xff0c;fs_cli运行&#xff0c;模块加载 附录 1.安…

word一键接受所有修订并保留修订痕迹

目的&#xff1a;让word修订插入的内容在接受修订后保留痕迹。 文章目录 目的&#xff1a;让word修订插入的内容在接受修订后保留痕迹。1. 打开批注的word文件2. 同时按住&#xff1a;*AltF11*&#xff0c;然后右键&#xff1a;Normal -->插入--> 模块3. 在出现的代码框中…

代码随想录算法训练营第五十九天【单调栈part2】 | 503.下一个更大元素II、42. 接雨水

503.下一个更大元素II 题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 求解思路 重点在如何处理循环数组。 方案一&#xff1a; 直接将两个数组拼接在一起&#xff0c;然后使用单调栈求下一个最大值。 方案二&#xff1a; 在遍历的过…