TAP 系列文章4

2023-10-29

基于Backstage的开发者门户

随着云原生的理念和技术逐渐深入人心,很多企业都在思考和实践如何落地,实实在在地达成云原生所承诺的目标:使工程师能够轻松地对系统作出频繁和可预测的重大变更。

越来越多的企业认识到,以Kubernetes为代表的云原生技术确实可以作为构建企业自己的内部平台的基础底座,并且大大赋能运维团队,但同时也意识到Kubernetes对开发人员而言复杂度还是太高了,有陡峭的学习曲线。
能找到会用Kubernetes的开发人员可能不难,但能找到精通的人恐怕就不容易了。

那现在的开发者体验到底如何呢?设想一个新加入的开发人员,他经常会问:

  • 我们的技术标准和架构规范是什么?
  • 可以用哪些开发语言、框架、开源软件?什么版本?我们使用什么编码规范和代码风格?
  • 到哪儿能找到项目文档?还有架构图、拓扑图?
  • 有什么微服务API可以调用?
  • 有没有现成的项目模版可以重用?
  • 代码提交到哪儿?多长时间提交一次?测试覆盖率需要达到多少?
  • 怎么构建镜像?
  • 怎么触发流水线执行部署应用?
  • 到哪儿查看应用的遥测信息如运行日志、指标、分布式跟踪信息?
  • ……

运气好的话,上述问题都能找到对应的人给出对应的答案。之后呢?他们还需要申请多个系统的账号,分别打开多个工具的界面(如Wiki查看文档信息,Jira查看用户故事或缺陷,Jenkins查看流水线执行状态,Kubernetes查看应用负载运行状况等),熟悉各自的操作,不时的切换和copy & paste,人工串联起整个工作流程,费时费力,还容易出错。

麦肯锡公开的一份研究报告1指出:开发者效率高的公司比开发者效率低的公司的收入增长速度快4-5倍。它们的营业利润率也更高,创新能力更是高55倍!处于前四分位的公司的总股东回报率也高60%,营业利润率高20%。由此可见,开发者效率是企业塑造核心竞争力的关键因素之一。

那如何弥合这些开发体验上的差距?

我们来看Gartner关于开发者体验的报告2,其中推荐的关键实践包括:

  • 建立内部开发者门户,理顺软件开发流程,支持重用、分享和协作,以提升开发体验和效能
  • 通过开发者门户提供内置“安全护栏(Guardrail)”的自助服务,在快速敏捷交付迭代创新的同时,兼顾治理规范的要求
  • 把开发者门户作为产品,积极听取开发者的反馈,持续演进和创新,适应不断变化的需求

这份报告还大胆预测,到2025年75%的企业平台团队都将提供自助服务的开发者门户。理想的开发者门户提供一站式的服务,涵盖Day 0发现与构建、Day 1集成与部署、Day 2运维和改善三大部分:
在这里插入图片描述

这份报告把Backstage作为开发者门户的典型,而与这份报告不谋而合的是,在VMWare新推出的现代化应用平台Tanzu Application Platform (TAP)中就包含了开发者门户TAP GUI,正是基于Backstage进行构建和扩展的。VMWare也是Backstage社区的活跃的贡献者,提供企业级的商业支持。

Backstage简介

Backstage起源于音乐流媒体巨头Spotify,它的Vision正是”Kubernetes for Developer Experience”.
在这里插入图片描述

Backstage大致的发展时间线如下:

  • 2016年发起的内部项目,用于构建Spotify内部开发者门户,Spotify的开发人员的上手时间比以前减少了55%,在内部得到广泛使用
  • 2020年3月的“黑客周”,正式开源
  • 2020年9月贡献给CNCF进入沙箱阶段
  • 2022年3月从沙箱进入正式孵化阶段
  • 2022年3月17日正式GA,发布了1.0版本。
    目前有100多个知名公司与机构公开采用,包括Netflix,Expedia,Splunk,美国航空、VMWare等。

