上海架构师集结!4月25-26日,全球架构师峰会首次落地上海,吴翰清、汪源、叶绍志等大咖确认出席 了解详情
写点什么

业务架构设计迭代演进思路

2021 年 1 月 24 日

业务架构设计迭代演进思路

业务架构大家都在做,到底什么是业务架构,业务架构有什么用,如果要做业务架构需要注意些什么?


在 2021 年 5 月 28-30 日举办的 QCon 全球软件开发大会(北京站)“业务架构演进”专题上,到家集团技术委员会主席、快狗打车 CTO 沈剑老师将分享《百万司机在线打车平台架构演进》,在会前 InfoQ 带着一系列的问题对沈老师进行了采访。希望帮大家理清楚“到底什么是业务架构?业务架构有什么用?如果要做业务架构需要注意些什么?”等问题。


以下内容根据采访内容整理。

为什么需要做业务架构


在讲业务架构之前,我们先看下什么是“架构”,理解架构之后,业务架构就更好理解了。“架构”一词的英文单词是“architecture”,而这个单词来源于建筑词汇,可以理解是房屋的整体结构、框架。再看下“基础架构”,它其实就是偏底层通用基础建设相关的架构,如 K8s 集群建设、Service Mesh 等。现在再回过头来看“业务架构”是不是已经又一个比较直观的答案了呢?基于业务场景去设计架构,就是业务架构了。



为什么要做业务架构?这个问题沈剑老师是这么说的,“系统本身是服务于业务的,脱离业务谈系统,没有意义;系统架构本身也是解决业务问题的,脱离业务问题和业务阶段谈系统架构也同样没有意义。在做系统设计,在做系统架构的过程中,一定要先了解业务的特点,针对业务做系统;也一定要了解业务的痛点,通过系统架构设计去解决业务的痛点。”


因为我们置身于业务场景中,脱离业务去设计架构其实是有问题的。那么,在业务发展的不同阶段,架构的设计会不会是一样呢?我们以快狗在线打车平台来看。

不同阶段,如何做业务架构


快狗打车,是中国头部同城即时货运平台,其业务核心流程是:从用户下单,系统推送,到司机抢单,中单,完单。当同时在线司机数,从万,到十万,到百万的过程中,在量级不同的阶段应该使用什么样的系统架构来应对,不同的阶段的架构设计是不是一样呢?


沈老师说,“其实在快狗打车业务发展之初,业务形态并不稳定,业务对系统的要求是快速实现、快速响应、快速迭代。但随着业务形态逐步稳定,用户、司机、订单越来越多,业务对系统的要求是稳定,要具备一定的扩展性。”


然后沈老师举了三个具体的场景案例来说,“相同的场景下,在早期和现在对系统架构的要求截然不同。”


第一个场景,订单系统。早期快狗打车多个业务(2C、2B、直营城市、下沉城市等),每个业务更适合有自己独立的订单库,方便快速试错。而现在则需要统一订单中心,提升稳定性、保证扩展性,并维持较低水平的维护成本。


第二个场景,经纬度检索。司机的经纬度上报与检索,是快狗打车的业务核心之一。早期我们直接使用数据库来存储与检索经纬度,快速实现、快速迭代。如果现在还用数据库,肯定性能扛不住,所以现在则抽离了单独的服务来实现。


第三个场景,消息中心。早期 GPS 上报,快速实现了一套消息通道;订单推送,快速实现了一套;用户与司机聊天,快速实现了一套。现在,我们则把共性的需求抽象除了消息中心,以满足不同场景,在扩充业务场景的适合,能够复用系统。


通过沈老师对快狗不同的业务场景的系统要求分析,我们可以知道,在量级不同的阶段因为对系统的需求不同,所以对应的系统架构也不会相同。在快狗发展的这几个阶段中,他们在业务架构设计方面还是走了一些弯路的;我们来看下,他们是怎么解决的。


业务架构设计迭代踩过的坑及解决思路


沈老师说,“因为业务的不同阶段对架构的要求不同,在架构迭代或者重构的过程会比较痛苦,一方面要完成架构升级与转型,另一方面又不能影响业务需求的开发与迭代。”


在架构迭代和重构过程中,既要保证架构升级迭代,又不能影响现有业务正常进行;其实是有一定难度的。沈老师通过一个“订单库从分开,到订单中心合并”的例子来说,他们当时遇到快速支持业务迭代的同时并行架构改造时是如何做的?


还是举订单库从分开,到订单中心合并的例子,整个过程实际是比较痛苦的:

(1) 第一个业务(优配业务),闭环了自己的订单库;

