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

iac · 浏览次数 : 0

小编点评

## Platform Engineering: A Solution for Scaling Development Teams **From a technical standpoint, cloud has traditionally been a self-service model.** However, with the rise of modern architectures (cloud native, serverless), and new providers (multi-cloud, SaaS applications), cloud has become increasingly complex to manage. This complexity poses a significant challenge for development teams, who need to find ways to eliminate bottlenecks and significantly increase their development output. **Platform engineering provides a solution by empowering developers to build, deploy, and manage their own cloud infrastructure.** It adheres to best practices, making it easier for developers to adopt and integrate into their workflow. **Here are the three main methods of platform engineering for empowering developers:** 1. **Base Image Library:** Build a shared repository of infrastructure resources and configurations that can be used for deployment. 2. **CLI Command-Line Interface:** Provide a set of commands that developers can use to configure and manage the infrastructure with ease. 3. **Infrastructure as Code (IaC):** Define and manage the infrastructure using code, allowing for version control, testing, and consistent deployments across different environments. **Using IaC offers several benefits:** * **Simplicity:** IaC provides a common language for developers and operators, reducing the need for specialized skills. * **Versatility:** IaC can be used with various frameworks, including Terraform and OpenTofu, which offer different features and capabilities. * **Reusability:** IaC allows you to reuse existing configurations across different environments, reducing development time and effort. **Choosing the right IaC framework is crucial for success.** While various options exist, using a language that developers are already familiar with, like Python, can be advantageous. **Walrus is an open-source IaC platform that offers a comprehensive solution for managing infrastructure through code.** It provides tools and features that facilitate configuration, testing, and deployment of various cloud services and applications. **Benefits of using Walrus include:** * **Self-service infrastructure configuration:** Developers can build, deploy, and manage infrastructure without manual intervention. * **Cross-platform compatibility:** It supports multiple cloud environments, including public, private, and hybrid. * **Streamlined workflows:** Provides a unified view of resources and simplifies operations. * **Enhanced reliability and security:** Enforces security policies and controls to ensure compliance. **In conclusion, platform engineering is a powerful approach that can significantly improve development team efficiency and productivity.** By leveraging IaC, organizations can achieve greater control and consistency over their cloud infrastructure, leading to increased application delivery and improved software quality.

正文

从技术上讲,云一直都是自助式服务,但由于其在实践中的复杂性,许多开发人员并不喜欢。随着公司采用现代架构(云原生、无服务器等)和新的提供商(多云、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相似的内容:

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

从技术上讲,云一直都是自助式服务,但由于其在实践中的复杂性,许多开发人员并不喜欢。随着公司采用现代架构(云原生、无服务器等)和新的提供商(多云、SaaS 应用程序),以及云提供商发布更多服务,云变得更加难以使用。 这就是为什么有竞争力的工程团队现在都在想办法通过消除瓶颈来成倍提高其 DevOps、网

中小企业建设数字化工厂,选择集成老路还是整体重构?

基于统一的数字化平台,重构PLM、ERP、MES、WMS系统,构建柔性化的数字化系统,实现端到端的数据源统一,可以提高协同效率和降低生产成本。

华为云助推武水集团项目成功入选住建部“智慧水务”典型案例!

摘要:目前,武汉市已将该平台推广复制到该市其他供水主体,华为云也将继续携手助力,为武汉市营商环境高质量得分提供有力支撑。 近日,住房和城乡建设部科技与产业化发展中心发布《关于发布2022年智慧水务典型案例的通知》,饮用水安全保障类、水环境综合治理类以及综合类的18个项目入选2022年智慧水务典型案例

华为云Classroom聚焦人才数字化转型,引领智慧教育改革新模式

随着教育行业数字化转型进程加快,利用现代化云端技术手段,线上线下相结合方式建立的全新OMO产教融合一体化已成为行业趋势。华为云Classroom平台沉淀了华为多年研发实践经验和多种前沿技术,以赋能伙伴、助力企业、培养未来实战型人才为初衷,将学习前沿理论知识、参与多样性社会实践和标准化人才识别激励有机

我在京东做研发 | 揭秘支撑京东万人规模技术人员协作的行云DevOps平台

随着业务变化的速度越来越快各类IT系统的建设也越来越复杂大规模研发团队的管理问题日益突出如何提升研发效能成为时下各类技术团队面临的重要挑战 京东云DevOps专家将带您深入研发一线揭秘支撑京东集团万人级研发管理的行云DevOps平台 分享企业应该如何规划DevOps落地与演进 嘉宾介绍 孙长虹 京东

5种典型 API 攻击及预防建议

API 帮助跨多个设备互连多个应用程序或软件系统,定义它们可以发出的调用或请求的种类、调用的方式、应使用的数据格式以及应遵守的约定。API 已经发展成为重要的互连,支持不同应用程序架构之间的通信,促进新服务的更快集成和部署。软件开发程序也依赖 API 来提供服务、平台管理和持续部署。涉及移动设备、云

上海成立生成式人工智能质量检验检测中心(质检中心)

文章(新闻):生成式人工智能如何保障可靠可信?上海建立首家质检中心为AI产品“体检” 上海市生成式人工智能质量检验检测中心(质检中心) 两张人眼看上去一模一样的照片,机器人读取后为何会攻击其中一张图呢? 因为不正常的照片中被嵌入了特殊的噪声,人工智能产品读取了带有攻击性的信息。【想起了嵌水印】 同样

使用 Docker 自建一款怀旧游戏之 - 超级马里奥

1)超级马里奥 简介 《 超级马里奥 》(Super Mario)是任天堂公司创造的一款经典游戏系列,是世界上最知名、最成功的游戏之一。这个系列由日本设计师宫本茂于 1985 年创造,最初的游戏名为《超级马里奥兄弟》(Super Mario Bros.),推出后风靡全球。 2)在线部署 2.1)安装

带有可旋转摄像头的移动小车(urdf+rviz)

博客地址:https://www.cnblogs.com/zylyehuo/ 成果图 step1:新建工作空间 mkdir -p catkin_ws/src cd catkin_ws catkin_make step2:建立工作包 右键src,选择 Create Catkin Package 输入包

企业网络“卫生”实用指南(上)

企业安全文化从根本上说是基于良好的网络卫生(Cyber Hygiene)来建立和发展的,每个企业都必须根据自身实际情况来建立相应的网络卫生标准。企业可以实施许多基本的网络卫生控制措施,以此来降低网络攻击的可能性和影响。因此,网络卫生应该成为所有拥有数字处理环境的企业必备的常规程序,其实每个企业都需要