首页 > 其他分享 >建立成功平台工程的关键:自助式 IaC

建立成功平台工程的关键:自助式 IaC

时间:2024-04-29 09:57:03浏览次数:24  
标签:基础设施 开发人员 自助式 平台 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,基础架构,团队
From: https://www.cnblogs.com/sealio/p/18165032

相关文章

  • RK 平台安装 ubuntu 系统
    一、简介之前有介绍到ARM平台移植ubuntu的操作流程,在RK系列的平台同样适用,所以这里就不介绍怎么一步步的去对ubuntu进行移植,而是怎么将移植的过程编写成脚本,这样便可以在SDK中通过一行命令即可生成rootfs.img镜像,管理起来也也比较方便,需要裁剪摸个工具时也很便捷。......
  • 猿人学内部练习平台第16题
    第16题:表情包+sojson6.0抓包分析可知,需逆向safe参数,根据调用堆栈很容易找到safe的生成位置,如下:上方有一段特殊字符组成的内容,查看上下文并未找到token,因此token很可能是这段特殊字符构成的代码生成的,单步调试可以发现,上面是在进行赋值操作,最后一行很长的那一行是进行一些函数执......
  • 自动驾驶半实物仿真平台设计方案:827-8路GMSL视频注入回灌的自动驾驶半实物仿真平台
    8路GMSL视频注入回灌的自动驾驶半实物仿真平台一、平台介绍   产品基于8路GMSL视频注入回灌的自动驾驶半实物仿真平台旨在提高实验室及研究生院师生在基础软件层开发、计算机视觉和深度学习方面的专业知识学习和实践能力,为师生提供一个稳定软件开发和多精度框......
  • Windows平台NASM汇编与C混合调用
    Windows平台NASM汇编与C混合调用tonyblackwhite之前介绍了Windows平台下,用微软宏汇编MASM与C混合调用的方法。MASM是微软独有的,Linux没法用,我喜欢学一个能够应用于两种平台的,所以还是更钟情于开源的可跨平台的NASM汇编。tonyblackwhite:Win平台最简单的方式实现C程序调用汇编函......
  • 电子商务平台(E-Business Platform)
    电子商务平台信息如下:一、中英文名称中文名称:电子商务平台英文名称:E-BusinessPlatform或E-CommercePlatform二、定义电子商务平台是为企业或个人提供网上交易洽谈的平台。它是建立在Internet网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境,协调、整合信息流......
  • Hadoop集群模式的搭建之二:配置Hadoop平台基础环境
    在进行Hadoop集群的安装部署之前,需要对虚拟机进行一些基础环境配置。例如,为了在集群中识别主机,需要配置主机和IP地址的映射关系;为了使用Web相关的服务和访问连接,需要在集群中关闭并禁用防火墙功能;为了减少节点之间访问时人工输入用户密码,需要配置SSH免密登录;为了集群节点的时间能......
  • 实验一 二手平台原型设计
    墨刀、Axure、Mockplus等原型设计工具优缺点分析:一、墨刀优点:在轻量级的移动端原型制作更加迅速,展示更加方便。缺点:价格较贵,不能画流程图,相对于其他两款功能还不是很全面;应用局限性,专注于app原型设计,在后台和网页稍有乏力;归档能力不足,更倾向于链接、二维码形式输出,不能以文档输......
  • 猿人学内部练习平台第11题
    第11题:人均会解jsl控制台抓包可以看到,页面请求了两次https://www.python-spider.com/challenge/11第一次返回了一段js代码,第二次返回了所需数据:对比两次请求参数发现,只有cookie中的__jsl_clearance发生了变化,其他参数均相同,因此该值应该是第一次返回的js生成的。清除cookie......
  • 猿人学内部练习平台6~10题
    第六题:session保持检测使用session请求即可:session=requests.Session()第七题:请求规律检测1-post根据请求接口找规律,在每一页请求前请求一次https://www.python-spider.com/cityjson即可requests.post('https://www.python-spider.com/cityjson',verify=False)response=......
  • 如何通过文件下发平台,让数据发挥其真正的价值?
    银行网点文件下发平台是专门设计用于银行系统内部或与外部机构之间安全、高效地传输和分发文件的系统。目前使用较多的方式是FTP、邮件、物理媒介等,但都存在一定问题:  1、物理媒介:如U盘、光盘等,通过快递服务发送给分支机构,确保物理媒介在传输过程中的安全。但容易出现丢失、......