最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

代其锋:如何用技术啃下 ToB 业务的硬骨头

  • 2019-06-06
  • 本文字数:4474 字

    阅读完需:约 15 分钟

代其锋:如何用技术啃下ToB业务的硬骨头

对比中美传统企业级服务公司,用友、东软、金蝶三家老牌企业市场服务商合计体量仅 142 亿美元,与美国巨头 Oracle、SAP、Salsforce 合计 4206 亿美元市值差距巨大。而最近有个说法,中国互联网的新增长点是 ToB 业务。ToB 产品对灵活性、低耦合、高复用要求比较高。客户提诉求,服务方用积木盒子模块组装一个高达给客户使用。那么如何去打造 ToB 业务平台呢?



带着以上问题,我们对ArchSummit深圳全球架构师峰会2019专题讲师、百分点资深架构师代其锋老师进行采访,请他分享这些年在 ToB 业务开发中的技术经验积累。代老师拥有 10 余年企业级服务、互联网领域从业经验,现主要在百分点负责海外国家级政府项目的技术架构和研发团队管理。以下为采访全文。


InfoQ:您现在主要负责海外国家级政府项目的技术架构,一般收到项目需求的时候,如何去拆分需求,如何规划并按照客户需求去调整/优化,有没有具体的流程?


代其锋:海外的需求是复杂多变的,不同的客户对需求的把控程度存在巨大差异,大部分客户并不能完整的表达自己的述求。如果想要比较好的应对复杂需求的变化,首先需要考虑一个完善的需求提交、分析、确认,到系统设计、研发、实现等组织流程。


项目组一般有两个非常重要的角色,一个是业务负责人,一个是技术负责人,其中业务负责人主要把控项目的需求,整个需求从提出到落地可分为两大阶段,一是需求确认,二是需求实现。


需求确认阶段,业务负责人会将复杂需求分解给业务组各个业务同事,并在需求明确后,拉技术负责人介入,提前评估技术可行性和规避技术实现风险,最终确认需求。


需求实现阶段,将需求确认阶段产出的需求规格说明书,交由产品同事进行产品、UI 设计,评审通过后再交由技术组进行系统概要设计、详细设计,并最终编码、测试,交付现场。需求变更时,也是采用上述组织流程来落地实现。


没有流程必然会导致每个项目执行的套路、质量各异,为了有效的执行海外项目,提高团队的作战效率,海外部门针对项目的开发流程可谓是积累了丰富的经验,走了不少弯路,大家一起迭代的梳理出了多个版本的流程,目前我们的流程已经相对比较简单可执行,包括了项目启动阶段->需求确认阶段->系统开发/里程碑验收阶段->安装部署->最终验收阶段,对每个阶段的负责人,以及相应的产出都进行了严格的定义;同时,我们也对产出的文档有严格的质量规范,项目组会出具相应的模板,避免大家在文档的形式和格式上耽误太多时间。


InfoQ:在采用“微服务+运维平台+技术中台” 解决思路解决客户诉求之前,百分点的解决方案经历过哪些迭代版本?


代其锋:百分点在做 ToB 服务之前,一直是为客户提供 SaaS 的推荐服务,在大数据平台、算法方面已经有了一定积累,但是这些积累都是和我们内部的系统强绑定,从稳定性和灵活性方面来看都达不到交付的要求。


在 ToB 方面,技术路线大致可以分为如下几个阶段:


1.对已有产品进行改造,业务系统的开发语言各异,没有统一的规范标准;


2.统一技术栈为 Java,开始采用微服务开发,部署流程逐渐规范化;


3.为了提高开发和交付效率,打造自己的数据中台、业务中台、云平台;沉淀出了 "大数据操作系统”、“商业智能” 等数据中台产品,以及 “动态知识图谱”、“统一认证中心”、“Sextant” 等业务中台及云平台系统。


InfoQ:“微服务+运维平台+技术中台” 的具体技术架构是如何设计的?(请用架构图展示出来)各个平台之间是如何协作的?


