Architecture 对项目的架构做出决策;你的决策过程是怎样的?

Architecture 对项目的架构做出决策;你的决策过程是怎样的?,architecture,scalability,n-tier-architecture,Architecture,Scalability,N Tier Architecture,我们中的许多人都是从零开始设计和开发系统的,他们都曾遇到过这样的情况:必须对项目的体系结构做出艰难的决策。在构建一个架构合理、可扩展的系统时,您(或您会)在哪里划定“下一步”的界限 我已经建立了一个大规模的网站,它在架构上已经崩溃了。有一个包含前端代码的web层,然后是处理实际工作的业务层和数据层。不同层次的逻辑分离共存于同一台物理机器上。通过使用web服务层/层,可以存在物理分离,甚至是简单的逻辑分离。由于各种原因,它没有以这种方式实现。这个决定是对还是错只是意见的问题。从我的观点来看,我还遇

我们中的许多人都是从零开始设计和开发系统的,他们都曾遇到过这样的情况:必须对项目的体系结构做出艰难的决策。在构建一个架构合理、可扩展的系统时,您(或您会)在哪里划定“下一步”的界限

我已经建立了一个大规模的网站,它在架构上已经崩溃了。有一个包含前端代码的web层,然后是处理实际工作的业务层和数据层。不同层次的逻辑分离共存于同一台物理机器上。通过使用web服务层/层,可以存在物理分离,甚至是简单的逻辑分离。由于各种原因,它没有以这种方式实现。这个决定是对还是错只是意见的问题。从我的观点来看,我还遇到过一些相对简单的应用程序设计过度的情况

当设计一个新项目的架构时,你考虑的因素有哪些?您是否有一个经常使用的一致的项目设计,您是从一开始就是n层的,还是在每个项目进入时进行评估


重复这些经历,我常常想知道,处于相同地位的其他人如何证明和做出这些考虑。我相信我们每个人都会有不同的观点,但我相信理解这些观点背后的思维过程会很有启发性。

我使用-它都是内置的。

给定问题的正确架构完全取决于问题。您的问题过于笼统,无法提供真正的答案,只能说我尽可能简单地保持体系结构,以考虑所有已知和预期的需求,但不简单

编辑:

对于“典型”业务解决方案,以下是我考虑的一些因素:

  • 用户界面

    • 它能基于网络吗?用户交互要求是什么
    • 如果一个经典的web界面还不够,我可以使用更具交互性的技术,比如Sliverlight吗
    • 如果必须是厚客户机(是的,仍然存在证明这一点的场景),那么部署挑战有多严重?小用户群,大用户群?我需要包括自动更新吗?是否需要强制执行
  • 业务层

    • 我是否有需要物理上独立的业务层的性能/可伸缩性考虑?(我的业务层在逻辑上总是分开的,如果需要的话,也很容易在物理上分开。我有时在部署Windows时考虑到这一决定,但这是一个沉重的框架,并不总是合适的)
    • 我的业务规则有多简单或复杂?随着时间的推移,它们可能会有很大的发展吗?是否值得合并一个规则引擎,例如
    • 是否存在异步处理要求?我需要工作队列系统吗
    • 是否有可与之连接的外部系统?他们提供什么类型的接口?Web服务、COM+、XML over HTTP、专有、DB、批处理文件等
  • 数据持久性

    • 考虑到任何预先存在的平台选择/约束,我可以选择哪些ORM
    • 广泛使用存储过程会使我受益吗?是否会有DBA来维护存储过程并随着时间的推移对其进行修改?如果没有DBA,我只在性能真正需要的地方使用存储过程。如果有DBA,则更广泛地使用存储过程将使DBA能够灵活地管理独立于应用程序的物理体系结构(但与所有增加的复杂性一样,这是有代价的)
  • 横切

    • 安全要求是什么?是否存在要与集成的现有机制(Active Directory/LDAP/…)?我是否需要支持基于角色的安全性
    • 运营监控要求是什么?“报告此错误”功能?简单日志记录
在构建一个架构合理、可扩展的系统时,您(或您会)在哪里划定“下一步”的界限

我不明白问题的这一部分

当设计一个新项目的架构时,你考虑的因素有哪些?您是否有一个经常使用的一致的项目设计,您是从一开始就是n层的,还是在每个项目进入时进行评估

我很幸运,几乎所有的工作都是在小团队中完成的,不幸的是,我几乎所有的工作都是在高流动性的团队中完成的。我学会了永远不要试图独自设计一个系统;通过团队的努力,结果会更好。有时我们会做快速原型设计,但如果团队很好,我发现你可以用白板、索引卡和纸张设计出人意料地走得更远

我们绝对没有一致的项目设计;每个架构都可能是该项目的一次性架构,但我几乎只从事研究和高级开发

考虑的因素:

  • 团队是否认为架构能够完成工作?胜过所有其他考虑

  • 初级团队成员或新来者可以轻松地学习体系结构吗?其他团体会抢走你最好的人才,他们会离开去创办公司。在一个案例中,我们有一个小组正忙于处理现场请求,以至于无法学习新的体系结构,尽管他们的体系结构阻碍了他们

  • 架构的结构是否反映了需要创建架构的组织结构?:-)有点开玩笑,但我们需要相信我们可以用我们拥有的人和时间来构建它,而不是完美的开发团队。所以能够识别出和个人相匹配的体系结构的各个部分