根据个人的工作经验,聊聊个人的观点.作为一个Web 2.0 网站架构师需要的一些基本的知识和能力,既然是个人看法,难免有失偏.我个人从事WEB2.0方面的工作其实也是很短,总结了下在工作中遇到的问题。
先谈谈作为一个WEB架构师的能力方面有什么样的需求:
系统的规划能力(能把撑整系统的整体框架,系统的逻辑分布,物理布署,可扩展性)
产品的策划能力(Web 2.0 本质上是以Web 作为平台的业务应用)
如果不真正了解你的业务,不了解用户的核心需求,不了解你目标客户的典型行为,是很难做好网站的。从这个角度来讲,一个Web 架构师首先必须是一个出色的产品经理。大多时候,我们只要做到业务技术领先就足够了,一味地追求技术的先进性反倒会深陷泥潭。越简单的越清晰,越能解决问题。
在技术和业务之间找到一个平衡,也就意味着必须明白整个业务核心的竞争力在哪?目标人群基本诉求在哪?然后选择最低成本的技术来实现业务需求,但是反过来,又必须适当地为业务发展保留适当的平台空间。 技术是因为业务的现实而存在.
良好的用户体验/设计更好的交互
不管是用什么技术来现实界面操作上的良好用户体验,最起码对于用户的形为习惯,用户的操作爱好,及良好的功能导航需要一个整体的归划。至于用什么技术来现实,那是在技术层面的问题了。
在技术实现层面,在系统的开发初期要做一个良好的规划, 比如,对于常见的用户提示信息,功能提示信息等,用AJAX来现实无刷新技术,这个技术对于程序员来说有很多种方式,但到底用哪一种呢?总需要有个规划,不能让程序员自己个人发挥,到头来所有的角本满天飞。不易控制,花在调试JS+CSS上的时间会比调试后台代码的时间多很多,如果有一个清晰的规划和规范,让程序员来执行实现,这样问题在后期会变的可控制性强很多。
必须要做到定义行之有效的规范和实现。
定义这些交互技术的目标是用最简单的方式实现最好的交互,这个也正是架构的职责所在。交互式处理框架(包括实现技术,和调用规范等)
合理的存储设计
web2.0最大的一个特点是用户的海量信息存储和交互信息的处理。对于存储必须有个良好的设计和扩展性规划,
数据的存储在用户并发操作时性能上的要求很明显,有可能会成为瓶劲,导致于整个网站的性能差,需要保证在存储上的扩展性,不然,以但瓶颈上来,用户数据无法拆分。。。。,但更重要的是不能过度设计,过度的设计会成为一个灾难。
在启动阶段,简单而直接的关系型数据库就可以了,你并不需要花费太多的精力去考虑,只要大致测算出一台服务器的容纳能力,然后估算出在到达容纳能力 上限的一半左右,你有多少的时间可以去折腾,如此而已,也真够了。简单地说,粗鲁一点,一台文件服务器,一台数据库服务器,只要别犯愚蠢错误,诸如文件只 有一个目录,完全不可拆分,如数据库只有一个表,耦合了太多逻辑等等,既然没有,那就放手去做。而在业务发展到一定规模,如已经有10 万用户,不考虑你的存储已经不可能了,此时我们会发现,诸多性能问题是因为不太合理的存储问题而导致,这个时候存储设计更多是应对性能而考虑的。而在发展 到更大规模,存储的可管理性和成本问题逐步成为关键。 对于架构师而言,不同时期选择不同的设计策略是尤为重要的。