IT技术博客大学习 共学习 共进步

网站架构的选择

崔凯,前端开发 2011-01-12 23:12:34 累计浏览 1,961 次
本机暂存

    最近的一个项目,在是否选用drupal的问题上,稍微有些纷争,也由此导出了这篇文章,希望对大家选择开源系统协作站点有所帮助。

    文章会比较冗长,先简要的说一下选择之前需要考虑的重点:

    需求 | 学习成本 | 开发速度 | 性能与后期维护 | 总结

需求

    我们需要什么功能?

    网站需要什么时间上线?

    开发需要什么样的人力资源?

    根据需求,来做评估。

    开源软件种类繁多,雨后春笋般涌现的开源框架都声称自己是最好的。

    面对老板推荐一个框架已经变成一件困难的事情,他们会有各种各样的问题:Webwork比Struts好在哪里?Hibernate和iBatis各自的优缺点是什么?OpenWFE比之jBpm有什么优势?drupal在国外很火啊,为什么不适合咱们?

    要确定一个框架时,往往需要将相似的框架都研究一遍,以便有充足的理由让老板相信我们的选择是最优的。但是,要将同类的框架都做一次研究比较并非易事,例如能用于开发企业网站的就有joomla、drupal、ee、dede、phpcms、MODx、typo3、甚至wordpress都可以用作于企业站点,这么多良莠不齐的东西,每种都有他们自己的设计思路和实现方案,决定选择哪一种,不可能在项目周期内占用太多的时间,而不深入预研又无法客观地作出评判,所以往往是熬红的双眼依然带着迷茫的目光。

    怎么办?

    从实际情况出发,手里有几杆枪?大家的能力如何?团队比较熟悉哪款框架?有必要选择这些开源程序吗?高度定制的系统,自己写是否更有效率?

    以drupal举例,我确信它是万能的,玩熟了之后可以适用于各种领域。

    drupal强大的扩展性,可以轻松调用社区开发的各种modules,论坛/博客/投票/社区/电子商务/短消息,应有尽有,给客户做网站的时候,他所要求的常用功能,基本上都可以很快找到。

    对于建站者来说,这种快速开发的神器,在和任何客户的战斗中都能发挥作用,为什么不大力推广?

    但是,我们需要吗?

    我们的博客已经采用了wordpress架构,我们的论坛已经采用了discuz积累了大量的数据,我们的招聘系统已经稳定上线录入了许多职位,而我们真正需要后台更新维护的“产品特性”“通栏图”“合作方式”“软件更新列表”,等等等等特色功能,都需要php人员学习drupal modules的开发方式,自行开发,需要前端人员学习他们的模版架构,再提交给php加入一个个的模块之内。

    种种需求拉下来,选择drupal是减轻了压力,还是加重了成本?

学习成本

    不懂,就会遇到各种各样的问题。

    如果一个项目的负责人选用了一种自己都不熟悉的开发平台,召集了一批不专业的 Drupal 平台二次开发者,除了 Drupal 本身的开发入门确实不容易以外,是否也要检讨一下自己到底应以什么标准选择开发平台呢?

    一个项目开发周期是多少?能留给大家的学习时间是多少?

    短时间内是否能够熟悉框架的真正魅力?

    使用drupal的view模块,确实可以非常容易的创建一个最新文章列表区块。

    但你是否要考虑代码冗余?是否有更好的方法来实现?

    任何一个框架的熟练掌握,都需要大量的时间。我们要最优性能,就要下功夫。

    这不是个人的战斗,大量的逻辑存储在数据库,导致整个团队的协作,需要适应新的开发模式,建站者学习drupal是为了建设上百个企业站点。

    我们半个团队出来学drupal只为了这一个站点,是否大材小用?

开发速度

    选择框架,或者开发框架,哪个更高效取决于要做的事情是什么。取决于开发者是否熟悉。

    框架没有好与坏的区别,问题在于是否适合。

    你的团队最擅长干什么,问他们一下再做决定。

    如果开发周期过长,学习成本过高,为什么不外包出去?

    专业的人做专业的事,互联网是高速迭代的过程,工作重点是什么?如何提高效率?

性能与后期维护

    性能和安全性一样,如果选择的是开源系统,只要跟着系统升级就是了。

    唯一的问题在于,升级常常会导致模块工作的异常。

    确保所有自定义的和第三方的模块(modules)与新升级的Drupal版本相匹配,是后期维护中比较大的一个问题。

    其他方面,在需求不明的情况下,我揣测一下领导的意图:

    用drupal的模版+多语言包,将官方网站推送到全世界范围,全球各个分公司,只需要招聘一个能看懂drupal后台、会打字的人,就可以维护当地官方网站的正常运行。毕竟每个地区都招一个懂html的前端开发来维护,成本会比较高。

    这个需求,我们是否有更好的方法来实现?

    我们自己做一个多语言的后台,可视化界面让他们修改文字,自定义的后台即简单也易学。

总结

    谁说服谁并不重要,重要的是实现同样的需求,哪个更快、更好?

    干活的那个人是谁?他擅长什么?他的建议是什么?

    每个人的时间是有限的,对于周期紧,进度急,加班赶的it民工来说更加如此,作为开发者,选择好适合自己、适合项目的框架进行重点学习尤为重要。博览百家不如专精一行。

    作为负责人,听取手下的专业建议比听取互联网上的xx评测更为靠谱,用人不疑,不要让员工把时间都浪费在讨论框架上。对于公司来说,利润永远都是第一位的,不管用不用框架或用什么框架,只要能如期保质保量完成用户的所有功能需求,就是最好的项目。

    希望此文能让兄弟们在嘈杂喧闹的开源世界把握方向。找准真正适合自己的路。

    也希望老板们,以后请仅提需求,不要提实现方式。

建议继续学习

  1. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁) (累计阅读 10,020)
  2. WordPress安全建议 (累计阅读 6,320)
  3. 基于反相代理的Web缓存加速――可缓存的CMS系统设计 (累计阅读 6,200)
  4. 读《做人,做事,做架构师》 (累计阅读 6,020)
  5. 微博架构与平台安全演讲稿 (累计阅读 5,680)
  6. 设计模式原则总结 (累计阅读 5,120)
  7. MogileFS 的介绍(MogileFS 系列1) (累计阅读 5,040)
  8. 我对开源的看法 (累计阅读 4,860)
  9. 五款最好的免费同步软件 (累计阅读 4,740)
  10. Pixel light 中的场景管理 (累计阅读 4,301)