运维系统重构的设计思路

最近要对已有的运维平台做重构工作,为什么要做重构,主要还是因为各种各样的原因,需要对已有的问题改进,修复历史遗留包袱。这个时间迟早都会来到,还不如自己自觉一点,提前发现问题,提前修复。

整个重构的核心思路就是对已有的平台做前后端分离,方向主要是对已有的后端设计做改进。


运维系统重构的设计思路

如果把重构比作一桌子菜,那么重构需要做的具体的事情,我分为了几类:

业务重构,脚本管理,API管理,通用日志管理。整个过程预计持续一周,然后我也准备要低调一些,专心做专业范围的事情,同时负责MySQL的审核项目跟进,如果你也在做这方面的,或者感兴趣,欢迎留言交流。

下班前先出了一个基本版本,后续就会把自己吹的牛都一一补全。


业务重构

对已有逻辑的梳理

去除已有项目中的冗余设计

多数据源的支持,设计DAO

对于项目中的SQL语句调用,统一使用DAO层来对接



前后端分离的设计和改进

前后端开发流程

前端技术部分改进


脚本管理

实现脚本信息的可配置化管理

实现脚本的信息查看

脚本类别和信息的管理

脚本信息提交后由脚本管理员审批

脚本审核后可以统一发送通知邮件


运维系统重构的设计思路


API管理

能够实现平台项目中的API信息管理

对于API的调用方法进行统一管理 GET, POST, PUT, DELETE

API的调用信息进行日志记录

对于部分业务的API调用,在view层可以做到配置化,需要结合urls.py

实现初步的页面流转服务化,页面流转通过配置来完成

完善API的认证接口,可以支持多种认证模式,目前支持三类,无认证,Token认证和BASIC认证。

URLAPI的权限管理结合



运维系统重构的设计思路


通用日志管理

设计通用日志模块

对日志信息统可以一规范设计

需要统一的日志配置

设计审计日志和操作明细记录

定义明细信息的解析方式,在日志中统一配置解析格式

暂定义统一的日志记录表,后期根据数据量来做调整

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()