|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: 'How Orange leverages Quarkus for seamless access to Telco network capabilities' |
| 4 | +date: 2025-03-12 |
| 5 | +tags: user-story |
| 6 | +synopsis: Learn how Orange successfully deployed APIs across various 4G/5G network cores. |
| 7 | +author: tsegismont |
| 8 | +thumbnailimage: /assets/images/posts/quarkus-user-stories/orange/orange-logo.png |
| 9 | +--- |
| 10 | + |
| 11 | +:imagesdir: /assets/images/posts/quarkus-user-stories/orange |
| 12 | + |
| 13 | += How Orange leverages Quarkus for seamless access to Telco network capabilities |
| 14 | + |
| 15 | +image::orange-logo.png[alt=Orange,align=center,width=256] |
| 16 | + |
| 17 | +== Introduction |
| 18 | + |
| 19 | +As a global telecommunications leader, https://www.orange.com[Orange] has always been at the forefront of innovation. |
| 20 | +Along with Deutsche Telekom, Telefónica, and Vodafone, Orange co-founded the https://camaraproject.org[Camara Project], an initiative aimed at simplifying the consumption of 5G APIs for third-party application developers. |
| 21 | + |
| 22 | +To achieve this goal, Orange needed a flexible and lightweight framework capable of handling constrained API exposure while ensuring compatibility with existing network core systems. |
| 23 | + |
| 24 | +After a rigorous evaluation of multiple frameworks and toolkits — including Quarkus, Ktor, Micronaut, and Vert.x — Orange selected Quarkus as the ideal solution. |
| 25 | + |
| 26 | +https://www.linkedin.com/in/patriceconil/[Patrice Conil], software craftsman at Orange, told us why. |
| 27 | + |
| 28 | +== Why Quarkus? A Framework Evaluation |
| 29 | + |
| 30 | +The team at Orange embarked on a comparative study to test alternatives to Spring Boot in a well-defined API wrapper exposure context. |
| 31 | +Key evaluation criteria included: |
| 32 | + |
| 33 | +- Learning Curve: How easily could a Spring developer transition? |
| 34 | +- Kotlin Compatibility: Could the framework work seamlessly with Kotlin? |
| 35 | +- Runtime footprint: Could it operate efficiently in a constrained environment? |
| 36 | +- Ease of Deployment: How smoothly could it be deployed on Kubernetes? |
| 37 | + |
| 38 | +After extensive testing, Quarkus stood out for multiple reasons: |
| 39 | + |
| 40 | +- Simplicity: A relatively simple learning curve, especially for those familiar with JAX-RS / Jakarta REST. |
| 41 | +- Dev Mode: Very fast startup, live reload and zero configuration Dev Services (Vault, Redis) result in great developer productivity. |
| 42 | +- Modularity: Only required dependencies were embedded, keeping applications lean. |
| 43 | +- Documentation: Well-organized, versioned documentation with working examples. |
| 44 | +- Native Compilation: The ability to generate compact native binaries for Kubernetes deployment. |
| 45 | + |
| 46 | +Despite the strong competition from a vibrant JVM ecosystem, these advantages made Quarkus the preferred choice for exposing 5G APIs at Orange. |
| 47 | + |
| 48 | +== Lessons Learned from Adopting Quarkus |
| 49 | + |
| 50 | +=== Migration & Development Experience |
| 51 | + |
| 52 | +Transitioning from Spring to Quarkus was not overly complex, especially for those familiar with JAX-RS / Jakarta REST. |
| 53 | + |
| 54 | +The https://quarkus.io/guides/dev-services[Dev Services] significantly enhanced productivity in dev and test modes, but required careful consideration for their CI/CD environments, where no container runtime is availabe. |
| 55 | + |
| 56 | +The modular approach ensured applications remained lightweight but introduced a large number of small dependencies to manage. |
| 57 | + |
| 58 | +=== Spec-First API Development |
| 59 | + |
| 60 | +As spec-first practitioners, integrating OpenAPI specification generation was a crucial requirement that Quarkus handled effectively. |
| 61 | + |
| 62 | +=== Java & Kotlin Interoperability |
| 63 | + |
| 64 | +While Quarkus supports Kotlin, writing full Kotlin extensions proved challenging at times. |
| 65 | +The team retained some Java code, and Java-Kotlin interoperability worked smoothly. |
| 66 | + |
| 67 | +=== Native Compilation & Performance |
| 68 | + |
| 69 | +Native compilation produced compact native executables, but the process of producing them was lengthy. |
| 70 | +The team reserved it for the final build stage when absolutely necessary. |
| 71 | + |
| 72 | +Some fine-tuning was required to prevent class pruning issues. |
| 73 | + |
| 74 | +=== Reactive Programming & Mutiny |
| 75 | + |
| 76 | +Having worked extensively with Reactor, the transition to Mutiny had a learning curve. |
| 77 | + |
| 78 | +While effective and more intuitive thanks to its navigable API, it was perceived as more verbose for the simple cases. |
| 79 | + |
| 80 | +== Architecture Overview |
| 81 | + |
| 82 | +Orange designed a microservices-based architecture to expose 5G APIs efficiently: |
| 83 | + |
| 84 | +=== Microservices & API Wrappers |
| 85 | + |
| 86 | +Each API wrapper was implemented as a dedicated microservice for better version control. |
| 87 | +The team leveraged Reactive APIs wherever possible, since there are a lot of time-consuming asynchronous tasks to be performed on the core network side and saving resources is a business goal. |
| 88 | + |
| 89 | +=== CI/CD & Deployment |
| 90 | + |
| 91 | +Each microservice had its own GitLab repository with an independent build pipeline for its Docker image. |
| 92 | + |
| 93 | +Renovate was used to automate dependency upgrades. |
| 94 | +A dedicated deployment project pushed new Docker images to an OpenShift cluster using Kustomize + ArgoCD. |
| 95 | + |
| 96 | +=== Infrastructure Components |
| 97 | + |
| 98 | +Additional services included: |
| 99 | + |
| 100 | +- Vault for secrets management |
| 101 | +- Redis for caching |
| 102 | +- Neo4j for database operations |
| 103 | +- Kafka for messaging |
| 104 | + |
| 105 | +Vert.x HTTP Proxy was used for routing and backend protection. |
| 106 | + |
| 107 | +== Results & Impact |
| 108 | + |
| 109 | +After implementing Quarkus in production, Orange successfully **deployed ten APIs** across various 4G/5G network cores. |
| 110 | +Over time, the team performed **multiple Quarkus version upgrades (2.11 → 3.14)**, all well-managed through Renovate with minimal code adaptation—except for necessary adjustments during the migration to Jakarta EE. |
0 commit comments