运维系统重构的设计思路

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

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

运维前后端分离的开发流程

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

业务重构,脚本管理,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()

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2018-07-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏服务端技术杂谈

扫盲贴-分布式数据一致性:两阶段提交,三阶段提交

分布式一致性 分布式系统中,为保证数据的高可用,通常将数据保留多个副本,这些副本放置在不同的物理机上。 什么是数据一致性 在数据有多副本的情况下,如果网络,服务...

67860
来自专栏Rainbond开源「容器云平台」

云帮每周更新日志(2017.01.02~2017.01.15)

18240
来自专栏纯洁的微笑

[高级]关于分布式事务、两阶段提交协议、三阶提交协议

在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等...

13030
来自专栏小狼的世界

PHP开源Apache日志分析工具收集与比较

我们知道已经有很多像Awtstat这样的使用perl、c或者c++开发的强大的日志分析工具,但是同样也有很多使用PHP开发并且开源的日志分析软件,今天我就收集了...

38420
来自专栏非著名程序员

如何用好 GitHub 中的 Watch、Star、Fork

在每个 github 项目的右上角,都有三个按钮,分别是 watch、star、fork,但是有些刚开始使用 github 的同学,可能对这三个按钮的使用却不怎...

401100
来自专栏企鹅号快讯

周集:好用的工具和网站

上次提到的软件下载的页面已经写完了,接下来就是往页面中丰富内容,我会放一些自己用过的比较好用的软件工具,下载地址,有官方网站的我会放上官方网站的地址,没有的话,...

23690
来自专栏Eternally运维

FinalShell – SSH终端,同屏SFTP,同步目录切换一体化服务器管理

简介 FinalShell是一体化的的服务器,网络管理软件,功能强大的开发,运维工具,充分满足开发,运维需求.

24710
来自专栏Rainbond开源「容器云平台」

技术解读Rainbond ServiceMesh微服务架构_开源PaaS Rainbond

服务发现和注册、弹性伸缩与负载均衡、容错处理(断路器与限流)、监控与报警、数据存储与共享、日志分析……

447110
来自专栏Keegan小钢

App架构设计经验谈:数据层的设计

一个App,从根本上来说,就是对数据的处理,包括数据从哪里来、数据如何组织、数据怎么展示,从职责上划分就是:数据管理、数据加工、数据展示。相对应的也就有了三层架...

14320
来自专栏微信小开发

整合微信小程序的Web API接口层的架构设计

来源:伍华聪 cnblogs.com/wuhuacong/p/7267333.html 例如:《C#开发微信门户及应用--微信各个项目模块的定义和相互关系》介绍...

442100

扫码关注云+社区

领取腾讯云代金券