(2) 第二个业务(货旳业务),为了快速迭代,也闭环了自己的订单库;

(3) 第三、第四个业务(车队业务、合伙人业务),发现情况不对,尝试统一订单库,尝试建立订单中心,但并不彻底;

(4) 当有订单统一展现的需求时,要访问多个订单库,开始抓狂了,抱怨早期为何不统一,下决定要统一;

(5) 然后开始数据收口,服务写收口,服务读收口,最终花了 1 年的时间,才完成订单中心的统一;



随着业务的发展,对架构的需求不一样,架构升级过渡期会比较痛苦,但又必须协同各个业务研发团队,往正确的方向走,做到架构的阶段性合理。


中台是下一步尝试


当我问到,快狗在下一步的计划时,沈老师说,其实他们目前在业务中台方面做尝试。


“首先业务中台是结合业务的,其次业务中台是多业务通用的。例如,快狗打车的用户、交易、订单、结算、营销等,不管是 2B、2C,自营业务还是下沉业务,都是通用的,就适合抽象成业务中台,统一来建设。”


来自快狗打车的又一金句“任何脱离业务的中台都是蹭热度”。


总结


我们熟悉了业务架构的概念,从快狗的业务场景出发,看到了不同阶段对业务架构设计的目标其实是不一样的,如果你正好也要做业务设计,沈老师是建议:


(1) 贴近自己的业务场景,深入的了解业务逻辑,针对该业务阶段设计适合自身的框架;

(2) 系统架构设计中必须要考虑的可用性、高性能、扩展性、一致性等常见要素;

(3) 还需要考虑业务特性、业务痛点、业务需求,密切贴合业务做系统架构。


针对不同的业务场景,不同的业务架构设计总是给我们带来惊喜。比如 2020 特殊情况下,在线教育的崛起,学而思等在线教育又是怎么针对自己的业务特性去做架构设计呢?除了在线教育的业务架构,在线票务、短视频在业务架构演进的过程中,又会有怎样的故事呢?


嘉宾介绍

老熟人了,哇咔咔。大家好,我是沈剑,现在是快狗打车的 CTO,负责产品研发,同时是架构师之路公众号的作者,偶尔深夜写写文章。比较喜欢分享自己的一些技术,产品,管理的一些经验,不管在公号上,还是在 QCon 大会上,期待和大家的沟通交流,期待面基。


2021 年 1 月 24 日 11:421489

评论

