阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章,结合《河北省重大技术需求征集系统》,列举实例分析采用的可用性和可修改性战术
网站的可用性描述网站可有效访问的特性,网站的页面能完整呈现在用户面前,需要经过很多个环节,任何一个环节出了问题,都可能导致网站页面不可访问。可用性指标是网站架构设计的重要指标,对外是服务承诺,对内是考核指标。对公司而言,可用性关系网站的生死存亡。对个人而言,可用性关系到自己的绩效升迁。工程师对架构做了许多优化、对代码做了很多重构,对性能、扩展性、伸缩性做了很多改善,但别人未必能直观地感受到,也许你的直接领导都不知道你做的这些意义何在。但如果你负责的产品出现了重大故障,就很难说了。事物总是先求生存,然后求发展。保证网站可用,万无一失,任重而道远。
伸缩性架构设计能力是网站架构师必须具备的能力。伸缩性架构设计是简单的,因为几乎所有稍有规模的网站都必须是可伸缩的,有很多案例可供借鉴,同时又有大量商业的、开源的提供伸缩性能力的软硬件产品可供选用。然而伸缩性设计又是复杂的,没有通用的、完美的解决方案和产品,网站伸缩性往往和可用性、正确性、性能等耦合在一起,改善伸缩性可能会影响一些网站的其他特性,网站架构师必须对网站的商业目标、历史演化、技术路线了然于胸,甚至还需要综合考虑技术团队的知识储备和结构、管理层的战略愿景和规划,才能最终做出对网站伸缩性架构最合适的决策。
一个具有良好伸缩性架构设计的网站,其设计总是走在业务发展的前面,在业务需要处理更多访问和服务之前,就已经做好充足准备,当业务需要时,只需要购买或者租用服务器简单部署就可以了,技术团队亦可高枕无忧。反之,设计和技术走在业务的后面,采购来的机器根本就没办法加入集群,勉强加了进去,却发现瓶颈不在这里,系统整体处理能力依然上不去。技术团队每天加班,却总是拖公司发展的后腿。架构师对网站伸缩性的把握总是在一线之间。
为什么有的网咋必须规定系统发布日,一到发布日就如临大敌,整个技术部加班通宵达旦;而有的网站就可以随时发布,新功能可以随时快速上线。这些都有赖于网站的扩展性架构设计,就是在对现有系统影响最小的情况下,系统功能可持续扩展及提升的能力。扩展性指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。表现在系统基础设施稳定不需要经常变更,应用之间较少依赖和耦合,对需求变更可以敏捷相应。它是系统架构设计层面的开闭原则,架构设计考虑未来功能扩展,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。伸缩性指系统能够通过增加自身资源规模的方式增强自己计算处理事务的能力。如果这种增减是成比例的,就被称作线性伸缩性。在网站架构中,通常指利用集群的方式增加服务器数量,提高系统的整体事务吞吐能力。可修改性的目标是控制实现、测试和部署变更的时间和成本。主要分为局部化修改、防止连锁反应、推迟绑定时间。
关于《河北省重大技术需求征集》系统中对用户的需求管理是可用的,该系统能完整录入需求,能把提交的需求进行展示、查看。其中征集模块以及分类浏览、树形结构能是能够切合可用性的原则, 但是对错误的恢复还是不够完善,当用户的需求在各种外界因数干扰下没有提交成功,系统对数据的恢复还是做不到。由于该系统采用的MVC模型开发模式,对局部化的修改不会产生连锁反应,对修改后的内容也能够正常使用,并不会影响其他功能,因此,系统的可修改性也还说的过去。