Backstage提供了统一的UI体验和可扩展的核心框架。在此基础上主要包括:

  • Software Catalog: 软件目录,统一管理软件系统的各个组件
  • Software Templates: 软件模版,快速创建项目和脚手架(Scaffolding),确保符合技术标准和规范
  • TechDocs: 技术文档,统一发布,查找和使用技术文档(Markdown格式)
  • Kubernetes: 运行在Kubernetes上的资源如Deployment, Pod等的可见性
  • Search: 搜索软件目录和技术文档,基于Lunr、ElasticSearch或Postgres等
    在这里插入图片描述

Backstage的系统模型

Backstage的Software Catalog定义了一套描述软件系统的模型
在这里插入图片描述

主要类型包括:

  • Domain: 某个业务领域,如电商
  • System:组成Domain的各个应用系统,如商品目录、购物车、订单等系统
  • Component:系统中的组件,如订单前台页面SPA,订单微服务组成了订单系统
  • Resource:系统中的资源,如订单数据库、订单执行的消息中间件等
  • API:组件既可以发布API(符合OpenAPI、AsyncAPI、GraphSQL等)供使用方调用,可以使用其它组件提供的API,如订单微服务组件发布订单API供前台页面调用

每个项目需要提供描述自己的元数据(catalog-info.yaml),与源代码一起保存在版本控制系统,如Git里面。元数据主要包括

  • 所属的种类(domain/system/component/resource等)
  • 名字、描述
  • 标签、注解
  • 类型(service/website/library)
  • 所属的system/component
  • 负责的团队(group/user)
  • 服务的生命周期(production/experimental/deprecated)
  • 依赖项(component/resource)
  • 提供的API、使用的API等

在这里插入图片描述

完整的配置项参见:https://backstage.io/docs/features/software-catalog/descriptor-format

Backstage的生态系统

Backstage可以无缝集成主流的源代码管理系统如Github, GitLab,AWS S3等,并支持使用第三方认证包括Github, GitLab, Okta, Auth0, Atlassian等。

