热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

业务发展这么快,架构如何跟得上?

作者|冉叶兰嘉宾|沈剑业务架构大家都在做,到底什么是业务架构,业务架构有什么用,如果要做业务架构需要注意些什么?在2021年

作者 | 冉叶兰

嘉宾 | 沈剑

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

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

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

1 为什么需要做业务架构

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

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

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

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

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

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

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

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

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

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

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

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

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

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

还是举订单库从分开,到订单中心合并的例子,整个过程实际是比较痛苦的:(1)第一个业务(优配业务),闭环了自己的订单库;

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

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

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

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

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

4 中台是下一步尝试

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

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

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

5 总结

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

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

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

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

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

嘉宾介绍:

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

扫二维码获取大会最新日程,更多问题可咨询客户经理ring:17310043226(同微信)

阅读原文,查看最新议程。


推荐阅读
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • ArchSummit深圳2014将于7月18日拉开帷幕,所有讲师已确认,涵盖9个热门话题,共36场精彩报告。InfoQ中文站提供了详细的讲师和报告列表。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 技术总监的角色定位与代码实践
    关于技术总监是否应当参与代码编写,这一议题始终伴随着技术行业的成长而引发广泛的讨论。本文旨在从多个角度探讨技术总监参与代码编写的必要性和影响因素,包括公司背景、发展阶段及团队规模等。 ... [详细]
  • 车载T-BOX智能网联终端的设计与实现
    本文介绍了一款基于瑞萨RH850微控制器、TICC2640R2F蓝牙微控制器和高通MDM9628处理器的T-BOX车载终端的设计。该终端通过集成CAN总线、GPS定位、数据加密、蓝牙通信和LTE无线数据传输技术,实现了车辆信息的高效采集与云端通信,支持远程车辆控制和诊断等功能。 ... [详细]
  • 数据集成策略:ETL与ELT架构对比及工具选择
    随着企业信息化的深入发展,‘数据孤岛’问题日益突出,阻碍了数据的有效利用与整合。本文探讨了如何通过构建数据仓库解决这一问题,重点分析了ETL与ELT两种数据处理架构的特点及适用场景,为企业选择合适的ETL工具提供了指导。 ... [详细]
  • mysql 分库分表策略_【数据库】分库分表策略
    关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多, ... [详细]
  • 深入探讨配置文件的管理与优化
    尽管配置文件的重要性不言而喻,但其管理和安全性问题却常被忽视。本文将详细讨论配置文件的不同管理策略及其优缺点。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 迎接云数据库新时代:程序员如何应对变革?
    在数据无处不在的时代,数据库成为了管理和处理数据的核心工具。从早期的信息记录方式到现代的云数据库,数据库技术经历了巨大的变革。本文将探讨云数据库的特点及其对程序员的影响。 ... [详细]
  • 应对高并发面试题:构建稳健的系统架构策略
    本文探讨了如何在面试中有效地回答有关高并发系统设计的问题。通过逐步介绍从单机部署到集群化、数据库优化、缓存应用及消息队列的使用,帮助读者建立解决高并发挑战的基本思路。 ... [详细]
author-avatar
宝丁2502907973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有