【问题标题】:What are the most important infrastructure components in large-scale development?大规模开发中最重要的基础设施组件是什么?
【发布时间】:2010-10-15 17:57:36
【问题描述】:

企业业务应用程序的基础构建块有哪些?我正在考虑多个应用程序共享的可重用组件:

  1. 更快地扩大规模
  2. 通过消除重新构建来加速开发
  3. 通过最大限度地减少关键故障点来提供稳定的基础架构

我在集中化/标准化方面看到的一些成功概念示例:

  • 日志记录
  • 排队
  • 调度

【问题讨论】:

    标签: enterprise infrastructure


    【解决方案1】:

    我会添加 GUI 小部件,使团队能够在整个应用程序中保持相同的外观。

    同样,在一个大型项目中,多个团队必须在子系统上工作,这些子系统将在某个时候组合在一起,一组类似子系统的设计模式是非常宝贵的。

    此外,创建一组通用库(或者在采用 Boost 的 C++ 中更好),当需要通用实用程序时可以使用这些库,效果很好。

    我还会在早期创建带有示例的测试框架。我发现如果你有一个用于测试子系统的模板,那么人们就会使用它。在早期没有任何测试框架的情况下,您一定会得到所有极端的开发人员测试。

    【讨论】:

      【解决方案2】:

      当您说组件时,您是指代码组件还是基础架构组件?我认为基础设施(支持服务和流程),而不是代码,对质量、速度和易于开发的好处最大。您提供的示例现在在大多数语言的标准库中,或者非常特定于应用程序/用例。

      我也只是假设版本控制是给定的,因为它对所有开发都是不可或缺的。

      我会说最重要的基础设施持续构建/自动化测试。这让人们可以编写他们想要的任何代码、签入并确保它可以与其他人的代码一起使用。

      其次是常用库。这些让人们可以更快地开发并建立外观、感觉和设计的标准(希望是好的)。随着常用库的使用越来越多,持续构建的重要性也在增加,因为这些库的微小变化可能会导致回归。

      不过,通用库的一个问题是,它们需要付出很多努力才能设计得很好——因此它们值得重用——而且需要很长时间才能达到这一点。大多数会从特定于一个项目开始,然后有人会将其破解到他们的项目中,然后进行一些分支,然后复制和粘贴。一段时间后,可能是几年后,有人会审核代码并开始将它们合并到一个共同的地方。应该为升级公共库以及如何(或是否)同时拥有它们的两个版本制定计划。另一个隐藏的缺点是它们可以在短期内加快开发速度,但从长远来看会阻碍开发,因为人们会被锁定在旧版本中(第三方库更是如此)。

      第三个是构建工具。这意味着可以使用通用工具来简化构建、签出、搜索以及以任何方式与代码交互的过程。当您提交补丁时自动将错误标记为已解决,或通知持续构建者依赖项已更改,或在您提交测试之前自动运行测试,使测试易于(且快速)运行。

      第四是密封构建,它是构建工具的简单扩展。这意味着应用程序是自包含的。这有两个好处:1)机器重用更容易,更重要的是,2)开发人员上手非常容易 - 他们不需要安装额外的库,或更改 /etc 中的某些内容,或在他们的环境 - 它只是构建和运行。

      我能想到的其他一些:

      • 监控:如果一切都使用相同的监控方法,那么人们就不必黑盒监控公共库。由于所有数据都集中在一个位置,因此还可以更轻松地发现问题。
      • 日志存储:Grepping 和 groking 日志是一种痛苦。拥有一个以结构化格式存储所有日志的集中位置,可以轻松搜索和发现问题。
      • 分支管理:在大型项目中,这让开发人员可以开发、测试人员测试和发布人员发布,而无需互相干预。

      【讨论】:

        【解决方案3】:

        不完全在基础设施领域:

        • 定义的逻辑数据模型。
        • 定义的业务流程(包括边缘案例)。

        如果没有这些,您将有一系列针对同一客户的应用程序开发活动。

        • 日志记录
        • 排队
        • 调度

        这些都应该是现成的,以满足使用它们的应用程序的需求。例如。 J2EE 构建应用程序的日志记录解决方案与 .NET 不同。 (在一个重要的企业中,单一文化本身就是一个问题。)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-29
          • 2017-01-09
          • 2021-08-02
          • 1970-01-01
          相关资源
          最近更新 更多