模式:通过业务能力上下文分解

作者 转载

Pattern: Decompose by business capability Context You are developing a large, complex application and want to use the microservice architecture. The microservice architecture structures an application as a set of loosely coupled services. The goal of the ... 阅读更多

复杂性应对之道——抽象

作者 转载

写本文的原因是,抽象是软件设计中最重要的概念。但抽象这个概念本身又很抽象,我们有必要花一些时间深入理解抽象、抽象的层次性,以及不遗余力的不断提升我们抽象能力。 抽象的力量 没有抽象思维,就没有人类光辉灿烂的现代文明。 原始人看到一片树林,不会给它们一个名字,比如叫“松树”。他们会给每一棵树取一个独特的名字,可能叫“silisiba”。原始人只知道某棵具体的树。 随着意识水平的发展,人类开始有意识地将具有相同特征的事物归并到一起,从“silisiba”到“松树”——到“树木”——到“植物”——到“物质”,从... 阅读更多

微服务划分的姿势

作者 转载

我们知道微服务是一种理念,没有确切的定义和边界,好比设计原则,是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话,具体问题需要具体分析,所以这篇文章谈到的划分也不是绝对标准,仅供参考。 有人说微服不难,难的是服务的划分,虽然我持保留意见。但是从侧面也反应了划分具有一定的困难。这里的矛盾在于粒度。如果粒度太大了,分和不分似乎都差不多;如果粒度太小了,聚合、发布、调用链、调试等都是坑。 以下谈到的拆分是前人经验的总结,我罗列了三种行家的拆分姿势,每个的的经验和视野不同,各有偏颇,我在这里更多的是谈共... 阅读更多

用于软件架构的 C4 模型

作者 转载

关键要点 1. 由于向敏捷转型,软件架构图的使用规模已经大幅缩减。即使有在使用软件架构图,它们往往也混淆不清。2. C4 模型由一系列分层的软件架构图组成,这些架构图用于描述上下文、容器、组件和代码。C4 图的层次结构提供了不同的抽象级别,每种抽象级别都与不同的受众有关。3. 为了避免出现含糊不清的情况,可以在图中包含足够数量的文本和关键的图例。 软件架构图是一种非常好的表达方式,可以用它们来表达你将如何构建一个软件系统(预先设计)或者现有的软件系统是如何工作的(回顾文档、知识分享和学习)。然而,你所看... 阅读更多

架构蓝图–软件架构 “4+1” 视图模型

作者 转载

引言 我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。有时架构并不能解... 阅读更多

软件架构图的艺术

作者 转载

要点 1. 设计软件架构图并非一件轻而易举的事情,即使是很简单的一个架构图也可能会出错。有意义且具备一致性的架构图有助于为不同的利益相关者澄清事实,并达成共识。2. 在大多数情况下,问题的根源并不在于是否使用了一门有效的架构描述语言(比如 UML),而在于低估了架构图的重要性,转而依赖不恰当或不具备一致性的指导性原则,或者缺乏架构思维。3. 在创建架构图的过程中,试着混合使用自动生成的图元和手动创建的图元,这样可以减少工作量,并且可以表达出各方面的关注点,覆盖到系统的各个层面。4. 系统不断地发生演化,... 阅读更多

微服务的历史与陷阱

作者 转载

作者: 李运华 微服务是近几年非常火热的架构设计理念,大部分人认为是MartinFlower提出了微服务概念,但事实上微服务概念的历史要早得多,也不是Martin Flower创造出来的,Martin只是将微服务进行了系统的阐述。不过不能否认Martin在推动微服务火热起来的作用,微服务能火,Martin功不可没。 参考维基百科英文版,我们简单梳理一下微服务的历史: 2005年:Dr. PeterRodgers在Web ServicesEdge大会上提出了“Micro-Web-Services... 阅读更多