运维系统重构的设计思路
最近要对已有的运维平台做重构工作,为什么要做重构,主要还是因为各种各样的原因,需要对已有的问题改进,修复历史遗留包袱。这个时间迟早都会来到,还不如自己自觉一点,提前发现问题,提前修复。
整个重构的核心思路就是对已有的平台做前后端分离,方向主要是对已有的后端设计做改进。
如果把重构比作一桌子菜,那么重构需要做的具体的事情,我分为了几类:
业务重构,脚本管理,API管理,通用日志管理。整个过程预计持续一周,然后我也准备要低调一些,专心做专业范围的事情,同时负责MySQL的审核项目跟进,如果你也在做这方面的,或者感兴趣,欢迎留言交流。
下班前先出了一个基本版本,后续就会把自己吹的牛都一一补全。
业务重构
l 对已有逻辑的梳理
l 去除已有项目中的冗余设计
l 多数据源的支持,设计DAO层
l 对于项目中的SQL语句调用,统一使用DAO层来对接
前后端分离的设计和改进
l 前后端开发流程
l 前端技术部分改进
脚本管理
l 实现脚本信息的可配置化管理
l 实现脚本的信息查看
l 脚本类别和信息的管理
l 脚本信息提交后由脚本管理员审批
l 脚本审核后可以统一发送通知邮件
API管理
l 能够实现平台项目中的API信息管理
l 对于API的调用方法进行统一管理 GET, POST, PUT, DELETE
l 对API的调用信息进行日志记录
l 对于部分业务的API调用,在view层可以做到配置化,需要结合urls.py
l 实现初步的页面流转服务化,页面流转通过配置来完成
l 完善API的认证接口,可以支持多种认证模式,目前支持三类,无认证,Token认证和BASIC认证。
l URL和API的权限管理结合
通用日志管理
l 设计通用日志模块
l 对日志信息统可以一规范设计
l 需要统一的日志配置
设计审计日志和操作明细记录
定义明细信息的解析方式,在日志中统一配置解析格式
暂定义统一的日志记录表,后期根据数据量来做调整
def get_logger(logger_name,log_level=None):
if log_level == None:
log_level = logging.INFO
logging.basicConfig(level=log_level, format='%(asctime)s %(levelname)s %(name)s: %(message)s')
logger = logging.getLogger(logger_name)
return logger
def create_loggger(request,client_ip=None,status=None):
username = request.user
url = request.path
if url[-1] == "/":
url = url[:-1]
request_type = str(request.method).lower()
request_params = json.dumps(request.GET)
request_data = json.dumps(request.data)
ops_detail_Log = Ops_detail_Log()
ops_detail_Log.username = username
ops_detail_Log.client_ip = client_ip
ops_detail_Log.url = url
ops_detail_Log.request_type = request_type
ops_detail_Log.request_params = request_params
ops_detail_Log.request_data = request_data
ops_detail_Log.Status = status
ops_detail_Log.save()