看看传说5亿行代码的Healthcare.gov网站的架构

jopen 5年前

        HealthCare.gov 是美国联邦健康保险交换系统的核心,该网站自 10 月 1 日开通运营以来一直遭受各种问题的困扰,比如性能、数据问题等等。

        《纽约时报》曾报道称“大约1% 的代码——相当于 500 万行——需要重写”,如果这个数据正确,也就是说Healthcare.gov 的总代码量达到了惊人的 5 亿行。5 亿行意味着什么呢?这意味着 Healthcare.gov 的代码量是 Facebook、Windows XP 和 OS X 之和的 2 倍还多。看下图你就一目了然了。

看看传说5亿行代码的Healthcare.gov网站的架构

        网站架构

        也有一些“无聊”的人,比如 Eduardo Garcia 这位老兄,在帮父母买保险时遇到了问题,就利用自己的开发技术和浏览器中的开发者工具分析了这个网站的架构,见下面的信息图。图中的 CMS 指的是 Centers for Medicare and Medicaid Services(医疗保险和医疗补助服务中心)。

看看传说5亿行代码的Healthcare.gov网站的架构

        该网站主要由 6 个复杂的系统组成,分别由 6 个承包商负责开发,而且这些承包商下面还有承包商(多达 55 个),由于没有一个总的负责人,网站最终出现各种各样的问题也在所难免。

        其中 FFM(Federally Facilitated Marketplace,联邦政府促进市场)系统最为复杂。从图中可以看出,该网站前端使用了 HTML5 技术,包括 Twitter Bootstrap、jQuery、Backbone.JS 等,使用 Pingdom 工具进行监控和优化,虚拟基础架构是由 Terremark 公司提供的。这个系统的合同金额高达 2.93 亿美元。

        导致网站“瓶颈”的其中一个部分就是 EIDM(Enterprise Identity Management,企业身份管理系统),目前还不清楚该系统使用什么技术,但很明显,它通过一个 RESTful API 提供身份验证、授权功能。

        Healthcare.gov 的核心是数据服务中心,该系统由 Optum/QSSI 开发,主要作为所有保险公司的数据库、CMS 数据库和 Equifax(美国三大信用局之一)收入验证服务的数据层和 Web 服务层,该系统由 JBoss 服务器、数据访问组件以及使用 Java 开发的 RESTful Web 服务所构成。该技术堆栈也被认为是导致应用比较慢的原因之一。

        来看看一些细节,这个 all.js 文件中集合了 Bootstrap.js、jQuery、Backbone.js、json2.js 以及各种各样的插件和应用的代码。下面这个图中显示 individualApplication.js 文件中的第 18415 行代码出现问题,可见该工程的庞大。

看看传说5亿行代码的Healthcare.gov网站的架构

        问题根源

        Ars 网站列出了 HealthCare.gov 的七宗罪

  • 承包商太多,导致最终结构过度复杂
  • 整个项目都依赖于 Experian 提供的数据,而无论是政府还是承包商都对数据质量没有发言权,数据出现问题会导致整个网站遭遇问题;
  • 从未经过时间检验的全新结构;
  • 需求不断变化,设计不断改变;
  • 由于需求直到上线最后一分钟还在改,导致网站根本无法进行全面的测试;
  • 不是逐步增加新特性,网站将全部功能一下子推出,由于没有办法在高负荷下测试网站的性能,政府无法根据测试结果扩建基础设施;
  • 网站没有有效的方法在多层组件中管理 bug 跟踪,没有方法识别问题的根源。

        奥巴马:新产品总是会有问题的

        针对这些问题,美国政府如今也没有什么好的解决办法。美国总统奥巴马之前对此表示:

每种新法律、新产品发布时,总会在初期遇到很多问题,这些问题将很快被修复。

这就像几周之前,苹果发布了全新的移动操作系统,几天之后,苹果发现了问题,公司马上发布了修正补丁。我可不记得有人建议苹果应该停止销售 iPhone、iPad 或者威胁公司应该关门倒闭。

        据悉,已经有三名分别来自甲骨文、谷歌和红帽的工程师正在帮助政府改善这个网站,并且他们已经参与此事近一个月了。

        这是一个典型的政府式项目。话说,有人知道 12306 的代码量是多少么?

来自: www.iteye.com