Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在快速变化的业务需求中,设计一个既能满足当前需求又具有良好扩展性的系统架构?

如何在快速变化的业务需求中,设计一个既能满足当前需求又具有良好扩展性的系统架构?

提问于 2024-12-21 02:44:46
回答 5关注 0查看 129

背景:

当前团队在开发一个新产品,需求更新频繁且经常需要快速上线新功能。

既要确保系统的稳定性,又要支持未来可能的业务增长和技术演进。

期待大佬分享:

架构设计的核心原则(如何平衡灵活性与复杂度)。

具体案例或方法论(例如微服务、分层架构等适用场景)。

如何避免过度设计或技术债务?

回答 5

杜金房

发布于 2024-12-24 12:59:30

花点时间找一个合适的开源框架,高内聚,松耦合。

微服务就是一个典型的例子,很灵活,但复杂度也相当高。但不管怎样,选一个流行的框架开干就行。流行的框架之所以流行,那就是选的人多。

架构肯定需要分层,各司其职。这就像OSI七层结构一样,每一层都有自己关注的重点和要解决的问题,这样不仅能保证业务稳定,出了问题也好排查。对于一个长期运行的复杂业务来说,最重要的不是写代码,而是后期代码迭代,以及线上问题的排查。

过度设计就是一家小公司非要追逐大公司、大神、大牛分享的技术架构,而自己的业务量永远也跑不到他们的万分之一。适合的就是最好的,现在的开源框架都已经足够好,等真的遇到业务瓶颈了,公司有钱了,代码完全重写也没有任何问题。很多大公司的系统也不知道是重写了多少遍的。

白德鑫

发布于 2024-12-26 13:10:30

确保系统的稳定性和业务快速增长、技术演进是相悖的,不同阶段有不同的架构抉择,当你只有10块钱的时候,尽量不要做1000块钱的决策。没有技术债务的团队一般公司都比较新 :)

一乐骑摩托

发布于 2024-12-26 10:56:01

我们首先还是要定义好,何为满足需求,何为良好扩展性。

你可能听过一句话,好的架构是演化出来的,而不是设计出来的

业务本身在快速变化,预测需求已经很难了,如果对良好扩展性的期望是一劳永逸,基本不可能。 大概十年前的时候,我们的业务也经历了一轮指数级的增长,其中的架构演化与经验也在全球开发者大会上专门分享过

http://2015.qconbeijing.com/presentation/2604/ 其实经历过的都知道,一般这种时候,你的研发人力也是很不够的,团队需要扩张,人员需要培养。 我的第一个建议是,如何检验是否满足当前需求,那就看是否能承载3-5倍需求,性能上往前看3-5倍。

为什么不是更多? 因为一个架构倍设计出来的时候,能被称为合适,就是它能够满足当前需求且能够保持一定的扩展性。这个一定,在经验里看就是10倍。即当你的业务量增加10倍(一个数量级之后),你大概率就要考虑重新设计。

因为业务变化都不会是理想的线性增长,在量变的同时,也会偏移,比如本来人少的时候大家都在小圈子里交流,人多之后,大家忽然习惯在广场上交流了,广播反而成了系统的瓶颈。

你设计能够容纳10倍业务需求的系统,抵不住一个变化出来的新需求,意味这个新需求的变化可能是100倍。

为了能够撑住突如其来的广播需求,你可能整个系统都面临重构。这个维持当前业务,又往新架构迁移的过程,这也是演化的意思。 更早在微博的时候,分享过单元化架构的设计,也是因为业务需求变化带来的新设计

https://cloud.tencent.com/developer/article/1619433

但我们当然也不是只能被动应对,所以我的第二个建议是,尽早服务化,分而治之

通过服务化,我们可以服务级别的复用上打好基础,又不至于在服务优化上过度准备。

相当于为未来服务的扩展留好了积木,如果需求变化,那就重新搭建,如果某个服务变成瓶颈,那就独立优化,不影响其他部分。

而分治是最根本的策略,可以让我们在演化的过程中,将大问题转化为小问题,将整体问题转化为单一服务问题,解决起来就容易得多了。

以上,希望能够有所帮助。