代其锋:经过多年的发展,百分点在业界的标签是一家大数据+人工智能解决方案的公司,所以我们的技术架构是围绕数据和智能来设计的。


下面分别介绍我们的微服务、运维平台以及技术中台。


微服务我们采用了 SpringCloud 技术栈,众所周知,SpringCloud 技术栈大而全,但很多用户,并不需要 SpringCloud 技术栈的全家桶,同时,不同项目有着自己的开发集成要求和历史遗留系统,为了使传统软件系统快速升级为微服务架构,利用微服务特性,我们选择了 SpringCloud 技术栈的 Eureka(服务注册组件),Zuul(统一网关组件),Feign(声明式、模板化的 HTTP 客户端)作为基础组件。


基于 SpringCloud 基础组件,我们自研了配置管理服务 ACM 服务(兼容 SpringCloud Config client),在 ACM 服务中,内置了 MySQL、Kafka 等基础组件的配置,方便使用。同时,我们将常见的权限管理,SSO 等功能集成到 Zuul 网关中,提高组件复用效率,通过提供整套微服务架构技术选型,集成开发规范,可以极大的提高微服务开发的效率。


在运维方面,我们采用了 Docker+K8s 技术栈,为了更好的管理服务,提高 DevOps 的效率以及资源的利用率,我们开发了自己的云平台-Sextant,通过云平台,我们打通了 DevOps 整个闭环,我们采用 Git 管理代码,通过 Jenkins 做持续集成,Jenkins 将应用放入到镜像仓库,其它的事情都交给 Sextant 搞定。包括对服务器资源,项目资源,服务的动态部署及扩容,负载均衡等的管理。


基本流程如下:



再说技术中台,我们主要沉淀了 “大数据操作系统”、“商业智能”、“动态知识图谱” 等中台产品。百分点的整个技术体系如下所示:



这些产品之间都是松散耦合的方式,也就是说,它们既可以单独的与业务系统结合,也可以提供组合的解决方案,每个中台产品都有自己的定位。比如大数据操作系统定位于整个数据生命周期的管理,它集成了数据的采集,分析,数据的管理,整个数据的处理都可以通过大数据操作系统来完成,它也可以和其它产品进行结合,比如可以将加工好的汇总型数据放入到 MPP 数据库,供商务智能系统进行分析。


经过多年的摸索和实践,我们已经在大数据和人工智能方面积累了自己的解决方案和技术中台,基本上能够支持百分点的业务场景,当然每个行业、每个客户的实际需求都不一样,我们也是在不断的迭代我们的技术中台和解决方案。


InfoQ:客户的诉求各不相同,有哪些记忆犹新的比较有代表性的攻坚案例?


代其锋:其实攻坚项目比较多,举一个印象比较深的某国家级项目。这个项目是在 17 年接到需求,到现在已经执行到第 3 期了。这个项目的第一期时间特别紧张,从接到需求到交付,业主只给了 2 个月时间,关键是中间还有一个春节。因为时间紧急,在节前就基本上确定了核心成员,包括项目经理、业务经理、技术经理。


项目经理主要职责是负责项目的立项、规划执行周期、与其他两位 leader 确定项目成员。该项目还涉及到第三方合作,所以项目经理节前就和第三方公司进行了沟通,确定了具体的对接人和时间点。


业务经理主要是和业主沟通,确定业务的具体逻辑,产品原型;我们业务经理很厉害,通过与业主进行多次的沟通,很快就拍了一个比较完善的需求和基本可用的原型。


我主要负责技术经理一职,实际上也充当了产品经理的角色,实际上通过与业务经理的沟通,已经对需求有了非常深刻的理解,在实际开发过程中,很多产品细节,包括交互,我都直接的通过文字描述+当面沟通传达给了研发的小伙伴。


在开发前期,我们做了很好的架构设计,确保主干没有问题,对于一些当时还不太重要的则没有过度设计;架构划分清楚后,实际上大家的工作边界也相对清晰。有一部分人开始投入技术攻关,而另外一部分人则开始定义接口,这样事情就可以并行开展了。


