【基础架构】——软件系统复杂度的来源(低成本、安全、规模)
目录
- 一、软件系统复杂度的来源之低成本
- 二、软件系统复杂度的来源之安全
- 2.1、功能安全
- 2.2、架构安全
- 2.3、规模
- 2.3.1、功能越来越多,导致系统复杂度指数级上升
- 2.3.2、数据越来越多,系统复杂度发生质变
本文来源:极客时间vip课程笔记
一、软件系统复杂度的来源之低成本
-
当我们设计“高性能”“高可用”的架构时,通用的手段都是增加更多服务器来满足“高性能”和“高可用”的要求;而低成本正好与此相反,我们需要减少服务器的数量才能达成低成本的目标。
-
低成本本质上是与高性能和高可用冲突的,所以低成本很多时候不会是架构设计的首要目标,而是架构设计的附加约束。也就是说,我们首先设定一个成本目标,当我们根据高性能、高可用的要求设计出方案时,评估一下方案是否能满足成本目标,如果不行,就需要重新设计架构;如果无论如何都无法设计出满足成本要求的方案,那就只能找老板调整成本目标了。
-
低成本给架构设计带来的主要复杂度体现在,往往只有“创新”才能达到低成本目标。这里的“创新”既包括开创一个全新的技术领域(这个要求对绝大部分公司太高),也包括引入新技术,如果没有找到能够解决自己问题的新技术,那么就真的需要自己创造新技术了。
-
类似的新技术例子很多,我来举几个。
NoSQL(Memcache、Redis 等)的出现是为了解决关系型数据库无法应对高并发访问带来的访问压力。
全文搜索引擎(Sphinx、Elasticsearch、Solr)的出现是为了解决关系型