建立成功平台工程的关键:自助式 IaC
从技术上讲,云一直都是自助式服务,但由于其在实践中的复杂性,许多开发人员并不喜欢。随着公司采用现代架构(云原生、无服务器等)和新的提供商(多云、SaaS 应用程序),以及云提供商发布更多服务,云变得更加难以使用。
这就是为什么有竞争力的工程团队现在都在想办法通过消除瓶颈来成倍提高其 DevOps、网站可靠性和基础设施工程师的产出,从而加快所有开发人员的工作效率。
平台工程提供了一种解决方案,它使开发团队能够自助构建、部署和管理自己的云基础设施,同时遵循最佳实践。
让我们来探讨一下平台工程的好处、成功的平台团队用于授权开发人员自助服务基础架构的三种主要方法,以及选择支持所用方法的基础架构即代码(IaC)框架的重要性。
平台工程的重要性
开发人员需要基础架构来运行他们的应用程序和服务。传统上,许多公司都由中央基础架构团队代表开发人员调配和管理基础架构,但这种模式很容易出现瓶颈,因为开发人员对基础架构的要求压得中心团队喘不过气来。
随着现代开发团队承担起拥有和运维自己基础架构的责任,他们也需要简单快捷的方法来配置基础架构。你可能会认为,随着这些转变,中心基础架构团队的需求减少了,但他们在助力开发人员和公司在这个该领域取得成功方面发挥着至关重要的作用。
从开发人员体验的角度来看,平台工程可以解决几个问题。
首先,云过于复杂和笨重,大多数开发人员在没有抽象和工具的情况下无法使用。微服务和无服务器等现代云架构增加了管理基础设施的复杂性。许多公司都在 Kubernetes 上运行应用程序。虽然开发人员需要负责对运行其应用程序的基础架构进行更多管理,但期望所有开发人员都深入了解云基础架构的复杂性是不切实际的。
其次,开发人员需要了解应配置哪些基础架构资源,以及如何遵守公司确定的最佳实践,如安全和成本问题、云区域、监管要求和经批准的云提供商。仅在 AWS 上就有 200 多种服务可供选择,因此确定正确的资源并非易事。
第三,开发人员需要一种简单的方法来调配、配置和管理基础设施。这可能会很复杂,因为许多架构使用来自一个云的多种资源,它们通常包括来自其他云或 SaaS 供应商的资源,而且在部署 Kubernetes 这样复杂的东西时可能会遇到挑战。
通过分散基础设施的管理,公司给开发人员带来了新的复杂问题。因此,将复杂问题抽象化,使开发人员能够专注于更快地发布功能的需求变得更加迫切。
这就是平台工程的用武之地。平台团队构建共享工具和服务,帮助开发团队自助开发、部署和运维云基础设施。这包括云基础设施、容器协调平台、数据库、网络、监控、代码库和部署流水线。
注意:高效的平台团队将其服务的应用程序开发人员视为客户,必须了解他们,并通过产品解决他们的问题。
建立自助式 IaC 的方法
成功的平台团队有几个特征。其中包括业务的转变,从仅仅将基础设施团队视为成本中心转变为业务的加速器。通常情况下,这意味着业务部门已赋予团队执行平台工程模型的权力和资源。高效的平台团队还采用客户驱动的思维方式,将所服务的应用开发人员视为客户,必须通过解决他们问题的产品来了解和赢得他们。
最后一点是,成功的平台团队都拥有才华横溢的工程师,他们具备多学科的技能、经验和同理心,能够在公司内部打造优秀的产品、满足开发人员的需求并 “走向市场”。通常,他们拥有基础设施或 DevOps 和软件工程等多个工程学科的经验,以及软件工程师、DevOps 工程师、网站可靠性工程师、云架构师、云工程师等各种职称。
平台工程师为开发人员提供基础设施和工具,帮助他们高效地部署和运行应用程序,使开发人员能够专注于构建优秀的软件。
概括地说,平台团队主要采用三种方法让开发人员能够自助服务基础设施。
第一种是创建基础架构库,表达基础架构资源和配置,用于使用部署工具配置基础架构。
第二种是创建基础架构命令行接口,允许开发人员通过熟悉的 CLI(类似于 Heroku)调配和管理基础架构。第三种是创建基础架构平台应用程序,为开发人员提供图形用户界面来配置和管理基础架构。
所有这些方法的共同点是采用标准化架构,其中包含平台团队定义的最佳实践、执行部署规则的机制以及统一的部署工作流程(代码审查、拉取请求、CI/CD、测试等)。
为了采用这些方法,平台团队需要一个支持其产品的部署框架。尽管构建自己的定制部署工具可能很诱人,但采用基础架构即代码框架是一种更高效、功能更强的方法。
IaC 允许工程师以管理代码的相同方式定义和管理基础架构。这种方法具有多种优势,包括版本控制、测试、可重用性和自动化。目前存在许多框架,有些是开源的,有些则不是,它们可能是特定于云的,也可能是多云的。大多数框架使用基于 YAML/JSON 的特定领域语言 (DSL),也有一些框架使用通用编程语言。
虽然每种方法各有利弊,但许多平台团队发现,采用通用语言进行 IaC 是最灵活、最强大、适应性最强的方法。这些语言更容易对复杂的基础设施进行建模,因为它们本机支持循环和条件等构造,并为抽象和重用提供了熟悉而成熟的模型。
而且,如果 IaC 是用开发人员已经掌握的语言编写的,他们使用起来就会容易得多。
Walrus 就是基于 IaC 采用平台工程技术的典范。它是一款开源应用平台,基于 IaC 工具如 Terraform 和 OpenTofu,采用双层抽象架构。其中包括 IaC 模板(如 Terraform 模块)和资源定义(Resource Definition)。IaC 模板允许运维人员创建可复用的基础设施配置,减少重复性工作。通过资源定义,运维人员可设定和执行公司策略,包括云资源的使用规则、配置标准及访问权限,确保资源使用的安全性和合规性。这使得开发人员能通过自助服务方式配置和部署资源,无需关注底层技术细节,专注于应用开发。同时,Walrus 遵循 DRY (Don't Repeat Yourself) 原则,保证跨平台和云环境的一致性,避免代码冗余。
另外,Walrus 可以编排整套应用系统,并提供统一的视图简化资源和环境管理。包括:
- 应用统一编排:以应用为中心,对应用服务集周边资源依赖(数据库、中间件、负载均衡、网络等)进行统一编排部署。并自动生成依赖图,直观展示底层模块、运行状态及依赖关系等。
- 动态环境管理:支持灵活的环境配置及管理,支持一键创建、克隆、停止整个应用环境或单个服务,满足各类环境管理需求。
- 统一视图:Walrus 在单一资源视图中提供针对资源详情各类操作的支持,如查看资源列表、管理资源及其底层组件,查看日志、进行终端调试故障、获取服务的URL等。用户无需切换界面即可完成资源管理。
可见,开发团队是可以独立配置基础架构,而不会给平台团队带来大量成本,并消除了配置瓶颈。同时,平台团队可以确保开发人员调配的是经过批准的基础设施,从而降低了错误配置的风险。
总结
平台工程是一门强大的新兴工程学科,可帮助企业提高开发人员的工作效率,并从云投资中获得更多价值。平台工程团队采用以客户为中心的方法,为开发人员提供自助式基础架构工具,满足他们的需求并提高他们的工作效率,从而使他们能够专注于构建优秀的软件。通过这种工具,开发人员可以为其应用程序配置正确的基础架构并对其进行管理。
选择 IaC 框架是平台工程战略的重要基础,因为它定义了如何在整个组织内对基础架构进行建模、测试、分布和部署。
特别是,IaC 语言的选择会影响基础设施的可用性、可重用性和扩展能力。通用语言具有很大的优势,因为它们已经被广泛采用,比 DSL 更灵活,表达能力更强,而且拥有丰富的工具和框架生态系统,可以提高工作效率。
建立成功平台工程的关键:自助式 IaC的更多相关文章
- 关于Quartus构建nios软核以及eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解
这不是一篇构建nios的教程,而是遇到的各种问题以及解决方法.至于构建教程,网上一大把,我推荐正点原子的FPGA教程,比较新,比较详细,通俗易懂!!! 这里以一个点亮LED灯的Nios软核为例,很明显 ...
- eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解
推荐大家预先建立好一个工程目录文件夹,确实挺好用,参考正点原子的pdf教程,如下图所示, 我们eclipse在software文件夹建立一个workspace即可 选择用helloworld模板建立工 ...
- DevOps、SRE、平台工程的区别
DevOps.SRE和平台工程的概念在不同时期出现,并由不同的个人和组织开发. DevOps作为一个概念是由Patrick Debois和Andrew Shafer在2009年的敏捷会议上提出的.他们 ...
- 研发效能|DevOps 已死平台工程永存带来的焦虑
最近某位大神在推特上发了一个帖子,结果引来了国内众多卖课机构.培训机构的狂欢,开始贩卖焦虑,其实「平台工程」也不是什么特别高深莫测的东西.闲得无聊,把这位大神的几个帖子薅了下来,你看过之后就会觉得没啥 ...
- struts2讲义----建立一个struts2工程
建立一个Struts2 工程 Ø 1在MyEclipse中新建web工程 Ø 2在struts-2.2.1.1-all\struts-2.2.1.1解压struts2-blank.war( 最基础的示 ...
- 平台工程101:Dev、Sec和Ops的自动化黏合剂
国际权威知名调研机构 Gartner 在<2023年最重要的10个技术趋势>报告中将平台工程(Platform Engineering)列为高速发展的技术趋势之一,并预测到2026年80% ...
- 使用keil建立标准STM32工程模版(图文详细版!)
1. 模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当 ...
- CCS5 建立SYS/BIOS工程时报错“cannot find file "./configPkg/linker.cmd" bios”的解决方法
CCS5 建立SYS/BIOS工程时报错“cannot find file "./configPkg/linker.cmd" bios”的解决方法 报错 #10008-D cann ...
- MyGui笔记(1)建立第一个工程
记录下学习 MyGui的一些笔记,从建立第一个工程开始. 步骤: 1.右键MYGUI解决方案,添加→新建项目,选择“Win32 项目”,名称为:TestHello.下一步,勾选“空项目”. 2.设置工 ...
- 【建项目】eclipse maven建立多模块工程
在工作的时候,大多时候都是用Maven来管理项目,可是一般我们都知道怎么用maven管理工程,却不知道通过Maven自己来建立多模块工程.于是自己抽时间,在网上找些资料,做了起来. 建立简单的Mave ...
随机推荐
- 【虚幻引擎】DTWebSocketServer 蓝图创建WebSocket服务器插件使用说明
本插件可以使用蓝图创建WebSocket服务器,并监听响应数据. 下载地址在文章最后. 1. 节点说明 Create Web Socket Server – 创建WebSocket服务器对象并开启监听 ...
- C# Winform 图片 Base64 转换
//图片 转为 base64编码的文本 private void button1_Click(object sender, EventArgs e) { OpenFileDialog dlg = ne ...
- KingbaseES 分区表与 Oracle 分区表对于空值的处理差异
一.对于null 值处理 1.Oracle 分区字段允许为空,只要存在maxvalue 分区,值就可以插入. SQL> create table t1(id number,data varcha ...
- 探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较
1. 数据格式介绍 数据格式是用于组织和存储数据的规范化结构,不同的数据格式适用于不同的场景.常见的数据格式包括JSON.YAML.XML.CSV等. 数据可视化 | 一个覆盖广泛主题工具的高效在线平 ...
- Linux命令行常用命令(一)
ls 命令,展示文件夹内内容 -R :连同子目录内容一起列出来: -S :以档案容量大小排序! -t :依时间排序 cd 命令 cd /root/Docements # 切换到目录/root/Doce ...
- 【Learning eBPF-2】eBPF 的“Hello world”
前一章讲了 eBPF 为什么这么吊,不理解没关系,现在开始,我们通过一个 "Hello world" 例子,来真正入门一下. BCC Python 框架是上手 eBPF 的最友好方 ...
- lodash已死?radash最全使用介绍(附源码说明)—— Array方法篇(2)
前言 前篇我们已经介绍了 radash 的相关信息和部分 Array 相关方法,详情可前往主页查看: 本篇我们继续介绍 radash 中 Array 的其他相关方法: Radash 的 Array 相 ...
- Ohos-MPChart——支持多种图表绘制的组件
简介 Ohos-MPChart是OpenAtom OpenHarmony(简称"OpenHarmony")系统显示各种图表视图的三方组件,用于声明式应用开发,提供了多种多样的图表视 ...
- JDBC驱动连接MogDB/opengauss
JDBC 驱动连接 MogDB/opengauss 一.环境说明 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release 7.6.18 ...
- 选择排序的基本实现【数据结构与算法—TypeScript 实现】
笔记整理自 coderwhy 『TypeScript 高阶数据结构与算法』课程 概念 本质:两两元素相比较,先扫描一遍未排序数列,把未排序的数列中的最小(大)元素,放到数列的已排序的末尾 特性 选择排 ...