互联网系统架构方案
互联网目前的问题
1、暴涨的人力成本与过低的投入产出中架构师要做什么。
2、大流量对系统的压力的解决方案
3、大数据检索难度解决方案
4、我们是否需要大数据系统,大数据系统能给我们做什么。
接下来的问题我会通过我在工作中实际的情况做一个回答。不一定对就是我的经历写出来跟大家分享一下。不喜请喷。
目前的互联网已经不是10年前你有一个好的想法找一两个程序员写个程序就可以获得成功的时代。
现在的互联网以至于未来的互联网一定是一个大投入,团队化的开发行为。这个时候团队的组织架构就非常重要了。10年前如果一两个程序可以搞定的事情。现在就需要20人以上的技术团队来完成相关的工作。同时工资应该也涨了10倍不止。这个时候就要有一个好的系统架构师来进行合理的技术与业务架构处理。如果架构师足够厉害。可以大大节省两部分的成本投入。
1、人力成本,你的架构决定你需要的什么人来开发你的系统。如果你的架构需要的是高级软件工程师才可以完成业务开发。那么我个人认为你的架构已经失败。高级软件工程师(真正的)一个公司的技术团队不应该超过10%。他们的作用更多的应该是指导开发检查代码更多的是来配合系统架构师来提供给低端开发人员更多的业务服务。而不是直接参与到开发活动。反过来你的架构仅仅需要初级程序员就可以完成业务的达成。这样一般可以节约60-70%的人力成本投入。
2、硬件成本,目前的互联网项目大多都是采用RPC协议进行开发。这样对硬件的要求很低可以大规模采用虚拟环境进行系统的安装部署。如果一个架构师架构完成的系统还需要对硬件有明确的要求。那么就会无形之中带来硬件相关的成本。如果硬件成本增加那么一定会带来带宽的需求。这样一来整体的成本就会增加很多。反之你的系统可以节约50%左右的硬件投入。
综上可以看出来系统架构师在一个互联网项目中的重要程度。应该在10年前大家都一致同意好的系统不是程序员写出来的一定是设计出来的。
但是一直以来架构师在很多公司里都是很尴尬的位置。大多公司将架构师当高程用。有的把架构师当产品经理用。
架构师的主要工作职责,通过我的工作间经历我总结只有一点
复杂问题简单化。包括复杂的业务,复杂的技术,复杂数据。
如果你是系统架构师你应该有能力将所有的业务最后都落到有序的增删改查上。你让一个刚毕业的学生来写增删改查应该很简单。让他写对账系统应该没戏。因为他们连什么是对账都不知道。还有一些公司让具体的开发人员要了解公司的业务。这个是最可怕的!首先我要说的是开发人员技术都搞不定的情况下有没有精力来了解业务;另外为什么要让开发人员了解业务呢?产品经理、系统架构师、技术总监、cto死绝了吗?,他们是必须了解业务的人啊。
目前的行情你要让你开发人员了解业务还能做开发价位应该不低。所以我个人认为合理的方案是开发人员就去开发好了。业务什么的就交给产品经理吧。系统架构师汇同产品经理、技术总监将业务做一个合理的拆分。不用将完整的业务交由新手来处理。让新手就做最简单的指令性的工作。至于性能就更不是应该有开发人员考虑的地方。如果公司对技术的投入只有1台服务器你就是神仙也优化不出来什么东西。如果是100台服务器我都不知道你要优化什么东西。目前市面上还有招优化mysql的优化redis的。这就比较尴尬了。如果这种成熟软件你还能优化出来比发行版本更好的性能我个人认为你不应该在目前的公司工作。这些东西一定是最优的情况下发布的。不会有太大的性能瑕疵。如果有那么架构师和技术负责人就不应该采用这项技术。
系统架构师在技术层面要做的并不是开发语言本身的东西。而是提供更多的第三方服务。然后汇同高程把第三方服务有机的封装在系统里。让底层开发人员用最常用的开发方式获取相关的服务。比如如果你在系统中使用kafka作为MQ中间件。你完全没有必要让你的开发人员知道kafka的原理是什么应该怎么安装部署。你需要明确的是kafka在你的架构的系统中怎么调用就可以同时明确说明业务需要调用kafka就可以了。告诉所有的开发人员学习的方案是什么。如果服务器资源足够多扔给开发人员几台服务器让他们自己玩一下。这样我相信你的开发人员会乐于提供工作。乐于帮你把你的系统架构落地。