发布
暂无评论
  • 架构一期 - 甘霖 - Week2 - 作业一

    请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

    2020 年 9 月 26 日

  • 我的移动互联网十年经历(一):飞信时代

    我的移动互联网十年造梦记。

  • 美团智能配送系统的运筹优化实战

    配送效率和用户体验是美团配送业务的核心竞争力,智能调度系统对于提升效率和优化体验起到关键作用。随着单量上涨、骑手增多、配送场景复杂化,调度算法也面临日益增大的挑战。什么是好的调度算法?美团智能调度算法的架构如何演进?如何让技术进步驱动业务迭代?

  • Uber 外卖平台国际化架构演化之路

    本次分享介绍Uber在业务增长和国际扩张中碰到的挑战和一些系统实践。

  • 58 赶集集团迟学奎:野心媲美能力,掌控移动架构大舞台

    58的APP多数都是由多个业务线,每个业务线又由多个模块组成。在初期,移动端团队承担多业务开发工作,而随着业务的不断发展,越来越多的业务线有独立的移动开发团队。多业务团队并行开发刻不容缓。

  • 一键直达 | 系列解读文章回顾

    我们整理了几大系列文章的直达目录,以方便你按行业领域来回顾。

    2018 年 10 月 12 日

  • 轻松应对并发问题,简易的火车票售票系统,Newbe.Claptrap 框架用例,第一步 —— 业务分析

    Newbe.Claptrap 框架非常适合于解决具有并发问题的业务系统。火车票售票系统,就是一个非常典型的场景用例。

    2020 年 7 月 20 日

  • 专访美团外卖曹振团:天下武功唯快不破

    2016年7月15-16日,ArchSummit全球架构师峰会将在深圳举行。本届大会,我们邀请了美团外卖技术专家曹振团老师,前来分享《美团外卖系统架构演进与系统稳定性经验谈》的内容,讲述在美团外卖业务的高速发展中,系统架构各阶段面临的不同挑战以及对应的解决方案。

  • 外卖风控实时数仓实践

    美团外卖风控的实时数仓是为了满足实时化风控&自动化决策需求,目前系统每天承载几十亿量级的数据,怎么样保证这么大量级的实时数仓的准确性、一致性和低延迟性。本次分享重点介绍实时数仓的特点、系统架构和优化经验。讲师简介从事互联网行业10余年,目前是美团外卖风控技术负责人,之前先后在58到家、58同城、百度任职。在大数据、风控、中台等领域均有多年架构和技术管理经验,写过代码,做过架构,折腾过性能优化,也有丰富的技术管理经验,热爱技术,乐于分享。

    2020 年 1 月 3 日

  • 微服务链路追踪之 Jaeger

    在微服务为我们提供了模块分,低耦合的高效开发和DevOPS中,具体业务中当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪。可能你会想在业务系统中请求中埋点,或写日志,但是这种都需要在业务

    2020 年 8 月 21 日

  • Week05 总结

    分布式缓存架构

    2020 年 7 月 8 日

  • 一群龙舟划手 “拍了拍” 你:端午节安康~

    端午节,有着这样一群“龙舟划手”: 劈波挥桨整齐有序,以需求为己任。 疾舟破浪迅捷勇猛,助业务勇前行。

    2020 年 6 月 28 日

  • MongoDB 应用场景及选型

    2020 年 2 月 5 日

  • Kubeless 架构设计 | 玩转 Kubeless

    Kubeless 是 Kubernetes 原生的 Serverless 框架。 本文将介绍 Kubeless 架构设计。

    2020 年 10 月 13 日

  • 聊聊异地多活架构的设计 | QCon

    什么是异地多活? 为什么要做异地多活? 业务改造过程中会遇到哪些坑? “避坑”经验分享未来多活架构的计划

  • 腾讯微服务架构的过去、现在与未来

    演讲嘉宾刘昕,腾讯移动互联网事业群运营部总经理内容介绍随着2008年中国的互联网人口第一次超过美国,接下来的便是移动互联网浪潮,互联网产品愈发多样化。腾讯紧跟着这股浪潮,持续地进行着小步快跑快速迭代,用户规模和服务规模急剧膨胀。上千个服务、多样的服务模型、极其困难的管理、C++和JAVA两种语言同时存在等困难接踵而至,亟需一个语言无关的微服务架构来支撑日益庞大的服务体量……十年后,腾讯将积累沉淀了10年的自研微服务框架TARS开源,并捐赠给了Linux基金会,同时参与制定了行业首个微服务标准。未来,腾讯还需要做什么,才能继续令“技术产生价值”。内容大纲 过去:腾讯微服务架构的产生 现在:十年经验沉淀促技术产生价值 未来:共建健康共赢的开发者生态

    2018 年 11 月 9 日

  • 架构的纵坐标与横坐标,你权衡好了吗?

    可当你回头看看走过的路,将会觉得成就满满”。

  • WebNN - 将硬件加速的深度学习带入开放式 Web 平台

    演讲嘉宾2013-至今,目前担任英特尔亚太研发有限公司 Web Platform Engineering Team 软件技术经理,深度参与到 W3C Web Platform Test 的贡献,参与 Intel 的开源 Crosswalk Web Runtime 的完整生命周期,目前负责的团队参与到 Intel 的 Web Neural Network API, PWA 以及 WebGraphics 等项目。2007-2013,担任Opera Software 软件经理及产品经理,负责 Opera 浏览器以及欧朋浏览器的软件质量及产品 (客户端运营和关键数据)团队,负责浏览器在 Android、iOS、PC 等所有平台的质量,以及在中国市场的网站兼容性。同时负责浏览器产品的新特性定义和原型,包括 Opera 欧朋 Lite 浏览器 4.x 以及 Opera 欧朋浏览器 7、8 的产品工作。内容介绍近年来,机器学习技术,特别是深度学习子领域已经成功地用于高级模式识别应用,例如图像识别、语音识别和自然语言处理。包括英特尔在内的硬件供应商正在积极优化深度学习工作负载的性能,不仅要扩展 CPU 和 GPU 的功能,还要引入新的专用加速器。但是,在 Web 平台上运行的程序仍然缺乏和原生程序类似的性能。为了解决这种情况,我们提出了 Web 神经网络(WebNN)API,用于访问 Web 浏览器中的深度学习硬件加速。我们在 Chromium 中构建了 WebNN API 原型,我们的原型运行在 Windows、Linux、macOS 和 Android 等平台上。我们在 TensorFlow 和 ONNX 的深度学习模型上尝试了我们的 WebNN 原型,在 GPU 上观察到 3-13 倍的加速,并且在CPU 上加速超过 10 倍。本次分享将以目前 Web 平台深度学习框架的性能分析为起点,详细介绍 Intel Web 团队对 WebNN 的原理和实现,以及带来的真实的性能提高等内容。希望能够对关注深度学习框架,尤其是在 Web 端应用以及 Web 端深度学习框架的与会者带来新的技术和帮助。

    2019 年 7 月 24 日

  • 滴滴亿级 TPS 数据通道架构实践

    演讲嘉宾张亮,滴滴出行高级技术专家内容介绍滴滴每天服务几千万人次出行的过程中,产生了海量的行为、日志(log/binlog)数据,这些数据需要及时、完整的同步到大数据体系中,以满足数据仓库,实时计算、Trace与监控系统、安全管控平台,客服与Miss系统等场景的数据同步需求。面对数以万计的服务节点,数以千计的数据库实例,复杂的线上环境,严格的资源消耗,秒级的延时要求,提供一个稳定、及时、安全、易用的数据通道是一个充满挑战的问题。本次我将分享滴滴在数据通道的架构过程中,踩过的坑、架构的演进、背后的思考。内容大纲1、问题与挑战 问题 挑战 2、架构与优化 2.1 架构1.0–简单、快 2.1.1 架构关注点 2.1.2 架构图 2.1.3 存在的问题2.2 架构2.0–稳定、易用 2.2.1 架构关注点 2.2.2 架构图 2.2.3 存在的问题2.3 架构3.0–及时、完整 2.3.1 架构关注点 2.3.2 架构图3、总结与规划

    2019 年 1 月 2 日

  • 【架构训练营】第二周作业

    请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

    2020 年 6 月 16 日

