Orange 如何利用 Quarkus 无缝访问电信网络功能

简介
作为全球领先的电信公司,Orange 一直处于创新前沿。Orange 与 Deutsche Telekom、Telefónica 和 Vodafone 一起,共同创立了 Camara Project,旨在简化第三方应用程序开发人员对 5G API 的使用。
为了实现这一目标,Orange 需要一个灵活且轻量级的框架,能够处理受限的 API 暴露,同时确保与现有网络核心系统的兼容性。
在对多个框架和工具包(包括 Quarkus、Ktor、Micronaut 和 Vert.x)进行严格评估后,Orange 选择 Quarkus 作为理想的解决方案。
Patrice Conil,Orange 的软件工匠,告诉了我们原因。
为什么选择 Quarkus?框架评估
Orange 团队发现应用程序启动时间是动态 Kubernetes Pod 管理的障碍。因此,他们进行了一项比较研究,以测试 Spring Boot 的替代方案,在一个定义明确的 API 包装器暴露环境中。关键评估标准包括:
-
学习曲线:Spring 开发人员可以多么容易地过渡?
-
Kotlin 兼容性:该框架是否可以与 Kotlin 无缝协作?
-
运行时占用空间:它能否在受限环境中高效运行?
-
部署难易度:它在 Kubernetes 上的部署有多顺畅?
经过广泛的测试,Quarkus 因多种原因脱颖而出:
-
简单性:学习曲线相对简单,尤其是对于那些熟悉 JAX-RS / Jakarta REST 的人。
-
开发模式:极快的启动速度、实时重新加载和零配置开发服务(Vault、Redis)带来了极高的开发人员生产力。
-
模块化:仅嵌入所需的依赖项,保持应用程序精简。
-
文档:组织良好、版本化的文档,带有可用的示例。
-
原生编译:能够生成用于 Kubernetes 部署的紧凑型原生二进制文件。
尽管来自活跃的 JVM 生态系统的竞争激烈,但这些优势使 Quarkus 成为 Orange 暴露 5G API 的首选。
采用 Quarkus 的经验教训
迁移和开发经验
从 Spring 过渡到 Quarkus 并不太复杂,尤其是对于那些熟悉 JAX-RS / Jakarta REST 的人。
开发服务 显著提高了开发和测试模式下的生产力,但需要在 CI/CD 环境中仔细考虑,因为那里没有容器运行时可用。
模块化方法确保应用程序保持轻量级,但引入了大量小型依赖项进行管理。
Java 和 Kotlin 互操作性
虽然 Quarkus 支持 Kotlin,但编写完整的 Kotlin 扩展有时会遇到挑战。该团队保留了一些 Java 代码,并且 Java-Kotlin 互操作性运作顺利。