Tra*_*v L 7 architecture performance scalability web-applications
许多人在他们的头脑中有可能吸引数百万的在线创业公司,但大多数时候你只有最低的预算(时间和资源),所以你想在一年的时间内交付它.启动后不久,您必须执行一个或一系列升级,其中可能包括:更新基础的代码重构,在软件架构中添加层次结构或重组数据库.这个升级/重构循环继续如下:
以上述为先决条件,我想认真对待这个讨论,并确定Web应用程序可升级解决方案的本质.在讨论中,您可以讨论任何开发阶段(初始,早期升级,增量升级),并涵盖以下其中一项:
我们公司的网络解决方案是其第四大代,已经在过去8年中相当大的变化.最新一代引入了各种各样的结构来帮助完成这项任务,因为根据新的客户需求更新上一代变得笨拙.因此,我在2009年花了不少时间思考这个问题.
您可以做的最有价值的事情是采用敏捷方法来构建软件.特别是,您应该维护一个可以每天创建(和)新构建的环境.虽然每日构建只是敏捷的一个方面,但这是解决您的问题最重要的做法.虽然这与可升级性本身不同,但它仍然在流程中引入了一个规则,有助于降低代码库变得难以操作的机会(或者您将成为建筑师宇航员).
就框架和语言而言,有两个主要要求:框架是长寿和稳定的,环境支持分离关注.在这方面,ASP.NET对我来说效果很好:它以合理的方式发展,没有使旧代码无效的不连续性.我使用单独的业务逻辑层来管理SoC,但ASP.NET现在也支持MVC开发.相比之下,我在使用它几个月后开始不喜欢PHP,因为它似乎只是鼓励混乱的做法会危及未来的升级.
关于DBMS选择,任何现代RDMS(SQL Server,MySQL,Oracle)都能为您提供良好的服务.这里虽然是关键:你将需要保持DDL脚本来管理升级.这只是生活中的一个事实.那么,你如何使这个易于处理?来自任何第三方开发人员的最有价值的工具是我从Red Gate获得的SQL Compare副本.这个过程曾经是一个彻头彻尾的噩梦,并且在我找到这个工具之前,我的代码发展能力受到了很大的影响.因此,通用建议是使用存在工具的数据库来比较数据库结构.SQL Server在这方面非常幸运.
硬件几乎是一个不在乎.只要您的开发过程包含合理的发布构建过程,您就可以随时转移到新硬件.
不断变化的需求战略. 再次,请参阅敏捷.我鼓励你们不要再将它们视为"要求" - 传统意义上的大型文件充满了规范.敏捷以重要方式改变了这一点.除了在为外部付费客户签订合同时,我不会保留需求文档,以便我可以确保适当的计费并防止功能蔓延.此时,我们的内部流程非常迅速和流畅,我们的功能请求/错误管理软件(FogBugz,如果您想知道)的报告在记录新版本的营销时用作我们的文档.
总体重新设计的策略/决定是:不要.如果你对你将要使用的过程进行合理的思考,选择主流工具,并强制执行一个关注点,那么完全放弃HTTP和RDBMS就会导致全面的重新设计.
如果你足够灵活,任何东西都可以改变,你就不可能永远处于一切必须改变的位置.