和开发者交流更多问题细节吧,去 写回答
相关文章
PROXYSQL 怎么满足只读需求,满足读banlance的需求
关于MYSQL的读写的需求,大部分都是在跟读作战,怎么读写分离,是在应用上实现, 或者通过的dns 转接,还是通过简单的中间件实现, 实际上这和需求以及当时可以满足需求的技术以及功耗比有关, 当然这也和数据库的量有关,所以没有那个更好,各花入个眼,没有那个更....
AustinDatabases
2020/10/10
7660
PROXYSQL  怎么满足只读需求,满足读banlance的需求
软考高级:业务需求/用户需求/系统需求(功能需求/非功能需求/设计约束)概念和例题
业务需求、用户需求和系统需求是软件开发过程中定义项目目标和功能的三个关键概念。它们在项目规划和实施阶段起着至关重要的作用。下面我将通过表格形式对这些概念进行解释,并提供一些例子。
明明如月学长
2024/05/24
1.3K0
如何在云中满足当今的灾难恢复需求
灾难恢复(DR)如今已经成为组织的首席信息官的首要任务。实际上,根据Enterprise Strategy Group的调查,改进数据备份和恢复是仅次于安全措施的IT部门第二个优先事项。
静一
2020/11/11
9000
如何在云中满足当今的灾难恢复需求
如何选择满足需求的SQL on Hadoop/Spark系统
作者|梁堰波 感谢“明略数据”的投稿,只要是“干货”大数据文摘就愿意发表,也欢迎各位读者参与评论,点击文末右下角“写评论”即可。 在批处理时代,Hive一枝独秀;在实时交互式查询时代,呈现出的是百花齐放的局面。Hive onTez, Hive on Spark, Spark SQL, Impala等等,目前看也没有谁干掉谁的趋势。引用今年图灵奖得主Michael Stonebraker的话说,现在的数据库领域已经不是”one size fit all”的时代了。那么面对这么多系统,我们改如何选择呢?这里谈谈
大数据文摘
2018/05/21
1.3K0
如何构建最小可行产品(MVP)快速满足用户及业务需求?
最近接手新的项目构建一个新的产品支持用户及业务方的使用,而在开始一个新的产品时,我们通常首先需要基于目标进行需求版本规划,制定RoadMap。科学、灵活、严谨的需求规划,可以很好的服务整体的产品策略和目标。产品规划的第一个最低版本一般为最小可行产品(MVP)版本。
产品言语
2022/06/02
9720
如何构建最小可行产品(MVP)快速满足用户及业务需求?
满足IT需求最好的云备份选项
没有什么办法来复制数据短缺,在云里仍然是这样的。当人们浏览自己的云备份选项时,要仔细看看他的云环境,包括他的云计算供应商的本地备份服务、数据库等等。 回到在虚拟化的全盛时期,优选的备份方法是使用该备份或复制整个虚拟机从管理程序层,例如,采用Veeam云备份,或从Zerto软件复制数据保护的软件。 对于使用基于VMware云的IT部门,这种方法仍然有效。VIF教育是总部设在北卡罗来纳州教堂山分校的全球教育机构,运行了软件即服务(SaaS)和基础设施即服务(IaaS)的混合应用服务。对于其谷歌企业应用套件和Sa
静一
2018/03/26
1.9K0
如何应对不断变化的需求?
在我知道DDD之前,对于如何给类命名,我曾经提到过以下的想法。 如果我们用客户习惯使用的词语来命名类呢?这难道不让我们更容易向客户解释我们为他们实际建造了什么吗? 当然,实际中有可能是完全错误的,但我想说我们与客户使用这种方式进行对话是有原因的:不断涌现的新需求。 这不是一个bug,它是一个特性 问题是,我们的大多数项目都是基于固定的价格(和固定的功能)。在收集了所有的需求之后,就会以一种对我们来说有意义的方式构建了这个东西,实现一些不言而喻的业务规则。 但是,在最初的发布之后,我们会从客户那里得到不断增加
lyb-geek
2022/03/09
4400
满足防疫需求,保障业务连续性的智能云客服实践
客服中心通常都是人员密集型的工作场所,天然不利于防疫隔离,特别是负责电话业务的客服人员,带上口罩往往会导致语音沟通不清晰,不带口罩又是不满足防疫需求的。 腾讯企点防疫助力小队近期也密集的和很多客服中心的业务负责人进行沟通了交流,大家一起探讨如何在满足防疫的要求下,能够持续稳定的对外提供客服工作,特别对一些关系国计民生的银行、交通等公共事业的部门而言,即便在疫情之下服务也是不能停止的。 我们整理了相关的实践如下,供大家参考。 核心策略主要有以下三个方面: 1. 客服中心通过远程客服、居家客服的模式开展业务,
腾讯企点
2020/06/10
2.2K0
软件工程需求之:业务需求与用户需求
在软件开发项目中,"业务需求"和"用户需求"是两个核心概念,它们分别从不同的角度描述了软件应该具备的功能和特性。理解这两个概念的区别对于成功地规划和开发软件至关重要。
johnhuster的分享
2024/07/12
4050
从支撑业务需求来解读业务架构与技术架构
服务化,业务架构,技术架构是比较关注的几个架构术语,也是我一直比较感兴趣并且深度挖掘的,工作中也有相应的开发经验和架构实践。这篇文章中简单谈谈一点体会。
needrunning
2019/07/04
8600
使用混合云文件系统来满足组织的存储需求
如今,越来越多的企业正在将数据迁移到云中,以利用无需采购或维护大量硬件相关的成本、可扩展性和效率的优势。事实上,云计算数据存储当然可以帮助组织实现卓越的投资回报率。
静一
2018/07/31
1K0
使用混合云文件系统来满足组织的存储需求
基于UML的需求分析和系统设计
本文主要讲解如何在项目过程各阶段采用合适的UML图形进行分析和设计,重点关注以下问题:
架构之家
2022/09/01
1.1K0
基于UML的需求分析和系统设计
需求变化的根源是什么?
在不按时算薪的行业里,软件开发应该是加班最多的一个行业。码农,是很多程序员用以自嘲的称谓。长时间的加班,大量的BUG,无穷无尽的特性,永远都在做的重构,伴随着程序员职业生涯的始终。对比国外的微软、GOOGLE公司那种轻松愉快的工作,国内的程序员的工作真的就如同面朝黄土背朝天的农民一样艰辛。很多程序员都坦承软件开发是一件体力活,程序员干不到三十岁的论断,也流传甚广。 软件项目一直是一种高风险的项目,除了产品是否畅销的市场风险,还有大量的产品在开发过程中夭折。 比如软件项目的主要开发团队离职,旧的代码无法给新的
韩伟
2018/03/05
1.4K0
需求变化的根源是什么?
架构设计之需求分析
设计架构的第一步是需求分析。那么,为什么要做需求分析?如何做好需求分析?今天我们一起聊一聊需求分析这件事儿
架构狂人
2023/08/16
3900
架构设计之需求分析
如何让系统具备良好的扩展性?
系统架构的设计往往并不是仅仅只需要满足当前的功能场景,而是需要考虑未来在系统用户数量、数据规模、业务复杂度上升之后,系统无需进行重构,依然可以通过高效经济的扩展来应对不断增长的用户数量和数据量的飞升。
六月的雨在Tencent
2024/09/18
4130
在繁杂的业务需求中,如何找到API设计的平衡点
关于API设计,有什么好的设计方法,或者说如何来构建一个相对健壮的后端API设计体系?我觉得还是在不断的实践中犯低级错误逐步积累起来的,或者是到了不得不改的时候才会造成这种变革和重构的过程。
jeanron100
2019/11/11
6570
在繁杂的业务需求中,如何找到API设计的平衡点
高速部署博客网站,Jekyll满足你的需求!
云开发(CloudBase)是一款云端一体化的产品方案 ,采用 serverless 架构,免环境搭建等运维事务 ,支持一云多端,助力快速构建小程序、Web应用、移动应用。
腾讯云开发TCB
2020/06/03
1K0
为什么说ETL数据集成无法满足企业当下的业务需求呢?
长期以来,IT团队一直依赖企业数据仓库作为其业务工作流程的中央数据基础设施。所有的东西都是通过这个仓库运行的,ETL是数据集成的可靠工具,从源应用程序和系统中提取数据,将其加载到目标仓库中,并将其转换为可访问的形式。
知行软件EDI
2021/09/16
7550
为什么说ETL数据集成无法满足企业当下的业务需求呢?
业务需求协作管理
业务需求协作管理贯穿于整个软件产品版本周期,涉及与业务软件交付相关的所有角色,包括 业务人员、产品及运营人员、开发人员、测试人员、运维人员 等。
新亮
2022/12/05
4000
中台之上(九):如何基于企业级业务架构管理业务需求?
业务架构是推动业务与技术深度融合的重要方法,之前的文章中也提到,要在各种场合尽可能推广模型的使用和模型思维方式,以促进“统一语言”的建立,那么,业务架构还有一项很重要的工作就是使用既有的架构去管理新的需求,这是业务架构的长期应用机制问题。
用户6900693
2020/04/10
4980

相似问题

● 如何在架构设计中平衡业务需求的快速迭代与系统架构的稳定性和可扩展性?

152

在当前云计算环境下,如何构建一个高可扩展性、低延迟的微服务架构以应对快速变化的业务需求?同时,在微服务架构设计中,如何平衡服务间通信成本与系统性能优化?

143

在面对复杂多变的业务需求时,如何确保架构设计既具有足够的灵活性以适应未来变化,又能保证当前系统的高效稳定运行?

018

架构师怎样平衡技术创新和业务需求的关系呢?

017

腾讯云直播是否满足我们的需求?

1726
相关问答用户
某公司 | 程序员擅长1个领域
腾讯云TDP | 先锋会员擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档