发现更多内容

滴滴云平台事业群——就是稳!

滴滴技术

招聘 滴滴技术 滴滴云平台事业群分享月

腾讯大牛半年心血高级编程PDF,帮你轻松构建企业级Web应用

周老师

Java 编程 程序员 架构 面试

【Spring注解驱动开发】AOP核心类源码解析,这是最全的一篇了!!

冰河

spring aop ioc

闲聊胡扯

C语言与CPP编程

随笔杂谈

AtmoicXXX与AtmoicXXXArray源码分析

Darren

源码 内存布局 CAS java 并发 AtmoicXXX

滴滴Ceph分布式存储系统优化之锁优化

滴滴技术

云计算 分布式存储 Ceph 滴滴技术

C/C++函数指针与指针函数

C语言与CPP编程

c++ C语言 函数指针

C语言与C++常见面试题

C语言与CPP编程

c++ 面试题 C语言

Docker 安装和简单使用

枫林

Docker

Docker -快速安装Elasticsearch

枫林

【高并发】要想学好并发编程,关键是要理解这三个核心问题

冰河

写作 多线程 高并发 同步 分工

出自字节技术专家之手的SpringBoot全栈开发实战,真香

周老师

Java 编程 程序员 架构 面试

自定义线程池来实现文档转码

架构师修行之路

数据分析之伯克森谬误:颜值和性格真成反比吗

KAMI

人生 数据分析 数据

在Rust里面嵌入python代码

lipi

Python rust

架构师训练营0期 第十二周作业

WW

Elasticsearch初步认识

枫林

Java elasticsearch ES

我们一起学程序-五子棋

叫练

Java 多线程 游戏 websocket

实时数仓在滴滴的实践和落地

滴滴技术

大数据 滴滴技术 数据通道服务

滴滴七层接入平台实践和探索

滴滴技术

运维 滴滴技术 微服务治理 七层接入

浮点数比较的精度问题

C语言与CPP编程

c c++

你真的了解 Base64 吗

hepingfly

Java base64 编码

滴滴数据仓库指标体系建设实践

滴滴技术

大数据 数据仓库 滴滴技术

1.Flink检查点算法-15

小知识点

scala 大数据 flink

Redis做消息队列全攻略

架构师修行之路

redis MQ 消息队列

c语言函数指针之回调函数

C语言与CPP编程

C语言 回调函数 函数 函数指针

指针变量的传值和传址

C语言与CPP编程

c++ 指针 C语言

微服务下数据一致性的几种实现方式

xcbeyond

微服务 BASE理论 数据一致性

物联网的银河,华为的桨,少年的歌

脑极体

Zeppelin SDK :Flink 平台建设的基石

Apache Flink

flink

缓冲区溢出

C语言与CPP编程

c++ C语言 缓冲区 堆栈溢出

OCR技术的未来发展与演进

OCR技术的未来发展与演进

业务架构设计迭代演进思路-InfoQ