APHP(巴黎公共援助医院)采用 Quarkus

aphp logo blue

关于 APHP

L’Assistance Publique - Hôpitaux de Paris, AP-HP 是一个国际化的大学医院中心。

一些数字 (2020)

  • 38 家医院

  • 1 个 24/7 全天候公共医疗保健服务

  • 690 万患者

  • 100,000 名医护人员照顾我们的患者 - 包括近 12,200 名医生、4,000 名实习生、超过 53,000 名护士、辅助医务人员和社会工作者

  • 大约 2,000 名志愿者为患者及其家属提供服务,超过 1,400 名志愿者提供法律方面的帮助

  • 在各个领域开展 3,500 个研究项目,拥有 650 个活跃的国际专利组合

  • 我们的员工中,五分之一的医生直接由 AP-HP 与 7 所医学院合作培养。

  • 34 所学校,包括 16 所护士培训中心 (IFSI)

  • 78 亿欧元的预算

  • 近 1,500,000 次急诊,超过 200 万次呼叫 15(法国急救电话)

  • 我们的 13 家妇产医院约有 38,000 名新生儿

  • 315,000 例外科手术

  • 1,800 例移植

  • 63,500 名 COVID 患者

  • 在亚洲、中东、非洲和南美洲有 68 个合作协议

DSN/DEV

Direction des Services Numériques/DEVeloppement (数字服务/开发部)

DSN/DEV 负责开发和维护各种应用程序和特定工具。IT 部门与 APHP 本身一样庞大。由于涉及每一个医疗专业,有时很难在市场上找到每一个所需的工具。这就是 DSN/DEV 介入的地方,他们创建超专业化的微型应用程序。面对所有这些异构应用程序,APHP 在通信方面面临多重挑战。DSN/DEV 的工作再次是确保每一个部分都能够彼此正常通信,而无需考虑其性质和功能。这样做自然需要他们掌握数据流并能够实时操作数据流。

我们选择的技术

历史上使用了大量的技术。在过去的 10 年里,我们的努力方向是统一。今天,我们目前只使用两种语言:一些 PHP 开发项目是出于历史原因,其余的我们使用 Java EE/Angular。

对于最后一部分,我们的选择倾向于 WildFly/JBoss。我们选择将我们的应用程序打包成一个包含前端和后端的单一可交付成果,因为其体积小且易于部署。我们的前端很少进化,或者更确切地说,只有在后端进化时才会进化。这使我们的团队能够快速部署新功能。我们的信息网络(数百个主要应用程序和数千个工作实例)的规模使其整体发展步伐缓慢。

使用容器使我们修改了我们的选择。我们决策的一个关键点是继续使用我们的团队已经掌握的技术,从而确保任何应用程序的部署或开发都不会意味着从头开始,而是使用预先存在的模块。我们想要的是进化,而不是革命。

Quarkus

DSN/DEV 在研究其他技术的同时,一直密切关注 Quarkus。随着 Quarkus 1.x 版本的发布,很明显它将成为带领我们朝着正确方向前进的工具。

为了管理我们应用程序之间的数据流,我们创建了一个流主管工具,远在我们选择使用 Java EE 之前。该工具基于 servlet 规范,并且在其 10 年的存在期间,进行了大量的分层。由于它仍然运行良好,因此选择此应用程序作为我们的 Quarkus 测试对象。我们可以尝试开发一个替代品,如果我们遇到任何意外的障碍,我们可以返回到现有应用程序。

我们希望利用重复出现的元素。从经验来看,我们的团队能够知道什么可以重用以及在哪里重用。长期以来,我们以模块化的方式进行开发。每个项目都是模块的集合。我们习惯于将这些模块外部化到独立的项目中。

我们迅速成功地制作了一个原型。然后,一所合作学校的任务是将此应用程序的两个基本功能从 servlet 转换为 Java EE/Angular。完成之后,我们需要从 Java EE/Angular 转换为 Quarkus/Angular。这一个人只花了一个星期的时间,而且是在他们的常规职责之外完成的。Quarkus 确实是这项工作的完美工具。

基于此经验,项目开始了。主管应用程序只不过是一个大的模块集群。每个模块都提供自己的功能,通过添加新模块可以轻松添加任何所需的功能。

我们不得不克服一些限制,例如 Hibernate ORM 与 Panache 扩展阻止我们正确访问我们的一些 Oracle 数据库。但是我们设法轻松地跟随 Quarkus 的发展并调整我们的代码以考虑这些发展。

关于 Quarkus-Quinoa,它类似于我们的 Angular 方法:因为我们 10 年前的打包方式仍然运行完美且完全自动化,所以我们选择不使用 Quinoa。

一个应用程序很好,但是越多越好。凭借所有积累的经验,我们创建了随时可用的模块和方法。截至今天,我们能够在 2 周内完全开发和部署一个应用程序。

这种体验是负责主管应用程序的团队工作的结果。剩下的唯一事情就是分享这种经验并将其用作所有人的基础。这是在 2022 年完成的。令我们满意的是,我们的 Java EE/Angular 团队毫不费力地采用了这项新技术。

结论

Quarkus 证明了它是满足我们需求和 DSN/DEV 预见未来的完美工具。我们的团队利用它,并希望将其用途扩展到其他项目。Quarkus 现在是 APHP 的核心工具,并且在可预见的将来仍将如此。