笔记:Driving Architectural Simplicity - The Value, Challenge, and Practice of Simple Solutions

感觉这篇文章对于为什么,以及如何简化架构说的很透。
开篇:
Key Takeaways
Simple architectures are easier to communicate, build, deploy, operate, and evolve.
Architectural simplicity is not easily encapsulated by one type of model or practice. Several practices can be applied in combination to drive simplicity.
Agile practices stress simplicity. Architectural complexity can occur based on many factors such as design ability and focus, technology evolution, and organizational structure.
Defining simple architectures is difficult and takes a concerted, continuous effort.

Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better. - Edsger W. Dijkstra (1984)

简化架构的好处(Benefits of Architectural Simplicity ):
First, simple architectures are easier to communicate. Communication includes both documentation and comprehension. A simple architecture can be documented with a smaller model and fewer drawings/annotations which would lead to improved comprehension by stakeholders. Comprehension is critical for shared understanding, which some define as the architecture (from Martin’s Fowler’s seminal Who Needs an Architect?). A shared understanding is critical to maintaining alignment across teams and team members, and ensuring an efficient implementation.
Second, simple architectures are often easier to implement. They have fewer moving parts, fewer interactions, and fewer opportunities for failure. However, this isn’t always the case. Sometimes it may take more time to implement a simple architecture given the number of try/fail/learn iterations that go into the process of identifying a truly simple design.
Third, simple architectures are easier to deploy and operate. Fewer moving parts aligns to a more straightforward deployment. Then once in production, simple architectures are more easily scaled and monitored. Another great quote from Edsger Dijkstra is "Simplicity is a prerequisite for reliability."
Fourth, simple architectures are easier to modify and evolve. Simplicity is a key principle of Agile practices and a rule for XP development. Simple architectures allow the development team to be more productive since there is less complexity to track and fewer points of impact when making changes.

什么是架构简化(What is Architectural Simplicity? ):
Strive for the Simplest Option
Apply YAGNI – You Aint’t Gonna Need It
Practice Parsimony
Avoid Premature Optimization

复杂的原因(Reasons for Complexity)
Complexity Sells
Developing is Fun
Keeping Up With The Joneses
Simple is Hard
Organizational Structure

实施简化的建议(Recommendations for Driving Architectural Simplicity )
Design Up Front
Design Throughout Delivery
Ask Questions, Often
Understand Decision Tradeoffs
Create Proof of Concepts
Communicate Effectively and Often
Embrace Minimum Viable
Make Architecture Everyone’s Responsibility
Be Continuously Obsessive

这篇文章写的很容易理解,很多部分其实你看我整理的KeyNote就知道是什么东西了,如果想详细了解,文章链接如下:
https://www.infoq.com/articles/driving-architectural-simplicity?utm_source=infoq&utm_medium=popular_widget&utm_campaign=popular_content_list&utm_content=homepage

时间: 2024-08-01 21:39:39

笔记:Driving Architectural Simplicity - The Value, Challenge, and Practice of Simple Solutions的相关文章

The Joy of Clojure – Clojure philosophy(1)

The Clojure way Simplicity, 简约 It's hard to write simple solutions to complex problems. But every experienced programmer has also stumbled on areas where we've made things more complex than necessary, what you might call incidental complexity as oppo

How to Quickly Implement Nginx-based Website Monitoring

Introduction: In this article, we dive into a scenario that discusses a rapidly growing business with an application that provides users with e-commerce data statistics web services. The application adopts the common distributed Nginx + app architect

敏捷建模和极限编程(XP)

Agile Modeling and eXtreme Programming (XP) 敏捷建模和极限编程(XP) Agile Modeling (AM) is a practices-based software process whose scope is to describe how to model and document in an effective and agile manner.  On the AM home page I state that one of the go

c语言-TCP/IP socket编程(in c) 美国多纳霍这本书中。

问题描述 TCP/IP socket编程(in c) 美国多纳霍这本书中. 他开始的practial.h是什么呀?http://ask.csdn.net/# 解决方案 http://cs.ecs.baylor.edu/~donahoo/practical/CSockets2/code/code/Practical.h 其他相关源代码:http://cs.ecs.baylor.edu/~donahoo/practical/CSockets2/textcode.html 解决方案二: TCP/IP_

[原创]W2k Driving 学习笔记(二)使用GCC创建 Windows NT 下的内核DLL

         再温习<<Windows 2000 Driving>>分层驱动程序一章的时候,看到了关于紧耦合 驱动连接方式,这种方式不依赖于I/O管理器的串联,而是直接调用内核例程,这样可以大 大的提高驱动的执行效率.      为了实现这样一种功能,必须提供一种类似于在用户模式中DLL的机制,只不过该"DLL" 是加载到内核中的.其实Windows NT 内核本身早就利用了这样机制,比如Hal.dll.ntoskrnl.exe和某些类驱动程序等,他们分别为

笔记:The Art of Crafting Architectural Diagrams

讲如何画好架构图,写的不错,平时需要写方案.做架构的人正好可以借鉴一下. Key Takeaways Designing architectural diagrams might not be an easy task; it can be tricky or error prone, even for the simplest ones. Creating consistent and meaningful diagrams brings clarity and consensus acros

读书笔记:关于适当的微服务架构的看法(Perspective on Architectural Fitness of Microservices)

微服务现在很火,但是怎样才能建设合适自己的微服务架构呢,这篇文章进行了很好的实践也给了实用的建议. Key Takeaways Microservices are not a panacea; they have their place in modern architecture, but just not any place. Understanding the business domain is vital for assessing whether a microservices-ba

[原创]W2k Driving 学习笔记(一)内核线程及同步

[大体流程] Win32与Kernel交互,从User层向内核发送2个请求: 0 IOCTL_Start_Thread : 从内核新建一个线程,最多建立MAX_THREAD_NUM个线程: 1 IOCTL_Stop_Thread : 关闭刚才建立的所有线程: 每个线程做同样的事,每次将变量Count增加1,使用一个FAST_MUTEX来同步加1操作. 线程过程如下,没什么特别说明的,其中为了照顾偶的眼球眨动频率,特地做了1s的延时. DDKAPI VOID CountThreadMain(IN

Oracle 日常应用笔记

简单整理oracle日常应用笔记. 1.采用excel表格中的数据直接粘贴数据库记录中,默认会在后面加一个空格"",操作完成后一定要记得对空格匹配然后修改一下. 2.查询数据库里的所有表结构, 采用select * from dba_tables(sys登录): 查看某个用户所拥有的表:select * from all_tables WHERE owner='SCOTT' ; 或者 SELECT * FROM DBA_TABLES WHERE OWNER='SCOTT'; 3.上午在