AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

柔性接口的设计与实现 by ottocho@微信

发布者 pyconf   简介 PyChina 大会
发布于 1447288384885  浏览 5287 关键词 Python, DevOps 
分享到

第1页

柔性接口的设计与实现

微信CMDB

ottocho 2015.08.21



第2页

● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结



大纲



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第3页

● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结



CMDB



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第4页

CMDB

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第5页

百度给的定义: CMDB 配置管理数据库 Configuration Management Database CMDB 存储与管理企业IT架构中设备的各种 配置信息,它与所有服务支持和服务交付流

这些都是废话!程都紧密相联,支持这些流程的运转、发挥配

置信息的价值,同时依赖于相关流程保证数 据的准确性。在实际的项目中,CMDB 常常 被认为是构建其它 ITIL 流程的基础而优先考 虑,ITIL 项目的成败与是否成功建立 CMDB 有非常大的关系。

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



CMDB



第6页

CMDB Configuration Management Database

• 运营的工程管理角度 • 以管理对象为配置个体 • 统一归类、抽象、管理



CMDB



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第7页

我来举个栗子…



CMDB



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第8页

CMDB

• 模块、模块程序 • 以运营配置对象管理 • 存储在 CMDB • 与 CMDB 的交互 • 统一管理

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第9页

目标

如部署系统、新服务上线系统 与 CMDB 的配合,达成了系统间 合作、运营信息收集结合。

CMDB 支持这些流程的运转、发 挥配置信息的价值,同时依赖于相 关流程保证数据的准确性。



CMDB



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第10页

● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结



大纲



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第11页

设计要点 • 业务目标 • 配置粒度 • 维护方式 • 服务情况



设计要点



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第12页

● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结



大纲



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第13页

文档首页



成果展示

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第14页

文档目录



成果展示

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第15页

资源定义



成果展示

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第16页

所见即所得、简单快速接入



成果展示

/api/GetDevices? fields=id,system_name,inner_ip& where_inner_ip=10.20.30.40

cmdbclient.GetDevices( fields = ['id', 'system_name', 'inner_ip'], where = { 'inner_ip': '10.20.30.40' },

)

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第17页

信息详尽完备



成果展示

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第18页

● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结



大纲



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第19页

技术小结 • tornado • peewee • pypy • sphinx



设计实现



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第20页

设计实现

请求内容

client 请求: cmdbclient.GetDevices( fields = ['id', 'system_name', 'inner_ip'], where = { 'inner_ip': '10.20.30.40' }, )

HTTP 请求: /api/GetDevices? fields=id,system_name,inner_ip& where_inner_ip=10.20.30.40

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第21页

设计实现

格式化请求处理

HTTP param: fields=id,system_name,inner_ip&where_inner_ip=10.20.30.40

dict data: dict( fields = ['id', 'system_name', 'inner_ip'], where = { 'inner_ip': '10.20.30.40' }, )

Peewee Query: fields = (Device.id, System.name, Device.inner_ip) where = Device.inner_ip << ('10.20.30.40',) result = Device.select(*fields).where(where)

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第22页

设计实现

处理流程

# 从域列表获取到涉及到的 model related_models = get_related_models(model_fields) # 生成 query_obj query_obj = model_class.select(*model_fields) # 加上 where 的条件检索 query_obj = where_condition_query(query_obj, where_logic,

where, model_field_map) # 自动 join 表 query_obj = join_table(query_obj, related_models, addition_fields) # 返回结果 return fetch_query_result(query_obj, args)

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第23页

设计实现

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第24页

● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结



大纲



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第25页

维护

• 限制 • 规则 • 简单



经验总结



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第26页

业务价值

技术创造价值 业务体现价值



经验总结



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第27页

合作

• 对接 • 接口 ? • 服务 ?

• 文档 • wiki ? • html ? • blog ?



经验总结

以提高他人的效率 来提高自己的工作效率!



北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第28页

感谢大家

Q&A

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第29页

感谢大家

谢谢您

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第30页

联系方式

卓振杰 ottocho ottozhuo@tencent.com

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



第31页

北京/上海/广州 0xFF Life's pathetic, go Pythonic!



支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。