Architecture 实现模块化体系结构的RFC
寻找关于web应用程序模块化的意见。无论使用何种语言,大多数应用程序都有后端数据库,并支持与各自的web应用程序服务器(Apache、IIS、Lighttp等)的连接,但我处理过的许多开发人员在使用Memcached或web应用程序直接处理空间之外的任何东西时遇到了问题 web应用程序的模块化是我所认为的一件好事,还是我遗漏了一些东西,导致从高级开发人员到CTO的每个人都对将业务逻辑的特定部分从web前端转移到专门的后端服务犹豫不决 例如,几年前,我在一个流量非常高的网站的项目设计会议上被否决了,当时我建议我们将流程密集型ACL逻辑从前端框架中剥离出来,并在后端将其转换为半集群式服务应用程序。对我来说,好处在于代码的更清晰分离,以及通过使用REST/JSON作为PHP和Python之间的桥梁,在多个地方重用ACL逻辑的能力 不同意我想法的开发人员认为它“太复杂”,但我就是不明白怎么做?我的观点是,正如表示层可以有标记汤一样,也可以而且经常有一个逻辑汤,代码是如此紧密地结合在一起,以至于如果出现问题,几乎不可能执行“外科手术”修复 因此,为了缩短时间,将大型应用程序分解为独立但协作的进程(而不是线程或子请求)的优点是什么。MySQL、Memcache和类似的服务流程都很棒……但为什么不做其他事情呢?这条路怎么会“太复杂”?嗯,有时候“太复杂”的意思是“我不想在我的混乱区域之外思考。” 基本概念听起来不错——您在这里谈论的是相当合理的面向服务的体系结构 现在,就正反两方面而言,反对它的第一件事是,你确实必须让人们在舒适区之外思考。一个更具技术性的缺点是,您需要保留实际上是会话状态的内容。假设您从身份验证服务中提取身份验证令牌;该令牌将如何与正确的用户会话保持关联 另一个问题是调试可能更困难,因为它的发生更加动态Architecture 实现模块化体系结构的RFC,architecture,service,high-availability,Architecture,Service,High Availability,寻找关于web应用程序模块化的意见。无论使用何种语言,大多数应用程序都有后端数据库,并支持与各自的web应用程序服务器(Apache、IIS、Lighttp等)的连接,但我处理过的许多开发人员在使用Memcached或web应用程序直接处理空间之外的任何东西时遇到了问题 web应用程序的模块化是我所认为的一件好事,还是我遗漏了一些东西,导致从高级开发人员到CTO的每个人都对将业务逻辑的特定部分从web前端转移到专门的后端服务犹豫不决 例如,几年前,我在一个流量非常高的网站的项目设计会议上被否决了
不过,在专业方面,如果您能够满足会话状态问题,那么您将获得一个高度可扩展的体系结构;如果您需要更多的服务,您可以扩大服务器或简单地添加另一台服务器。我喜欢将核心服务器/业务逻辑功能与web应用程序代码分离。这有几个不同的原因:
我们的系统有一个作为Java应用程序实现的核心“引擎”服务。web应用程序也是用Java编写的,(目前)通过RMI进行通信。我们的站点/应用程序正在增长,我们还没有开始使用像memcached或JCS这样的缓存服务 好吧,从好的方面来说,我在这个新项目上已经有了资历……所以也许是时候打破+2的管理模式了。