关于我

个人信息

教育背景

2011.09-2015.07 东华理工大学
主修课程: C, C++, JAVA等语言学习, 数据结构与算法, 计算机组成原理, 网络通信, 操作系统原理, 算法导论(自学), Unix环境高级编程(自学), HTTP权威指南(自学), TCP/IP详解 卷1:协议(自学)

掌握技能

  • 精通python django开发
  • 熟悉golang语言
  • 熟悉VUE前端框架
  • 熟悉数据库增删改查等操作

工作经历

2017.03-今   小赢科技   运维开发工程师

  • 负责公司监控平台的开发
  • 负责测试环境管理系统开发
  • 参与公司包发布系统开发

2015.10-2016.12   金蝶子公司管易云计算   运维开发工程师

  • 参与公司CMDB平台的搭建,收集公司资产数据
  • 结合jenkins等开源工具,推进公司代码发布自动化

2014.05-2015.10   魔线科技(深圳)有限公司   运维工程师

  • 负责公司生产环境, 测试环境, 开发环境的搭建以及日常维护
  • 负责公司代码发布上线及日志收集
  • 负责公司监控平台(zabbix)的搭建

项目经验

2017.08-2019.04   负责监控平台开发

项目背景

公司运维使用小米开源监控系统open-falcon搭建了一个简易的监控系统,但使用效果很一般,大致痛点如下:

  • open-falcon 默认使用RRD文件存储,对历史数据将会丢失精度
  • web界面太难用,对数据查询不友好
  • 无法对接公司定制化的各项需求

公司需求

基于open-falcon不能满足的痛点,公司需求对open-falcon项目改造,需求定制大致如下:

  • 历史数据精度不能丢失,需要支持当前数据和历史数据对比
  • 重写前端web界面
  • 接入公司现有的用户管理系统
  • 打通公司CMDB与监控平台数据,基于公司服务树配置告警模板
  • 支持公司业务监控定制
  • 支持告警屏蔽功能及修改告警方式

项目详情

基于公司需求,对open-falcon项目进行改造,项目进度步骤如下:

  1. 学习golang语言,阅读open-falcon源码
  2. 修改open-falcon源码(hbs, nodata等组件),支持公司服务树配置告警模板
  3. 修改alarm组件源码,支持告警屏蔽功能,目前能支持短信,企业微信,邮件,电话四种类型告警
  4. 学习前端框架VUE,基于VUE开发新的WEB界面
  5. 修改open-falcon源码,将后端存储更改为influxdb时序数据库
  6. 支持公司业务监控定制(修改agent源码,支持大并发量的业务数据上报) 注: 同事实现
  7. 设计influxdb-cluster集群方案,支持influxdb集群配置(基于开源项目修改)

项目效果

2017年11月上线第一版本,在运维部内部使用
2018年4月重构前端WEB,支持业务监控上线,针对业务监控开发独立的数据展示模块,向公司业务推广监控接入
2019年3月上线influxdb集群方案,解决influxdb单节点海量数据查询效率低问题

项目上线后,基本满足公司的监控需求,推广至业务监控接入,受到一致好评。

项目反思

项目实施过程中,学习到了很多新技术,包括golang语言学习入门、前端框架VUE的学习使用。也踩过很多坑,前期对influxdb的不熟悉,设计数据结构不合理,导致数据查询效率低下,后重新设计数据结构,并设计influxdb-cluster集群方案解决该问题。

2018.01-今   负责测试环境管理系统开发

项目背景

公司之前测试环境很混乱,开发和测试共用环境。多个需求测试时,经常因为版本冲突的问题耗费大量时间排查,测试环境和线上环境差距过大,可能造成在测试环境正常测试的服务上线后导致BUG。但测试搭建新的测试环境非常耗时,申请一个测试环境,可能需要大半个月时间才能投入使用,维护成本非常高。

公司需求

在这种背景下,测试主管急需一个系统能够满足如下功能:

  1. 快速搭建新测试环境
  2. 测试环境完全独立
  3. 能够管理多个测试环境
  4. 对各个测试环境建立完善的权限管理以及操作日志收集
  5. 支持测试过程中的各种环境需求

项目详情

本项目的诞生目的是提升测试的测试效率,减少人工维护成本,快速搭建测试环境,以及实现对各测试环境的管理。项目建设步骤如下:

  1. 使用docker技术,减少环境差异带来的问题,打通包发布系统到镜像构建的逻辑,创建镜像仓库
  2. 使用docker compose工具实现容器的配置及编排
  3. hack docker compose源码,将yaml文件的容器配置改成json配置放在数据库中存储
  4. 重写docker compose中的一些方法,提升容器批量操作效率,并解决使用docker compose过程中容器假死的问题
  5. 调用docker 接口实现容器状态检测及对容器执行操作
  6. 实现数据库表结构同步及数据库表数据同步功能
  7. 对接测试需求实现各种测试环境工具

项目效果

项目上线后,部署新测试环境从原先的半个多月到现在缩短为2小时以内,大大提升测试环境部署效率。目前管理了7-8套测试环境,各环境之间相互独立,可同时在多个环境中测试不同需求,不必担心版本冲突问题。各环境操作都有相应的操作记录,可以快速定位问题。提供各种测试工具,协助测试管理测试环境。项目上线后,测试效率得到很大提升。

项目反思

项目实施过程中,学习了docker的日常使用功能,了解docker工作原理,并初步理解容器编排的思想。对CI/CD有了更深入的了解。但该系统也存在不足之处,比如部署测试环境时间还是需要2小时,这个原因是从仓库拉取镜像耗时太长,几百个镜像的拉取耗费时间常常需要一个多小时,针对这个情况,未来优化方向是尝试使用阿里云开源的Dragonfly实现镜像p2p分发,提升镜像下载效率。下一步考虑将容器编排从docker compose改为k8s,为线上实现容器化积累经验。

2018.01-2019.03   参与包发布系统开发

项目背景

公司的包发布系统基于git创建版本管理系统,承担CD的角色,实现版本发布。在这个过程中,需求本人配合同事对版本发布系统进行维护,添加一些功能,使版本发布平台功能更加完善。

项目详情

在维护版本管理系统过程中,参与开发的大功能如下:

  1. 给包发布系统新增CI功能,通过配合jenkins,打通代码提交到构建,到包发布系统过程的自动化
  2. 新增发布单管理子系统,基于发布单角度实现对包批量管理,测试发布。
  3. 新增服务批量重启功能,支撑业务开发使用包发布系统快速批量重启服务。

项目效果

维护项目过程中,与同事一起提升系统效率,使CI/CD简单化,支撑公司业务快速迭代,收到了不错的效果。

项目反思

由于包发布系统建立时间比较早,前端使用anjular框架+jquery,历史包袱太重,在该框架下开发新功能效率较低,未来将基于gitlab ci + docker + k8s 实现一套新的CI/CD逻辑,用来替代现有发布系统功能。

自我评价

深度互联网从业人员,对互联网保持高度的敏感性和关注度,熟悉产品开发流程,有较强的产品规划、需求分析、交互设计能力,能独立承担WEB项目的开发工作,善于沟通,具有良好的团队意识。

0%