这个项目里面,我们有几个比较大的挑战:


  1. 业务系统多,有大概十个子系统;

  2. 这个项目对 GIS 的要求非常高,我们之前积累很少;

  3. 涉及了航天方面的专业知识和算法。


为了理解业务,我们花了很多时间用来学习,同时也聘请了一些专家,这样在短期内基本上对这个领域有了大致了解,已经足够指导我们开发了。


整个研发团队大概不到十个人,大家在整个开发过程中非常辛苦,完全没有抱怨,整个开发和测试时间其实还不到一个月,在攻关期间,有同事就直接睡到了公司,我们和第三方公司也很早开始了联调,在联调期间,有各种异常情况发生,还好最后都一一克服了。


这个项目,我感受比较深的有这几点:


  1. 优秀的负责人非常关键,比如项目经理在规划时间节点的时候尽量提前来考虑,很早就将第三方公司拉到一起来联调,这一点非常关键,避免了很多后续的风险;

  2. 时间再紧张,也要做好技术的设计和代码的开发,否则一定会耽误最终交付的时间;

  3. 大家目标一致,每个人都要更进一步的思考项目的问题,及时的提出自己看到的问题,而不是被动的等待。


InfoQ:国内和国外的 ToB 项目存在哪些差异点?在技术上有什么偏重?


代其锋:国内项目最近我接触不多,总体来说,国内的行业相对分散,需求也更加多样化,客户对技术和商业效果的期待都很高。


我们接触的国外 ToB 项目一般规模较大,需集成更多的第三方以及现有的 IT 系统,并且大多数项目都基本上是从头开始规划,包括机房的建设、服务器的规划、系统的研发以及部署等都是从零开始。


对于这些项目而言,项目的落地使用和数据的集成和是比较大的挑战。


项目的落地是首先要考虑的问题,我们需要想清楚客户需要什么,我们能给客户带来什么价值,以及客户如何去使用我们的系统。围绕着这些问题,需要我们的业务人员不断和用户沟通,出方案,再沟通,一般需要经历很多次的沟通,我们才能和客户达成一致。由于项目庞大,对于客户该如何使用我们的系统也是一个问题,需要从用户的角度去思考,这样能够帮助我们梳理清楚业务的扭转关系。


在数据集成方面,需要将客户旧有系统的数据进行迁移,以及完成当前项目中各方数据的收集处理,在技术上更多地需要考虑成熟灵活的集成方案,同时考虑到可能的数据量增量、数据接入的实时性、实际的网络拓扑等,对大数据量的支撑也是一个必须考虑的问题,系统必须具备可靠的可扩展性以及性能,才能满足业务需要。


InfoQ:从您的经验来看,如何打造高效的研发团队?尤其是跨区域和跨时差的团队,如何高效协作开发?


代其锋:这个问题要从团队文化和标准化流程两方面来驱动。


经过十年的发展,百分点已经形成了自己独特的文化,可以用几个关键词来概括:正直、坚韧、超越、团队精神、为客户创造价值,虽然只有 5 个关键词,但是其背后蕴含了丰富的内涵,我们有自己的解读,我们基于这个文化内核来驱动整个团队,打破区域、时差的界限。


当然,只有文化是不够的,大家思想同步了,但是做事的方式各异,还是无法更好的协作,所以我们也花了很多时间在流程化、标准化上面。我们有一套适合自己的项目和产品研发流程,同时对于每个阶段的产出也有标准化的要求。在项目管理上,我们自主研发了项目管理工具 PMP,产品设计中心 Design 等,在内部的沟通交流以及办公自动化方面我们还自研了 BLing,促进信息共享,沟通顺畅;在研发工具方面,我们有自己的云平台 Sextant,也使用了 Jira、Wiki、Git、Zoom 等,标准化管理项目生命周期中的各个关键步骤,并尽量自动化。


除此以上讲述外,在 7 月 12 日深圳ArchSummit全球架构师峰会上,代其锋老师还会详细的介绍 ToB 业务技术架构细节和团队协调管理的内容《ToB 技术实践:挑战与破局之道》,本专题下其他话题包括:



