首页 > 其他分享 >架构设计的外部适应性

架构设计的外部适应性

时间:2023-06-03 22:00:40浏览次数:43  
标签:尝试 架构设计 逻辑 封装 外部 业务 适应性 下线

从架构设计的角度来说,我们要把大多数的尝试尽量封装到一个小的领域内。这个时候,多次的业务尝试不会随着时间而导致混乱,削减技术体系的外部适应性。做到这点,下面的这些架构原则非常重要。

第一,单一职责,指的是要把每个业务尝试尽量封装到一个单一模块中。好处是一旦尝试失败,就可以迅速把业务逻辑下线,避免影响整体的复杂性。

业务尝试在 90% 的情况下,都是不符合预期的。在这种情况下,符合单一职责的设计很容易下线旧逻辑。这么做很重要,你接手一个烂摊子的时候,肯定恨死那些不下线无效逻辑的前辈们了。打个比方:不下线失效逻辑,就是一个不冲厕所的行为!

第二,最小依赖,指的是整体架构设计要保障大多数业务尝试可以在业务层完成。如果每个业务方的需求都会侵入到底层的逻辑,那么每次尝试都会变成跨团队合作,这种架构会大幅降低业务尝试的速度。

第三,最小数据共享。一个正在尝试中的业务应该尽量减少与其他业务模块的数据交换,尤其是输出,这样才能最小化它的爆炸半径。否则该业务尝试的数据模型会污染到其他业务,在尝试失败之后对其他业务的影响也会很难剥离。

第四,最小暴露,指的是在业务尝试期接口不对部门或企业外部暴露,包括 API、数据共享、事件、消息流等一切对外界造成影响的通信机制。

战略级项目应该在全公司层面明示,而且要维持足够长的时间。

大多数时候,保护技术体系长期的外部适应性和实现当下的需求一样重要,如果不是更重要的话。

当然,还提到技术岗供给压力导致技术人员的稳定性差和设计短视的问题。想减少这种问题,你作为架构师可以:

第一,提升对封装能力重要性的认知。你要帮每个做技术的同学认识到:我们都要有有效封装业务尝试的能力,这个能力最终会转化为提升技术的外部适应性的能力。这是一个技术人员的基本功,从你写代码的第一天就需要。只不过随着你的职业发展,你从封装代码逻辑,到了封装业务逻辑,最后到了封装业务尝试。一个程序员在日常工作中忽略这方面的能力训练,其实是个不明智的选择。

第二,建设复杂度控制机制。在这里,设计评审很关键。业务尝试也要有设计评审,而评审的一个固定环节就是逻辑、数据和接口的最小爆炸半径的设计。

第三,推行最小必要架构原则。在公司范围内推行奥卡姆剃刀(Occam’s Razor)原则。任何增加功能、引入复杂性的设计,都要做一个正式的评审,而简化的行为则不需要。

一个架构师要拥有的业务理解的能力,是基于自己对业务深度认知之后的技术洞察,然后通过这个技术洞察来推动业务发展的能力。



标签:尝试,架构设计,逻辑,封装,外部,业务,适应性,下线
From: https://blog.51cto.com/key3feng/6408980

相关文章

  • 系统架构设计师笔记第3期:软件测试
    软件测试是指在开发过程中对软件系统进行验证和评估的过程。它是一种系统性的活动,旨在发现软件中的缺陷、错误和问题,以确保软件满足预期的需求和质量标准。软件测试涉及执行软件的各种功能和操作,以验证其正确性、可靠性、安全性和性能。软件测试的主要目的是:发现软件中的缺陷和错误......
  • Istio 实现 ext-authz 外部扩展鉴权以及对接基于 k8s 的微服务
    Istio实现ext-authz外部扩展鉴权以及对接基于k8s的微服务可以实现基于redis的token鉴权以及实现rbac鉴权。转载请注明来源:https://janrs.com/vrsrIstio的外部鉴权本质是基于Envoy实现的,直接看Envoy的代码,链接地址:点击自动跳转Isio官方的Demo代码,链接:点击自动跳......
  • Istio 实现 ext-authz 外部扩展鉴权以及对接基于 k8s 的微服务
    Istio实现ext-authz外部扩展鉴权以及对接基于k8s的微服务可以实现基于redis的token鉴权以及实现rbac鉴权。转载请注明来源:https://janrs.com/vrsrIstio的外部鉴权本质是基于Envoy实现的,直接看Envoy的代码,链接地址:点击自动跳转Isio官方的Demo代码,链接:点......
  • 浅谈字符集GB18030, GBK, GB2312, Unicode的适应性范围
    目前在中文世界里,计算机系统发展非常快速,传统的Windows已经逐渐跟不上国产化,如国产安卓系统,华为欧拉鸿蒙等系列,国产Linux系统等。国产化普遍支持GB18030!注:GB18030标准符合性认证一度属于国家强制性标准,由中国电子技术标准化研究所(CESI)认证中心进行授权认证。那么这些字符集......
  • QA|外部调用类方法总报错missing 1 required positional argument:'self'|UI自动化
    外部调用类方法总报错missing1requiredpositionalargument:'self' 原因:实例化这个类实例化错了,少了括号()解决:改成如下就可以了 参考学习:调用类方法时报错:missing1requiredpositionalargument:'self'-hehehe_wy7-博客园(cnblogs.com) ......
  • 外部触发ADC配置
    ADC通道的转换可以由外部事件触发,设置了ADC_CTLR2寄存器的EXTTRIG或JEXTTRIG位,则可分别通过外部事件触发规则组或注入组通道的转换。注:当外部触发信号被选为ADC规则或注入转换时,只有它的上升沿可以启动转换。/*ADC初始化部分代码*/ADC_InitStructure.ADC_ExternalTri......
  • Android平台如何实现外部RTSP|RTMP流注入轻量级RTSP服务模块(内网RTSP网关)
     技术背景今天分享的是外部RTSP或RTMP流,拉取后注入到本地轻量级RTSP服务模块,供内网小并发场景下使用,这里我们叫做内网RTSP网关模块。内网RTSP网关模块,系内置轻量级RTSP服务模块扩展,完成外部RTSP/RTMP数据拉取并注入到轻量级RTSP服务模块工作,多个内网客户端直接访问内网轻量级RTSP......
  • Android平台GB28181设备接入模块如何对接NV21、YV12、RGB、YUV等外部数据
    技术背景我们在对接Android平台GB28181设备接入模块的开发者时,遇到这样的场景,除了Android设备(如执法记录仪、智能安全帽等)自带的camera或camera2前后摄像头数据外,还有些场景是需要外部编码前或编码后数据,比如对接OTG类似的外置数据源,如NV12、NV21、YV12、RGB或YUV等格式,这里做个简......
  • SimpleAdmin手摸手教学之:项目架构设计2.1
    一、说明在2.0的架构设计中引用了插件式开发的概念,将功能模块插件化,以实现更清晰的目录结构,更灵活的解决方案,减少代码的臃肿性。随着2.0版本的使用,也随之暴露出一些问题,之前讲究的插件化并没有完全的实现插件化,我理想的插件化应该是需要某个业务或者功能模块,直接引用该项目既可,不......
  • RHEL7-NAT模式连接外部网络
     通过VMware成功安装RHEL7服务器后,除了使用Bridge桥接模式连接外部网络外,还可以使用NAT模式连接外部网络前提:建议关闭防火墙及selinux。具体做法参考:https://blog.51cto.com/ztj1216/63445921.配置虚拟机RHEL7NAT模式连接外部网络1.1.设置虚拟机网络为NAT方式1.2. 查看Windows端......