大搜车面向复杂业务场景的研发运维体系治理实践

大搜车面向复杂业务场景的研发运维体系治理实践

图:大搜车基础设施部负责人李同刚


2021年12月10日,在云上架构与运维峰会上,大搜车集团基础设施部负责人李同刚分享了大搜车在研发运维体系治理的一些实践。以下是他的演讲实录:


 

一、业务介绍


1、汽车流通

大搜车面向复杂业务场景的研发运维体系治理实践


大搜车业务覆盖了汽车的整个流通领域,并形成闭环。

新车部分:主要有布雷克索,为4s店提供一站式的信息综合服务;卖车管家是面向二网车商的管理营销工具;还有主机厂商的软件定制。

二手车部分:主要有大风车,为二手车商做上市管理;车易拍是面向二手车商的B2B交易平台。

物流层面:主要产品是运车管家,为车辆托运业务提供仓储和物流信息。

金融部分:主要负责帮助金融的机构更好地满足客户的消费需求。


2、异构业务

大搜车面向复杂业务场景的研发运维体系治理实践


异构业务主要有SaaS、软件定制和直播。

SaaS负责云上的部署,为客户提供业务层面上专业的技术支持,并且基于开源做一些改造。软件定制类似于传统的项目制方式,因为里面存在甲乙方的关系,甲方会要求软件底层的架构尽量开源,不能有个性化的改动。


 

二、技术挑战


1、中间件升级挑战

大搜车面向复杂业务场景的研发运维体系治理实践


首先要面临的挑战是中间件的升级比较困难。目前大搜车有三个版本的中间件,分布在2000多个应用上,产品和业务都比较多,并且因为业务一直在发展,这些都导致了中间件升级的困难。


2、收购的技术挑战

大搜车面向复杂业务场景的研发运维体系治理实践


收购了其他公司以后也会产生很多的技术挑战:

语言异构:Java、Dolang和NODEJS服务之间的调用会影响开发效率。

研发流程体系不统一:包括工具也不统一,同样会影响整个团队的合作效率。

线上的环境复杂:传统的虚拟机和k8s同在的,导致操作情况比较复杂。

稳定性保障体系不统一:规范、告警体系和监控工具不统一。


 

三、业务要求


大搜车面向复杂业务场景的研发运维体系治理实践


快速、稳定、高效地去满足业务上的需求,是各个业务线的诉求。因为商业是在不断往前走的,大搜车针对业务上的需求和挑战,做了一些解决方案。


 

四、解决方案


大搜车面向复杂业务场景的研发运维体系治理实践


解决方案要实现的目标包含以下三部分:

▪ 统一研发流程:严格按照需求-开发-测试-上线的流程来执行。

▪ 统一稳定性保障体系:主要包括整个监控体系、SLA的标准和其他的工具。

▪ 统一云原生化:将整个基础架构和环境能往统一的方向进步,从而提高效率。


1、统一研发流程

大搜车面向复杂业务场景的研发运维体系治理实践


如上图,研发流程的最底层是阿里云IaaS层,它包括了ECS ASK和网络、存储功能。搜车研发规范包含了GitFlow规范以及其他部署规范,质量服务层里面有一些API自动化测试工具和精准测试工具等。研发协作平台贯穿了从需求到发布的整个流程,负责落实全部的质量规范。


有了底层研发协作平台数据的积累,才可以做最上面这一层的数据化运营平台。这一层主要是针对研发协作平台做一些原子性的指标体系的规划,还有研发协作体系的业务指标,比如说测开比、线上的稳定指标等等。


2、统一稳定性保障体系

大搜车面向复杂业务场景的研发运维体系治理实践


如上图,稳定性保障体系的最底层是一些规范,比如sla的规范、架构的高可用的规范,包括复盘规范。监控数据源包括RDS、Redis、Pod、JVM等等,他们都会在这一层得到统一。SLS存储层可以用机器学习算法去做告警的自适应,SLS告警层主要处理监控、降噪和通知管理。最上层的故障处理系统,主要负责故障的闭环,从告警-故障-复盘-更新分析-改进追踪的整个流程。


要把自己的数据源和定义尽可能地用到云上的服务里去,这样才能提升整个保障体系的投入产出比。


3、统一云原生化

大搜车面向复杂业务场景的研发运维体系治理实践


因为底层有比较多的业务云,所以需要完成云原生的统一,来解决收购以后的多语言问题。分为以下三个步骤:

K8s迁移:K8s是一个标准的服务,把应用迁到K8s里是统一基础设施层。

Dubbo升级:让业务线dubbo版本统一,并且为升级到 Service Mesh 做铺垫

探索ASM方案


 

五、经验总结


大搜车面向复杂业务场景的研发运维体系治理实践


1、做正确的事

要用客观且产品化的思维去考虑,什么是正确的事,而不是靠主观意愿来判断。要更多地走进业务,去调研客户的需求,从客户的角度去考虑。


2、正确地做事

首先把握方向,其次避免过多地去关注过程,而是要从结果去反推,我们应该做什么样的决策。


点击大会官网,查看李同刚的精彩演讲视频。


上一篇:代码中设置TextView字体加粗


下一篇:关于在单独的 Js文件中无法使用 <%= %> 的原因及解决方案