1.项目目录规范 mk_pyproject工具创建 统一项目目录
├── README.md 项目文档 项目做什么的?大致的设计及设计图
├── bin shell脚本
├── config 项目配置文件(json结尾)
├── docs/images 项目里一些doc文件 便于其他人查看
├── log 日志目录
├── logstreaming
│ ├── __init__.py
│ ├── 模块A
│ │ └── __init__.py
│ ├── 模块B
│ │ └── __init__.py
│ └── 模块C
│ └── __init__.py
├── main.py 入口main函数
├── requirements.txt 依赖包-版本号├── test 测试脚本
2.配置中心
2.1 考虑程序共用配置文件 prod.json/dev.json/test.json 放到服务器公有目录
2.2 配置文件统一格式使用json配置文件,便于统一维护管理。
2.3 禁止代码里出现密码/token明文,以免代码误提交到github或者gitlab泄露,配置文件里使用环境变量
dev.json
{
"mysql":{
"host":"$DEV_MYSQL_HOST",
"user":"$DEV_MYSQL_USER",
"password":"$DEV_MYSQL_PASSWORD"
}
}
test.json
{
"mysql":{
"host":"$TEST_MYSQL_HOST",
"user":"$TEST_MYSQL_USER",
"password":"$TEST_MYSQL_PASSWORD"
}
}
prod.json
{
"mysql":{
"host":"$PROD_MYSQL_HOST",
"user":"$PROD_MYSQL_USER",
"password":"$PROD_MYSQL_PASSWORD"
}
}
3.程序设计
3.1 问题
3.1.1 目前许多项目各自带一套配置文件,历史原因不便于维护
3.1.2 重复代码封装成包,数据库中间件的使用 已开发出一套公用模块,新老项目改造问题普及率不高,可review代码 可用的话后续各个中间件使用统一模块 这样即使有bug,基础模块升级一下即可,避免出现昨天消费mq-eval函数的出bug改许多地方,消息中间件序列化/反序列化 应是同一个包的2个方法
设计常用工具开发,提高开发效率 避免重复逻辑开发。比如自动生成shell工具,目前ds调度配置的是shell,当发版的时候是否可以配置到jenkins里面 调用python3 bin/gen_shell.py 自动生成本项目的启动脚本
3.2 灵活性
3.2.1 支持命令行传参 考虑我们有时候会一套代码同一台机器运行在不同环境 最好支持命令行传入 便于拓展
--config_path 配置文件路径 比如配置中心的 data/config
--env 运行环境 dev/test/pre/prod
--is_used_env 是否使用环境变量
公用基础模块对json配置文件解析已封装了解析类,可以很方便的使用
4.任务管理 Q3
4.1 全局任务表,目前开发任务分散 没有全局的任务管理概念 离线任务/api服务/常驻消费进程
4.2 程序日志 建议使用统一log目录 格式启动时间、运行时间、运行时长、运行状态 便于日志收集
4.3 全任务每天固定时间扫描 任务表状态(可由日志文件正则匹配到) 服务类查看进程是否存在
4.4 代码扫描 特别是封禁的账号的扫描是否还在占用(邮箱通知bug,收件人邮箱已删除 代码未更新 造成脚本运行失败)
5.开发规范
5.1 管理工具:统一使用git管理
5.2 程序error报警机制。因任务健康度检查并非是每时每刻都执行 最好是程序有错误自动报警
5.3 log日志。按任务名_日期或者日期_任务名生成日志 便于查找定位 避免一直往同一log文件写,文件太大,查找定位很慢
5.4文档。需求文档 README.md 工欲善其事,必先利其器。文档,设计方案决定着代码设计
5.5 代码分支。master/test/dev/feature 分支
目前我们dev和test是共用一套环境,这几个分支 逻辑上便于区分
1. 首先dev分支本地开发调试通过,切换到test分支 合并代码 git merge dev
2. review code
3.测试环境部署
3.1 与后端交互的测试同学通过后合并代码到master;未通过或者有bug dev分支修复后发布到test
3.2 与后端无交互,自测通过合并代码到master;未通过或者有bug dev分支修复后发布到test
4.切换到master git merge test5.6 部署 统一走jenkins 统一部署到服务器 data/www/
测试 git项目名_test 作为项目名 拉取git test分支 部署到测试机器
生产 git项目名 作为项目名 拉取git master分支 部署到生产机器5.7 bug修复
5.7.1 bug不可避免,出现bug时需评估影响,快速定位到问题,记录到bug汇总日志,以后避免类似的情况再出现
5.7.2 之前有bug时 创建feature_日期_bug分支合并到test后无问题可删除该分支
6.任务开发进度
6.1 任务有截止时间点 需求不明确的待定
6.2 周一计划本周内的排期 完成不了的周会向大家说明,还是要有时间观念+目标驱动




