yabo2021最新版平台工程实践(Backstage 篇)
日期:2023-06-09
yabo2021最新版一体化团队负责yabo2021最新版内部运营管理平台的开发维护。十年来,yabo2021最新版内部的业务系统经历了单体到分布式、本地机房到公有云再到私有云的变化。
2022年,在yabo2021最新版云原生团队的支持下,yabo2021最新版一体化团队将所有的核心业务系统迁移到 Kubernetes平台,采用了大量云原生的方法。CI/CD 、 Kubernetes 大大提高了开发人员的工作效率,但仍有问题:
1. 新人入职后难以快速理解系统架构和运行情况。
2. 发生问题时需要在 GitLab 、 Jenkins 和 Kubernetes 等平台之间切换确定问题。
3. 新增应用时需云原生团队完成 CI/CD 和部署配置。
我们认为开发者平台可解决上述问题。经研究,yabo2021最新版一体化团队选择 Backstage 作为平台。几个月后,基于 Backstage 的开发者平台上线,具备以下功能。
• 服务目录
我们有哪些服务?应该怎么访问?每个开发者可能都有这样一个门户,所以我们首先完成的就是服务目录:
通过服务目录,我们可以看到组件(Component)的详细信息,包括:
1. 组件的作用、背景、注意事项等基本信息
2. 组件和组件之间的关系
3. Git 仓库情况及简单操作
4. 相关 Jenkins Job 的信息
5. 服务相关 Kubernetes Pod 的运行情况
6. 外部文档及其它相关链接
7. 其它有用的信息
• 接口(API)
通过接口界面,可以清晰的了解:
1. 接口数量及详细介绍。
2. 提供此接口的组件。
• 组件关系(Relations)
通过预览组件关系图形化界面,可以清晰的获取:
1. 组件归属的系统和组。
2. 组件和组件之间的关系。
• CI/CD
通过 CI/CD 界面,可以看到 Jenkins 构建的结果,如果有异常,可以尝试直接点击重新构建:
• Harbor 界面
通过 Harbor 界面,可以看可用的镜像信息,以及安全扫描的结果:
• Kubernetes 界面
通过 Kubernetes 界面,可以看到组件对应的 Kubernetes 资源的状态:
• 模板(Template)
在没有模板功能之前。一体化团队要新创建一个组件,需要有云原生团队的同事执行:
1. 在 Gitlab 内创建一个仓库
2. 请求运维工程师帮助创建镜像、Jenkins Job 、Chart 配置
3. 完成后还需要联调,确保整个过程没有问题
平台上线后,只需要登陆 Backstage 填写模板表单,提供整个过程所需的必要信息,包括名称、类型、仓库名称等,然后点击提交,应用所需的 Git 仓库、Jenkins Job、和 Chart 配置都已经创建完成:
开发工程师直接从 Git 仓库下载代码,提交,即可在 Backstage 上看到发生了构建,并部署到了 Kubernetes 上。
另外,模板创建的组件也会直接添加到前一章所说的服务目录中。
• 与 KubeVela 的集成
KubeVela 是面向应用的应用交付系统,通过定义一系列的应用抽象,来声明式的完成应用部署、交付和管理,并且提供了一个开放的平台给开发者来接入定义好的应用。新开发的应用通过 KubeVela 来交付,可以大大简化步骤。对于遗留系统,可能通过 Backstage 集成会更加直接。通过Backstage 的 KubeVela 插件,我们可以将 KubeVela 的应用纳入到 Backstage 的统一视图:
通过 KubeVela 和 Backstage ,我们将新应用与遗留应用在同一个视图里展现了出来。
• 问题
Backstage 的插件很多,用起来还比较方便,但是不同于 Jenkins 这类产品,想要用好 Backstage ,需要对前端开发有比较深的认识。幸好我们团队的前端工程师迅速掌握了 Backstage ,这才让我们的采用过程比较顺利,这可能成为其他团队采用 Backstage 的障碍。
还有一个问题,Backstage 的界面可能还不够紧凑,一个页面显示的信息不够多,很需要一个更紧凑的服务页面。
• 未来的规划
在初步部署和使用之后,yabo2021最新版一体化团队计划在未来对此平台增加更多的功能:
1. 可以增加更多的仪表盘,展示研发过程的健康指标。
2. 集成 Signoz 等其他可观测工具,实现更方便的可观测性。
3. 结合 IaC 实践,实现通过平台管理数据库。
4. 增加安全审计功能,集成研发办公审批流程。
• 联系我们
如果对 Backstage 有任何想法,可与我们取得联系。