Backstage开源社区很活跃,生态系统(https://backstage.io/plugins )中有大约60个现成的插件,覆盖软件开发生命周期,可以大致分类为如下:

  • 敏捷管理: Jira
  • 源代码管理:Github Pull Requests, Github Insights
  • 质量:SonarQube, FOSSA, Google Lighthouse,
  • 发现:API Docs, Harbor, Home, Tech Radar, TODO, Cost Insights
  • CI/CD:Argo CD, Azure Pipelines, Circle CI,Github Actions,Gitlab, Jenkins, Travis CI
  • 监控:Datadog,Grafana,Kafka,New Relic,PagerDuty,Prometheus
  • 安全:Snyk,Security Insights
  • Infrastructure: AWS CloudFormation, AWS Lambda
    可以看到,插件已经初步完备,并且还在持续增加和丰富中,相信大部分企业典型的需求都可以得到满足。即使目前还未完全满足,企业也可以而且应该开发自己的插件,并贡献回社区,这样的社区生态才会越来越好!

TAP的扩展

TAP除了包含Backstage核心组件外,还基于Backstage的灵活的插件架构,额外开发了如下组件:
在这里插入图片描述

  • Workload Visibility: 应用部署后的动态视图,包括资源树上的各层对象如Knative Service, Kubernetes Deployment, ReplicaSet, Pods等的详细信息,通过Knative Route可以一键访问应用
    在这里插入图片描述

  • App Live View: 基于Spring Boot应用的Actuator机制,图形化的展示应用的健康状态,以及CPU/Memory的实时监控,最近的HTTP请求的详情,动态调整日志级别等
    在这里插入图片描述

  • App Accelerator: 事先定义好的项目模版,开放给开发团队选用,自动生成项目的整体目录结构及基本配置文件,满足企业技术标准和架构规范,方便项目组快速上手

在这里插入图片描述

  • Supply Chain Visibility: 图形化展示供应链的执行路径及状态,可进一步查看每个步骤的执行细节

在这里插入图片描述

总结与展望

构建开发者门户是一个持续的工作,不是一个一次性的交钥匙工程,不是说安装好了Backstage和TAP之后就万事俱备了。在这个基础上,还需要适应企业特定的需求和集成现有的工具,不断的改善现有的开发体验。

同时,TAP也是一个比较新的产品,还在持续的迭代和发展中。在近期的路线图上,TAP开发者门户正在开发和集成的还有

  • API Portal: 符合OpenAPI标准的服务API都可以发布到API门户,方便服务的发现和重用,还可以调用API查看实际的请求和结果
  • Learning Center: 学习中心提供教程和动手实验环境,让开发人员尽快上手!
  • 供应链执行过程的更多信息:如构建、扫描结果等
  • ……

以上初步介绍了TAP所提供的开发者门户以及Backstage的基本情况,如果您对TAP和其中的组件感兴趣,我们会在后续的系列文章中进一步介绍,敬请关注与期待!如果您有任何反馈,也请联系我们!

参考
1: Mckinsey, Developer Velocity: How software excellence fuels business performance: https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/developer-velocity-how-software-excellence-fuels-business-performance
2: Gartner,Innovation Insight for Internal Developer Portals https://tanzu.vmware.com/content/analyst-reports/innovation-insight-for-internal-developer-portals

作者:罗治年
在这里插入图片描述
罗治年是VMWare大中华区应用现代化部门的资深云原生应用架构师,有近20年的软件研发和架构设计经验,曾先后就职于埃森哲、毕博管理咨询、迪士尼、Pivotal等公司,长期从事企业IT规划,企业级系统架构设计,及系统研发和实施管理等工作。近期主要专注于采用敏捷开发方法实现微服务云原生应用的设计和开发,对传统应用实现现代化并实现云上迁移拥有丰富的实战经验,并获得诸多技术认证,包括:Spring Professional, Kubernetes 管理员 (CKA) 、AWS Professional、DevOps Professional和Cloud Foundry 专家等。

来源|公众号:VMwareTanzu云原生

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TAP 系列文章4 的相关文章

  • ES配置与使用

    一 单机版安装 地址 www elastic co 下载tar格式 或者复制链接 wget url下载 启动 bin elasticsearch 二 插件 解决页面问题 GitHub下载 elasticsearch head 需要node环

随机推荐

  • RISC-V新进展!deepin 成功适配VisionFive 2

    RISC V指令集是基于精简指令集计算 RISC 原理建立的开放指令集架构 ISA RISC V则是在指令集不断发展和成熟的基础上建立的全新指令 RISC V指令集完全开源 设计简单 拥有模块化的设计 完整的工具链 易于移植Unix系统 以
  • WebService+Rxjava

    最近公司有了个新项目 是之前有个项目需要迭代 由于这个项目比较老 所以用的是WebService的接口 我之前都是写的是restful的接口 没有接触过WebServiece 看到之前的代码我也有点闷逼 于是就花了几天去研究了下WebSer
  • 补码乘法,补码乘法计算详细解说

    1 补码与真值得转换公式 补码乘法因符号位参与运算 可以完成补码数的 直接 乘法 而不需要求补级 这种直接的方法排除了较慢的对2求补操作 因而大大加速了乘法过程 首先说明与直接的补码乘法相联系数学特征 对于计算补码数的数值来说 一种较好的表
  • CMake 学习笔记(子目录 续)

    这篇博客接着上篇 我们的目录结构和上一个例子完全相同 CMakeLists txt MathFunctions CMakeLists txt MathFunctions cxx MathFunctions h mysqrt cxx mysq
  • STM32的Bootloader实现和遇到的情况

    目录 0 概述 1 keil设置 2 IAP跳转函数 3 APP重定向中断向量表 3 1 标准库 3 2 HAL库 4 一些小问题 4 1 从IAP跳转到APP后运行异常 4 2 没有SCB gt VTOR设置中断向量表 0 概述 实际中通
  • opencv---曲线断点检测(八邻域断点检测)

    前言 该方法适用于激光照射的背景图像 没有交叉 仅限一条曲线断裂检测 原始图像 原始图像越干净 简单 检测效果越好 原始图像越干净 简单 检测效果越好 原始图像越干净 简单 检测效果越好 原始图像越干净 简单 检测效果越好 预处理 很重要
  • Java怎么设置代理ip

    在Java中设置代理IP可以通过使用Java系统属性来实现 具体步骤如下 1 设置代理地址和端口号 System setProperty https proxyHost 代理地址 System setProperty https proxy
  • vue3-vite使用lib-flexible(amfe-flexible)总结

    创建完vue3项目也安装了flexible插件页面就是不转化rem 搞了好久才发现还要另外配置文件 记录一下 安装插件 安装postcss pxtorem npm install postcss pxtorem save dev 安装lib
  • Arduino ESP32和ESP8266开发板安装教程

    视频教程链接 https www bilibili com video BV1dT411G7XX 1 安装第三方Arduino Package 下面以安装ESP32和ESP8266为示例 方式1 在线安装 第1步 打开ArduinoIDE
  • window配置weex项目的android studio环境

    weex 虽然做的是前端的工作但是越往后面觉的如果不会一门移动端的框架是多么的无力 于是就开始了之前非常看好的weex框架 该框架起初是由阿里巴巴内部开源的 后面移交给apache成长历程可谓是一波三折 和react native比起来有些
  • 第十二届蓝桥杯省赛B组(C/C++)试题G砝码称重

    题目 原题链接 问题描述 有一架天平和 n 1 n 100 n 1 leq n l
  • 数据结构 每日一练:编程

    先来个简单的练练手吧 欢迎大佬们交流探讨 给出一个有序的整数数组 A 和有序的整数数组 B 请将数组 B 合并到数组 A 中 变成一个有序的升序数组 数据范围 m n属于 0 100 注意 1 保证 A 数组有足够的空间存放 B 数组的元素
  • LeetCode 42. 接雨水

    题目链接 42 接雨水 思路分析 与程序员面试金典 面试题 17 21 直方图的水量相同 class Solution public int trap vector
  • js中字符串常用方法

    1 concat 用于将一个或多个字符串拼接成一个新字符串 不改变原字符串 返回结果为新字符串 2 slice 提取某个字符串的一部分 并返回一个新的字符串 且不改变原字符串 只有一个参数时 取值范围为指定位置到字符串结尾 两个参数时取头不
  • Transformers学习笔记4

    Tokenizer nlp任务的输入都是raw text model的输入需要是inputs id 所以tokenzier将句子转换成inputs id 怎么转换呢 有3种方式 word based split the text 按照空格来
  • Linux网络性能评估工具iperf 、CHARIOT测试网络吞吐量

    目录 一 Iperf能做什么 1 TCP方面 2 UDP方面 二 Iperf的安装与使用 1 安装iperf 2 iperf参数介绍 三 Iperf应用实例 1 测试TCP吞吐量 2 测试UDP丢包和延迟 四 利用IXCHARIOT进行网络
  • 大规模线性方程组求解

    常将线性方程组表示为 A x b A为已知N N的矩阵 通常称为刚度矩阵 刚度是力学中的概念 电磁 热等也习惯性这么称呼 b为已知向量 x为待求向量 解线性方程组的操作基本围绕矩阵A展开 首先介绍一些相关术语 1 矩阵条件数 条件数是一个表
  • json.dump(json_obj, f, ensure_ascii=False),报错UnicodeEncodeError: ‘gbk‘ codec can‘t encode character

    python报错json文件时报错 json dump json obj f ensure ascii False 报错UnicodeEncodeError gbk codec can t encode character 这个错误是因为在
  • transition-group过渡动画

    安装lodash库 cnpm install lodash S 安装lodash type cnpm install types lodash D
  • TAP 系列文章4

    基于Backstage的开发者门户 随着云原生的理念和技术逐渐深入人心 很多企业都在思考和实践如何落地 实实在在地达成云原生所承诺的目标 使工程师能够轻松地对系统作出频繁和可预测的重大变更 越来越多的企业认识到 以Kubernetes为代表