/bk-resource

bk_resource 是基于 Blueapps & Django Rest Framework,快速生成符合 12-factor 规范的 WEB SaaS 的脚本架

Primary LanguagePythonOtherNOASSERTION

logo.png

License Release Version PRs Welcome codecov Unittest Py3

(English Documents Available)

Overview

bk_resource 是一个基于 BlueappsDjango Rest Framework 的脚手架, 旨在帮助开发人员快速生成符合 12-factor 规范的 WEB SaaS,并在DDD开发实践中方便地创建可扩展的领域服务

Features

  • [Basic] 基于 Django 进行封装,生成标准 swagger API
  • [Basic] 基于 django-environ 适配环境变量与 .env 配置
  • [Basic] 支持基于 PEP-621 的全工具链 (mypy\isort\flake8\black) 配置方案
  • [Basic] 支持代码规范类工具整合:pre-commitcode-cc
  • [Resource] 集成 bk_resource 组织工程目录结构,通过 Resource 的方式声明业务逻辑
  • [Resource] 支持 ApiResource / BkApiResource 调用第三方 API 接口

Getting started

Installation

  1. 安装cruft
$ pip install cruft
  1. 通过cruft脚本架生成项目
$ cruft create https://github.com/TencentBlueKing/bk-resource.git --checkout main --directory template
  1. 添加远程仓库地址并完成推送
cd {{ project_id }}
git init
git add .
git commit -m "init repo"
git remote add origin {{ git_url }}
git push -u origin master

模板生命周期管理

检查或更新模板前需确保本地代码已提交到 GIT 仓库

  1. 检查模板是否更新
$ cruft check --checkout main
  1. 合并模板到本地项目
$ cruft update --checkout main

Usage

Domain Driven Design 开发实践

ddd

  • Api 交互层
    通过 UI Api 或者 Open Api 将服务暴露给用户,由对应的 Api 负责对应的业务逻辑串联。
  • Scene 场景层
    在通过 Api 访问后端时,实际访问的是由 Resource 暴露的一个场景服务,通过场景服务串联领域层的业务逻辑。
  • Domain 领域层
    领域层聚焦对应的细分模块,负责处理模块的具体业务逻辑,例如,在用户模块中,处理用户注册、登录、修改密码、重置密码等逻辑。
  • Model 模型层
    在 MVC 框架中 (如 Django),将代码架构划分为 Model (模型),View (视图),Controller (控制器) 三层,View 用于界面展示,在前后端分离开发部署的实践中,已经不再由后端处理,后端只需要处理 Model & Controller。

Roadmap

Support

BlueKing Community

  • BK-CMDB:蓝鲸配置平台(蓝鲸 CMDB)是一个面向资产及应用的企业级配置管理平台。
  • BK-CI:蓝鲸持续集成平台是一个开源的持续集成和持续交付系统,可以轻松将你的研发流程呈现到你面前。
  • BK-BCS:蓝鲸容器管理平台是以容器技术为基础,为微服务业务提供编排管理的基础服务平台。
  • BK-PaaS:蓝鲸 PaaS 平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。
  • BK-SOPS:标准运维(SOPS)是通过可视化的图形界面进行任务流程编排和执行的系统,是蓝鲸体系中一款轻量级的调度编排类 SaaS 产品。
  • BK-JOB 蓝鲸作业平台(Job)是一套运维脚本管理系统,具备海量任务并发处理能力。

Contributing

如果你有好的意见或建议,欢迎给我们提 Issues 或 Pull Requests,为蓝鲸开源社区贡献力量。
腾讯开源激励计划 鼓励开发者的参与和贡献,期待你的加入。

License

基于 MIT 协议, 详细请参考 LICENSE