Cytech 使用 Quarkus 拯救希腊旅游业

cytechLogoLarge

旅游业和 Covid-19

旅游业是受 Covid-19 大流行影响最严重的行业之一,这已不是什么新鲜事。酒店、餐厅、航空公司、游轮等企业今年夏天都经历了一段艰难的时期。许多国家,尤其是那些经济依赖旅游业的国家,都在寻找解决方案,以便在不对其公民造成重大健康风险的情况下开放边境。这里没有神奇的解决方案,但总有空间尽最大努力满足这两个要求。

希腊政府在某个时候决定开放边境以帮助经济,但在没有预防措施的情况下这样做将过于鲁莽。这就是为什么他们决定建立一个基于先进技术的系统,该系统将选择合适的旅客进行 Covid-19 检测。其理念如下:如果您无法承担每个人的检测费用,则应检测那些更可能对 Covid-19 检测呈阳性的人。这样,希腊国家可以明智地使用其资源,同时节省测试费用。

问题是:如何做。这就是我们进入现场的部分。一个科学家团队已经提出了一种人工智能和机器学习算法。它的目标是通过有效地选择要测试的合适人选来精确地满足上述需求。但是这些算法需要数据,并且在那个时候,来自进入该国的乘客的详细数据还没有以任何数字和有组织的形式提供。

基本思路

希腊政府委托我们公司 Cytech 构建一个软件,该软件将收集乘客的信息,对其进行过滤并将其传递给所有相关方,以便他们可以完成工作。其中之一是名为 EVA 的机器学习系统。但是需要此信息的各方名单要长得多:它包括民事保护机构、卫生部、边防人员、航空公司等。与此同时,它会向每位乘客发送电子邮件,告知他们的申请正在审核中。当 EVA 提出结果时,它会将其发回给我们,以通过电子邮件将最终文件发送给乘客。没有它,他们将不被允许进入该国。长话短说,我们的工作是构建一个要求严格的 网络表单 来收集所有乘客的数据。但是,最重要的部分是创建一个数据代理,该代理能够与其他所有信息系统交换正确的数据,并强调速度、稳健性和弹性。

技术挑战和解决方案

旅客定位表 项目的后端对代理平台的要求主要围绕着公开 REST API 端点以供 UI 使用,以及与政府相关的第三方互连以进行所需的数据交换,例如 EVA、EODY(国家公共卫生组织)、GGPP(民事保护总秘书处)和希腊 COVID19 患者注册表。此外,为了在我们在极端截止日期内交付,以及能够满足项目的大规模需求,我们还需要我们的工具成熟且经过验证,并为我们提供开发人员生产力、(水平)可扩展性以及以最少的资源实现最高效率/性能。

我们过去在小型项目中使用 Quarkus 有过积极的经验,但我们已经对其易于使用和提高生产力的功能印象深刻。由于 Quarkus 基于行业标准(Microprofile 和 Jakarta EE API),因此我们的开发人员可以非常快速地并在非常紧张的截止日期内快速上手。此外,Quarkus 网站上的“指南”部分有助于对少数未按预期自动神奇地工作的部分获得即时反馈。

实时重新加载和非常快的启动感觉就像在 Java 中开发企业质量的超大型应用程序的一个非常新的开始。对后端应用程序的任何更改都会立即反映在下一个请求中。鉴于我们对应用程序 UI 的选择是 Vue.js,它提供了相同的功能,因此应用程序中的每次更改都会随着它的发生而实时重新加载!

Quarkus:游戏规则改变者

需要像这样具有关键影响的应用程序是稳健的。根本没有发生任何中断的空间,这将意味着人们被拒绝进入我们的国家,甚至在边境被驱逐出境!测试是 Quarkus 开发生命周期中的头等公民,这使我们能够在最短的时间内提高应用程序的稳健性和信心。在生产环境下测试应用程序就像使用 @QuarkusTest 注释测试类并使用 @QuarkusTestResource 和 TestContainers 处理数据库一样简单。我们能够实现非常高的代码覆盖率(最重要的是),不仅在简单路径上,而且在深入到应用程序的每个部分。这在应用程序 100% 的正常运行时间和可用性方面发挥了巨大的作用,从它首次部署并向公众公开的那一刻起。

我们重视基于 Microprofile Config API 的 Quarkus 应用程序配置的多功能性,该 API 使用统一的配置约定并提供轻松插入动态配置源的能力。它在我们的项目中为我们提供了很多帮助,该项目包括许多动态和快速变化的部分,例如特定国家/地区入境点的上限限制或来自特定国家/地区的乘客携带阴性 RT-PCR 测试的要求。我们平台的主要功能之一是准确、及时地将数据分发给相关政府部门。使用动态配置功能,我们可以快速隔离、暂停和按需恢复由于第三方处理错误而开始累积故障的集成部分。

必须由进入希腊的每个人访问的网站,尤其是在旅游旺季期间,可以很容易地猜到 - 流量非常高。任何时候都有成千上万的并发独立用户,每天提交数万份表格。我们需要应用程序以最少的资源处理大部分流量,并且能够在需要时/如果需要时进行扩展,例如在午夜期间,当 EVA 的结果出现时,平台需要极其紧急地处理每个乘客的最终表格,生成 QR 码和包含所有表格信息的随附 PDF 文件,并通过电子邮件提交。Quarkus 最少的资源使用量使我们能够在绝大多数时间内扩展到 2 个 c5.large(2 个 vcpu 和 4GB 内存)AWS EC2 实例,CPU 使用率通常低于 10%。在 QR 码生成期间,平台扩展到 4 个 c5.large EC2 实例,CPU 使用率约为 80%,同时每分钟处理超过 10000 个 QR 码/PDF/电子邮件。

从 7 月到 9 月,我们为来自世界上几乎所有国家的旅客提供了约 400 万份 PLF。在夏季高峰期间,这些表格附带了各自的电子邮件通知、PDF 和 QR 码,为游客提供了低风险进入该国、有效的风险管理和 Covid-19 测试资源的最佳分配,尽可能快地锁定在高风险国家/地区,并为目的地提供早期预警。与此同时,我们与十个不同的信息系统通信,为他们提供有关乘客的宝贵信息,而不会出现停机或性能下降。我们支持了卫生专家的艰巨工作。因此,他们为国家做出了正确的决定,并且当需要信息来限制病毒在社区中的传播时,我们在那里。这是一段令人兴奋且同时令人紧张的旅程,它展示了技术在解决社会非常关键的问题方面可以发挥的独特作用。

关于 Cytech

Cytech 是一家拥有 20 年经验的软件公司,专注于电信领域。我们开发自己在移动消息、营销和支付领域的产品和服务。Cytech 已成为 10 多个国家/地区(欧洲、亚洲、南美洲和北美洲、非洲和澳大利亚)公司的值得信赖的技术合作伙伴。我们以高质量和专业成果而闻名,因此我们经常承担州或大型组织提出的要求苛刻且具有挑战性的软件项目。