前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一周技术学习笔记(第92期)-为什么喜欢讨论技术而不是业务?

一周技术学习笔记(第92期)-为什么喜欢讨论技术而不是业务?

作者头像
王新栋
发布2023-03-08 21:05:57
1920
发布2023-03-08 21:05:57
举报
文章被收录于专栏:程序架道

1、我们为什么总喜欢讨论技术,而不是业务?

作为开发人员,我们平常讨论比较多的是技术层面的东西,比如 Spring 框架、Redis 缓存、MySQL 数据库等等,我们喜欢讨论这些,是因为纯技术的东西比较通用,和业务相关性不大,沟通起来比较方便。

但你要知道,一个项目能否成功落地,首先需要的是把业务分析做到位,至于选用什么技术来实现,这是我们第二位才去考虑的因素。从架构角度看,业务架构是源头,然后才是技术架构。

2、分清哪些是基础,哪些是多变,架构就成了。

需要总体上理解业务,才能定义好哪些是基础业务,哪些是上层应用。

架构是逐步演进的,一开始自上而下直接搭建,怎么快怎么来。

后面业务复杂了,就要考虑如何拆分组合,哪些属于稳定的基础业务,哪些属于快变的上层应用。

不能指望一开始就构建基础平台。

筑巢引凤,这不大可行。

3、谈系统的扩展性一般都是在谈什么?

对于业务架构的可扩展性来说,系统如何能够做到柔性可扩展,是衡量一个系统架构设计好坏的金标准。

什么是业务系统,说的简单一些业务系统就等于模块+关系。模块拆分好了,关系梳理好了,往往一个业务系统架构也就定义清楚了。但是一个业务系统好不好还有一个非常关键的指标,那就是:系统的可扩展性和功能的复用性是不是很好,因为这关系到了整个系统的生命周期。

系统的可扩展性好,本质上是系统中各个模块的依赖关系清楚,系统中的各个模块不是复杂和混乱的,而是模块和模块之间关系清楚,很少有相互调用,很少有双向调用。

系统的复用性好,本质上系统的逻辑划分清楚,功能模块能够做到粒度适中,通用功能能够合理整合,给各个业务功能提供调用。

问:又看了一遍 如何提高代码的扩展性 的分享,里面提到你们团队会做概要设计。能分享一下概要设计抓的点是哪些吗?需要产出哪些方面的文档?

接口层

用户接口层负责向用户显示信息和解释用户操作,这里的用户可能是:真实的用户、程序、自动化测试和批处理脚本等等

领域层

领域层的作用是实现核心业务逻辑,通过各种校验手段保证业务的正确性,领域层主要体现领域模型的业务能力,它用来表达业务概念、业务状态和业务规则。(功能核心能力,供接口层调用)

数据层

列出MySQL数据结构的变化,DDL语句

4、如何支持系统的可扩展?

要支持系统的扩展,架构设计上必须能够控制系统的复杂度,面对新需求,要让系统复杂度做加法而不是乘法,从而保证系统的调整是局部化和最小化的。

所以,业务架构扩展性的本质是:通过构建合理的模块体系,有效地控制系统复杂度,最小化业务变化引起的系统调整。

那如何打造一个合理的模块体系呢?

具体的架构手段就是按照业务对系统进行拆分和整合:通过拆分,实现模块划分;通过整合,优化模块依赖关系。

这里记录,我每周碰到的,或想到的,引起触动,或感动的,事物的思考及笔记。不见得都对,但开始思考记录总是好的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序架道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档