架构师寄语:请学会正面分析问题
程序员文章站
2022-07-03 16:21:44
...
在这样一个IT世界里,作为系统架构师,经常要对各种产品、框架等等进行对比分析和评判。我们应当如何评判这些东西呢?
我发现现在一个很流行的做法就是把用户量和使用情况作为依据,这让我想起来一本很出名的书《走出思维的误区》,我觉得很多人的思维都走进了一个误区。
比如,我问,Tomcat好不好用?数据库连接池DBCP好不好?
很多人都会说,Tomcat很好用啊,很多人都在用啊。DBCP很好用啊,Tomcat默认的连接池就是用的它啊。
问题在哪里呢?
问题是“很多人都在用Tomcat”和“Tomcat默认的数据库连接池”是一个“果”,但是不是“因”。我问问题想知道的是“(1)Tomcat好不好安装?(2)Tomcat部署应用好不好部署?(3)Tomcat启动快还是慢?(4)Tomcat出了问题好不好排查?...”,DBCP的问题是“(1)DBCP好配置吗?(2)DBCP在高并发下性能怎么样?(3)DBCP能自动关闭长时间不使用的连接吗...”
所以我问的问题,需要的是一个正面的回答,有多少人在用,并不是针对我问题有效的回答。而架构师要选择一个开源框架和一个组件库,面对技术选型的工作,最重要的一点,也是列出自己所关心的维度,正面分析一个框架或组件库在这些维度上的表现情况。而不是“倒因为果”,拿结果来反证问题。“很多人都用Tomcat”和“Tomcat默认的数据库连接池”或许是因为Tomcat和DBCP好用,也或许是其它原因。因为它们之间并不是充分条件,也不是必要条件。
再有,从技术上分析,淘X和腾X的支付是否安全?手机银行是否安全?(我是做密码技术的)
从上面的例子可以看到,分析的时候,我关心的是什么?这需要冷静的分析,“我的身份会不会被假冒?我的信息会不会被窃--听?钱会不会莫名其妙的丢掉?”
你要分析它们的安全维度“(1)身份认证怎么做的?会不会被人假冒身份?(2)数据传输是否机密,会否被人窃--听(3)数据传输过程中会不会被人篡改?有哪些措施来保护(5)使用者的敏感和隐私信息是否被保护?(6)整个系统都有哪些安全措施和安全设计?...”从这些维度的分析,得到一些数据,再根据问题中的“是否安全”去分析,究竟要保护哪些东西的安全性,再来看关注的安全维度、采取的安全措施是否和所保护的东西是相匹配的。
这样的分析,得到的结论是有意义和有价值的。而动辄说“很多人都在用”“应该是安全的”,大半属于从众、跟风。不应该看了商家宣传就说是它们安全的,然后看了一些安全杂志和专家的话就说是不安全的。要去了解信息,做自己的判断。
本文的目的,是在于说明,如何对问题正面的分析,也许,我得出的结论,是“Tomcat很好用”“DBCP很好用”“淘X支付在 * 金额上是安全的,腾X支付在*金额上是安全的,手机银行在*金融这个数量上是安全的”,也许得到一些另外的结论。也许,会得到一些不是很正确的结论,因为个人的知识面有限、了解到的信息是不完整的(但是可以努力去获取信息),结论也会随着了解的逐步深入和知识的增加而逐步修正。
也许,我的分析维度中有一项“有多少人在用?大家评价如何”作为一个维度,占到一定的分值。但这只是一个维度而已。
什么也代替不了客观、冷静的分析。分析和判断并不难,只要你努力去做。
我发现现在一个很流行的做法就是把用户量和使用情况作为依据,这让我想起来一本很出名的书《走出思维的误区》,我觉得很多人的思维都走进了一个误区。
比如,我问,Tomcat好不好用?数据库连接池DBCP好不好?
很多人都会说,Tomcat很好用啊,很多人都在用啊。DBCP很好用啊,Tomcat默认的连接池就是用的它啊。
问题在哪里呢?
问题是“很多人都在用Tomcat”和“Tomcat默认的数据库连接池”是一个“果”,但是不是“因”。我问问题想知道的是“(1)Tomcat好不好安装?(2)Tomcat部署应用好不好部署?(3)Tomcat启动快还是慢?(4)Tomcat出了问题好不好排查?...”,DBCP的问题是“(1)DBCP好配置吗?(2)DBCP在高并发下性能怎么样?(3)DBCP能自动关闭长时间不使用的连接吗...”
所以我问的问题,需要的是一个正面的回答,有多少人在用,并不是针对我问题有效的回答。而架构师要选择一个开源框架和一个组件库,面对技术选型的工作,最重要的一点,也是列出自己所关心的维度,正面分析一个框架或组件库在这些维度上的表现情况。而不是“倒因为果”,拿结果来反证问题。“很多人都用Tomcat”和“Tomcat默认的数据库连接池”或许是因为Tomcat和DBCP好用,也或许是其它原因。因为它们之间并不是充分条件,也不是必要条件。
再有,从技术上分析,淘X和腾X的支付是否安全?手机银行是否安全?(我是做密码技术的)
从上面的例子可以看到,分析的时候,我关心的是什么?这需要冷静的分析,“我的身份会不会被假冒?我的信息会不会被窃--听?钱会不会莫名其妙的丢掉?”
你要分析它们的安全维度“(1)身份认证怎么做的?会不会被人假冒身份?(2)数据传输是否机密,会否被人窃--听(3)数据传输过程中会不会被人篡改?有哪些措施来保护(5)使用者的敏感和隐私信息是否被保护?(6)整个系统都有哪些安全措施和安全设计?...”从这些维度的分析,得到一些数据,再根据问题中的“是否安全”去分析,究竟要保护哪些东西的安全性,再来看关注的安全维度、采取的安全措施是否和所保护的东西是相匹配的。
这样的分析,得到的结论是有意义和有价值的。而动辄说“很多人都在用”“应该是安全的”,大半属于从众、跟风。不应该看了商家宣传就说是它们安全的,然后看了一些安全杂志和专家的话就说是不安全的。要去了解信息,做自己的判断。
本文的目的,是在于说明,如何对问题正面的分析,也许,我得出的结论,是“Tomcat很好用”“DBCP很好用”“淘X支付在 * 金额上是安全的,腾X支付在*金额上是安全的,手机银行在*金融这个数量上是安全的”,也许得到一些另外的结论。也许,会得到一些不是很正确的结论,因为个人的知识面有限、了解到的信息是不完整的(但是可以努力去获取信息),结论也会随着了解的逐步深入和知识的增加而逐步修正。
也许,我的分析维度中有一项“有多少人在用?大家评价如何”作为一个维度,占到一定的分值。但这只是一个维度而已。
什么也代替不了客观、冷静的分析。分析和判断并不难,只要你努力去做。
推荐阅读