详细探讨了康威定律在软件设计中的重要性及其影响。康威定律指出,设计系统的组织会产生一个与其沟通结构相似的设计。作者通过多个实例展示了不同团队结构如何影响架构设计,包括前端与后端团队的协作、技术栈分层、以及跨职能团队的架构影响。文章介绍了逆康威操作的概念,即通过调整组织结构来实现期望的架构目标,并探讨了领域驱动设计和微服务架构如何与康威定律协同工作。最后,提醒读者在设计架构或 […]
详细探讨了康威定律在软件设计中的重要性及其影响。康威定律指出,设计系统的组织会产生一个与其沟通结构相似的设计。作者通过多个实例展示了不同团队结构如何影响架构设计,包括前端与后端团队的协作、技术栈分层、以及跨职能团队的架构影响。文章介绍了逆康威操作的概念,即通过调整组织结构来实现期望的架构目标,并探讨了领域驱动设计和微服务架构如何与康威定律协同工作。最后,提醒读者在设计架构或 […]
本视频探索了事件溯源这一强大概念。通过事件溯源,系统不再只存储当前状态,而是记录每个状态变化作为事件。这允许我们能够追溯某一特定时间点的状态,并确保数据完整性。视频讲述了如何通过分析事件序列来优化审计和分析,同时解决了并发问题,确保系统的松散耦合。还介绍了乐观并发技术、状态快照、最终一致性等关键概念,以及事件溯源如何与CQRS和DDD结合使用,以实现更加高效和可靠的系统架构 […]
本视频详细讲解了微服务架构的基本概念及其与传统单体架构的对比。通过探索什么不是微服务(即传统的单体架构),视频揭示了单体架构可能导致的复杂性和维护难题。随后,介绍了模块化单体架构如何通过将大型系统划分为更小的子系统来提高代码管理性。最终,演变成微服务体系,它们作为独立的进程运行,支持独立更新、独立扩展、和更高的故障隔离。视频进一步探讨了微服务间通信、API边界的稳定性以及网 […]
在这段视频中,我们详细对比了两个流行的Java框架,Spring Boot和Quarkus。Spring Boot作为一个久经考验的框架,以其自动配置和庞大的生态系统为Java开发者提供了简单且高效的开发体验。另一方面,Quarkus则为容器优化和云原生应用设计,具有更快的启动时间和更高的资源利用效率。视频还比较了两者在构建时间和运行时性能上的差异,强调了Quarkus通过 […]
本视频详细介绍了领域驱动设计(DDD)的关键概念,包括统一语言、聚合根、领域事件、实体、值对象以及仓库等术语。DDD 的核心并非技术细节,而是强调软件设计的语言和结构应与业务领域对齐,从而构建出领域专家与技术人员都能理解的丰富模型。值对象(如颜色)应当是不可变且基于它们的值来比较相等性。实体(如轮胎)则通过唯一ID标识,即使属性相同也视为不同实例。领域事件表示领域中重要发生 […]
视频解释了 CQS(命令查询分离)和 CQRS(命令查询职责分离)这两个设计原则。CQS 原则认为一个方法应该专注于执行读取或写入操作之一,而不是同时进行;例如,应将队列操作分为检查和删除两个独立的方法。CQRS 进一步将这种分离应用到更大的架构中,将读取和写入操作视为独立的子系统,甚至可能拥有不同的数据模型。这种分离使得系统的不同部分可以独立优化,如通过缓存 […]
视频地址:https://www.bilibili.com/video/BV1DS411F76Q/ 探讨了软件开发中不同的架构模式和它们的演进,从最基础的分层(MVC)架构到更先进和灵活的设计如端口和适配器(六边形架构),洋葱架构,以及整洁架构。文章详细说明了如何通过反转数据访问层和业务逻辑层的依赖关系来实现解耦,并介绍了领域驱动设计(DDD)在构建核心业务对 […]
👉目录 1 架构图的目的 2 怎样的架构图是好的架构图 3 什么时候画架构图 4 架构图分类 5 如何画架构图 6 业务/产品架构图 7 应用架构图 8 技术架构图 9 代码架构图 10 数据架构图 画架构图是架构师的一门必修功课。 对于架构图是什么这个问题,我们可以按以下等式进行概括: 架构图 = 架构的表达 = 架构在不同抽象角度和不同抽象层次的表达,这是一 […]
随着项目发展,现有模块不再符合需求,重构后端服务必要性拉满。👨💻 重构过程中,明确重构目标如引入新功能、性能提升、增强系统可用性等是前提条件,此外也必须考虑功能一致性和数据一致性这两大关键问题。 后台重构可以根据服务的不同需求划分为以下几类: 1️⃣逻辑模块重构:专注于优化代码逻辑和业务流程。 2️⃣存储模块重构:改进数据存储和检索机制。 3️⃣逻辑与存储模块联合重构:同 […]
我们在《系统设计 | 如何表达技术架构?(规划篇)》中讨论了一个新的项目启动时如何表达技术架构,类似的我们还需要在敏捷项目的迭代前进行更细致的技术方案设计。 进入迭代的技术方案可以类比为瀑布模型中的详细设计,其目的是为了让迭代中的具体开发工作顺利进行。 本文,整理了一些日常项目上进入迭代前的技术方案输出物。 迭代技术方案的逻辑 迭代技术方案和规划类的技术方案不同,为了让迭代 […]
在多年软件开发的经验中,我看过各种各样的架构图和技术方案。其中不乏看到非常精美架构图,以及非常详细的技术方案。 非常遗憾的是,目前没有流传开的标准来规范架构图的绘制,不同公司架构文档风格也五花八门。如果说有 UML 这类图例标准,也非常古老了,大部分人也不怎么使用 UML 来设计架构图。 这会让很多架构师非常困惑,不知道如何上手,参考哪些材料来完成这类工作。 本文,整理了一 […]
软件系统是通过软件开发来解决某一个业务领域或问题单元而产生的一个交付物。而通过软件设计可以帮助我们开发出更加健壮的软件系统。因此,软件设计是从业务领域到软件开发之间的桥梁。而DDD是软件设计中的其中一种思想,旨在提供一种大型复杂软件的设计思路和规范。通过DDD思想可以让我们的业务架构、系统架构、部署架构、数据架构、工程架构等都具备高扩展性、高维护性和高测试性。 但是落地DD […]
这篇文章是软件架构编年史(译)的一部分,这部编年史由一系列关于软件架构的文章组成。在这一系列文章中,我将写下我对软件架构的学习和思考,以及我是如何运用这些知识的。如果你阅读了这个系列中之前的文章,本篇文章的的内容将更有意义。 一个系统的架构是它的高层级的视图,是系统的大局观,是粗线条的系统设计。架构的决策就是系统结构上的决策,这些决策影响着全部代码,决定了系统中其它部分的基 […]
这篇文章是软件架构编年史(译)的一部分,这部编年史由一系列关于软件架构的文章组成。在这一系列文章中,我将写下我对软件架构的学习和思考,以及我是如何运用这些知识的。如果你阅读了这个系列中之前的文章,本篇文章的的内容将更有意义。 EBI 架构(Entity-Boundary-Interactor,实体-边界-交互器)架构因为 Robert C. Martin 关于整洁架构(我会 […]
在软件工程中,术语管理是一个极其冷门但是却非常重要的话题。 在很多项目上开发人员和业务人员之间的讨论有很大一部分是词汇的误解造成的,即使在技术人员、业务人员内部讨论也存在同样的情况。例如,某电信运营商项目,话费套餐属于商品还是产品这个问题经常被拿出来讨论,直到找到了总部给出的规范性文件才定性下来。 越是专业的软件系统对专业术语的定义需求越发迫切,这些定义往往需要极其精确,甚 […]
CRUD (1)Event Sourcing (1)graphql (1)id (1)quarkus (1)rest (1)Spring Boot (1)商品 (1)多对多 (1)子域 (1)字符集 (1)客户端心跳 (1)并发 (1)应用架构图 (1)康威定律 (1)异步复制 (1)微服务架构 (1)技术方案 (2)技术架构 (1)技术架构图 (1)技能 (1)持续集成 (1)支撑域 (1)故障恢复 (1)数据架构图 (1)日记 (1)服务发现 (1)服务治理 (1)服务注册 (2)核心域 (1)泄漏 (1)洋葱架构 (1)深度 (1)源码剖析 (1)熔断 (1)状态 (1)生态 (1)画图工具 (1)研发团队 (1)线程 (2)组织架构 (1)编排 (1)编码 (1)耗时 (1)视频 (9)读写分离 (1)软件设计 (1)连接 (1)通用域 (1)集群化 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang