DevOps-流程说明
什么是DevOps?
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
架构图
组件清单
ServiceDesk
Atlassian公司旗下的服务台软件,主要作用为接收各类开发/应用需求。
JIRA
JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
Git
一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。去中心化代码托管服务,用于托管代码/配置文件/需要跟踪的文件等,常见有BitBucket/Gitlab等。
Jenkins
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成,主要用于自动化代码编译/打包/发布等操作。
Sonar
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,通过插件形式,可以支持包括java/C#/C/C++/PL/SQL/Cobol/JavaScrip/Groovy等等二十几种编程语言的代码质量管理与检测代码质量管理平台,主要用于代码质量测试,评估代码漏洞等。
Nexus
私有远程仓库/工件仓库,主要用于托管代码编译结果和代理公共库进行加速下载等功能。
Ansible
RedHat公司推出的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能,主要用于自动化部署代码产出结果。
Python Scripts
自开发Python脚本,主要用于辅助Jenkins进行流程自动化或控制AWS相关功能服务等。
ELK/Splunk
Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。主要用于开发产出结果异常跟踪,问题检查,任务排查等功能。
Zabbix
一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。主要用于对云上/线下数据中心的虚拟机/物理机的监控,以及时发出告警,避免出现故障。
Grafana
Grafana 允许您查询、可视化、提醒和了解您的指标,无论它们存储在哪里。与您的团队创建、探索和共享仪表板,并培养数据驱动的文化。可视化监控工具,可将日志/Zabbix等信息实现图表化展示功能,常用于分析业务负载等。
Prometheus
一套开源的系统监控和报警框架,灵感源自Google的Borgmon监控系统。主要用于业务日志数据监控/告警等。
Kubernetes Cluster
用于自动部署,扩展和管理容器化应用程序的开源系统。 它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。主要用于部署业务系统。
AWS/Huawei Cloud
亚马逊提供的专业云计算服务,于2006年推出,以Web服务的形式向企业提供IT基础设施服务,通常称为云计算。其主要优势之一是能够以根据业务发展来扩展的较低可变成本来替代前期资本基础设施费用。
华为云是华为的云服务品牌,将华为30多年在ICT领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,赋能应用、使能数据、做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。
Confluence
Confluence是Atlassian公司出品的一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。
工作流图
工作流说明:
- 用户提出需求到ServiceDesk工作台
- 工作台通知审核负责人对需求进行审批
- 审批通过后由业务负责人/项目经理创建JIRA项目, 对需求任务进行全称跟踪
- 对需求进行分解, 并发布至开发者
- 开发者将代码发布至BitBucket/Gitlab
- Jenkins收到Push的Hook后触发拉取代码操作, 并对代码进行编译(JAVA)打包
- Jenkins调用SonarQube对打包好的工件进行代码质量测试
- 质量测试通过后, Jenkins将工件发布至私有存储库Nexus做版本管理及工件托管
- 最后Jenkins将工件通过Python脚本/Ansbile工具等发布至Docker/K8S/AWS/HuaweiCloud等
以上, DevOps流程结束, 进入后续持续Rolling过程
- ELK会收集应用数据, 并提供可视化展示
- Splunk可以对AWS运行日志进行分析, 以便后续实施进一步优化
- Zabbix可以对部署节点进行监控, 避免业务出现问题
- Prometheus类似Zabbix, 也是对节点进行监控使用, 监控层面不同
- Grafana提供了数据可视化功能, 可以对监控信息进行多方位可视化展示
- 对于应用的improve/bugfixs/issues/tend等, 通过Confluence进行记录跟踪