9 折报名倒数第二周,感兴趣报名的话欢迎联系票务经理灰灰 17326843116(微信同号)


2019-06-06 15:1711513

评论 2 条评论

发布
用户头像
等于没说
2019-06-08 15:52
回复
用户头像
言之无物,一堆废话
2019-06-06 18:27
回复
没有更多了
发现更多内容

聚焦年轻消费人群 百草味入围最受“Z世代”喜爱品牌TOP10

E科讯

一路同行:开发者与华为云的2022

脑极体

Python进阶(三十九)使用matplotlib进行绘图分析数据

No Silver Bullet

Python 绘图 matplotlib 11月月更

还在为数据库事务一致性检测而苦恼?让Elle帮帮你,以TDSQL为例我们测测 | DB·洞见#7

腾讯云数据库

数据库 腾讯云 数据一致性 tdsql 腾讯云数据库

java Apache poi 对word doc文件进行读写操作

@下一站

编程 原创 word Java core 11月月更

【Redis】Redis AOF持久化

石臻臻的杂货铺

redis 11月月更

大数据 Hadoop 的五大优势

千锋IT教育

扒去Spring事件监听机制的外衣,竟然是观察者模式

程序知音

Java spring ssm Java后端 后端技术

Python进阶(三十七)Windows7使用nginx+apache部署django项目

No Silver Bullet

Python Apache nginx django 11月月更

分享一招应对BOM表的检查方法,摆脱被BOM支配的“恐惧”

华秋PCB

检查 PCB PCB设计

10月月更获奖名单出炉啦!快来看看你上榜没有!

InfoQ写作社区官方

热门活动

用javascript分类刷leetcode3.动态规划(图文视频讲解)

js2030code

JavaScript LeetCode

大咖说·先临三维|高精度3D视觉技术商业应用与实践

大咖说

科技 高精度3D视觉

MASA MAUI Plugin (六)集成个推,实现本地消息推送[Android] 篇

MASA技术团队

blazor MASA MAUI Xamarin MASA Blazor

JavaScript刷LeetCode拿offer-js版字典

Geek_07a724

JavaScript LeetCode

Wallys/Introduction of DR9074 series network card/qcn9074/qcn9072/qcn9024/industrial M.2 card

wallysSK

QCN9074 QCN9024 QCN9072

js异步编程的三种模式

hellocoder2029

JavaScript

Python进阶(三十八)利用matplotlib 进行折线图,直方图和饼图的绘制

No Silver Bullet

Python matplotlib 11月月更

java企业级开发中常见的注入方式

千锋IT教育

vue和react的区别有哪些,哪个好

千锋IT教育

直播CDN调度技术关键挑战与架构设计

京东科技开发者

架构 系统架构 直播 CDN加速 CDN技术

前端leetcde算法面试套路之二叉树

js2030code

JavaScript LeetCode

挖到宝了!2022阿里大佬手写“精品”Sping Boot学习笔记

小小怪下士

Java 程序员 阿里 springboot

Redis6.0新特性、剖析线程模型(单线程和多线程)

C++后台开发

redis 多线程 后端开发 单线程 C++开发

js对象和原型、原型链的关系

hellocoder2029

JavaScript

js函数式编程讲解

hellocoder2029

JavaScript

【Go电商实战05】结合项目解答使用Go中间件遇到的问题:中间件的概念和应用

王中阳Go

golang 学习方法 中间件 11月月更 电商实战

首批!腾讯云通过金融开源技术服务能力评估

腾源会

开源

2 分钟,教你用 Serverless 每天给女朋友自动发土味情话

阿里巴巴云原生

阿里云 Serverless 云原生

JavaScript刷LeetCode拿offer-二叉树层序遍历篇

Geek_07a724

JavaScript LeetCode

JavaScript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

代其锋:如何用技术啃下ToB业务的硬骨头_文化 & 方法_代其锋_InfoQ精选文章