阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

  • 2021-01-24
  • 本文字数:2433 字

    阅读完需:约 8 分钟

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

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


在 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-01-24 11:425110

评论

发布
暂无评论
发现更多内容

JavaWeb快速入门--Filter&Listener,java百度网盘课程

Java 程序员 后端

Java 世界里的垃圾回收规则你搞懂了吗?,java编程思想百度云

Java 程序员 后端

Java 多线程 —— 同步代码块,给大家安排上

Java 程序员 后端

Java 必须掌握的 12 种 Spring 常用注解!你掌握了几种?

Java 程序员 后端

1个月连载30个设计模式真实案例(附源码),挑战年薪60W不是梦

Tom弹架构

Java 架构 设计模式

Java 线程池原理分析,java项目经理面试常见问题及答案

Java 程序员 后端

Java8新特性-Stream,java数据结构和算法pdf百度云

Java 程序员 后端

Java中return和finally到底哪个先执行,java程序设计实用教程叶核亚第五版

Java 程序员 后端

Java this关键字详解(3种用法),springaop实现原理面试题

Java 程序员 后端

Java 重写(Override)与重载(Overload),mysql基础语法大全

Java 程序员 后端

Java8异步编程-CompletableFuture,孔浩java视频百度云盘

Java 程序员 后端

JavaWeb Ajax详解,java开发面试问题大全及答案大全

Java 程序员 后端

jackson学习之九:springboot整合(配置文件),jpa和mybatis的区别面试

Java 程序员 后端

jackson学习之八:常用方法注解,为什么阿里的程序员成长如此之快

Java 程序员 后端

JavaWeb快速入门--Bootstrap,java获取视频时长

Java 程序员 后端

Jaeger知识点补充,mysqlsql优化视频教程百度网盘

Java 程序员 后端

Java BSON使用,springboot运行原理理解

Java 程序员 后端

Java IO,Java真实项目案例分享

Java 程序员 后端

Java中的程序控制流程,java在线编译器实现原理

Java 程序员 后端

031云原生之应用性能监测

穿过生命散发芬芳

云原生 10月月更

Java lambda表达式用法介绍,linux教程第四版思考题答案

Java 程序员 后端

Java 新特性之泛型,kafka的架构图

Java 程序员 后端

Java 的大 Class 到底是什么?,吃透这份Java高级工程师面试497题解析

Java 程序员 后端

JavaWeb - response对象,重定向,定时跳转案例(1),java高级技术经理

Java 程序员 后端

Java SSM (springboot+mybatis)美食菜谱分享平台系统设计和实现以及论文报告

Java 程序员 后端

Java中高级核心知识全面解析——Dubbo,java架构师课程下载

Java 程序员 后端

Java中高级核心知识全面解析——JVM,java全套视频教程

Java 程序员 后端

Intellij IDEA神器那些让人爱不释手的小技巧,java高级程序员面试笔试

Java 程序员 后端

Java8新特性-Lambda表达式,zookeeper+dubbo面试题

Java 程序员 后端

JavaWeb - response对象,重定向,定时跳转案例,蚂蚁金服内推四面

Java 程序员 后端

JavaWeb JSP详解,java语言程序设计基础篇第十一版答案

Java 程序员 后端

业务架构设计迭代演进思路_架构_叶兰_InfoQ精选文章