Dari Spring Boot ke Quarkus: Memahami JAX-RS, MicroProfile, dan SmallRye
Bagi banyak developer Java, Spring Boot adalah pilihan utama untuk membuat aplikasi REST API. Annotation seperti @RestController
, @GetMapping
, atau @PostMapping
sudah menjadi makanan sehari-hari.
Namun, saat mulai mengenal Quarkus, sering muncul pertanyaan:
-
“Kalau di Quarkus bikin REST API pakai apa?”
-
“Apa itu MicroProfile dan SmallRye, dan bagaimana perannya di Quarkus?”
Artikel ini mencoba memberi penjelasan sederhana bagi pemula, khususnya mereka yang berasal dari dunia Spring Boot.
1. REST API di Quarkus: Dasarnya JAX-RS
Di Quarkus, pembuatan REST API menggunakan standar Jakarta RESTful Web Services (JAX-RS), bukan Spring MVC.
Contoh endpoint sederhana di Quarkus:
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/hello")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from Quarkus!";
}
}
Kalau di Spring Boot kita biasa tulis:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello from Spring Boot!";
}
}
Maka di Quarkus padanannya pakai @Path
+ @GET
dari JAX-RS sama-sama REST, hanya berbeda “dialek”.
2. Lebih dari Sekadar Endpoint
REST API bukan hanya soal GET
dan POST
. Aplikasi modern biasanya butuh:
-
konfigurasi dinamis (misalnya ambil API key dari environment),
-
health check untuk dicek Kubernetes,
-
metrics agar bisa dipantau Prometheus/Grafana,
-
dokumentasi API otomatis dengan OpenAPI/Swagger,
-
retry atau circuit breaker untuk ketahanan,
-
keamanan JWT antar service.
Inilah tempat MicroProfile masuk ke dalam ekosistem Quarkus.
3. Apa Itu MicroProfile?
Eclipse MicroProfile adalah sekumpulan spesifikasi standar untuk membangun microservices di Java.
Beberapa API penting dari MicroProfile:
-
Config → membaca konfigurasi dengan cara standar.
-
Health → expose endpoint
/health
. -
Metrics → catatan performa & monitoring.
-
OpenAPI → dokumentasi API otomatis.
-
Fault Tolerance → retry, timeout, circuit breaker.
-
JWT Propagation → autentikasi berbasis token JWT.
-
Rest Client → panggil service lain dengan interface.
Kalau dibandingkan dengan Spring, MicroProfile mirip kombinasi Spring Boot Actuator + Spring Cloud.
4. Peran SmallRye di Balik MicroProfile
Kalau MicroProfile hanya mendefinisikan “kontrak”, maka SmallRye adalah implementasi nyata dari kontrak tersebut.
Di Quarkus, hampir semua fitur MicroProfile berjalan menggunakan SmallRye.
Contoh: MicroProfile Config → di Quarkus dijalankan oleh SmallRye Config.
import org.eclipse.microprofile.config.inject.ConfigProperty;
import jakarta.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class GreetingService {
@ConfigProperty(name = "greeting.message")
String message;
public String greet(String name) {
return message + ", " + name;
}
}
application.properties
:
greeting.message=Hello
Annotation @ConfigProperty
ini disediakan MicroProfile, tapi yang benar-benar bekerja di Quarkus adalah SmallRye Config.
5. Apakah Harus Install?
Jawabannya ya di pom atau graddle file.
Tapi di Quarkus, kita cukup tambahkan extension sesuai kebutuhan. Misalnya:
./mvnw quarkus:add-extension -Dextensions="smallrye-health,smallrye-openapi"
atau do Maven
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-health</artifactId>
</dependency>
Setelah itu:
Endpoint
/q/health
otomatis tersedia.-
Dokumentasi API bisa dilihat di
/q/openapi
.
Tidak perlu install SmallRye secara manual, Quarkus sudah bundling implementasinya.
6. Peta Konsep: Spring vs Quarkus
Agar lebih mudah dipahami bagi pengguna Spring Boot:
Quarkus (MicroProfile + SmallRye) | Spring Boot Ecosystem |
---|---|
JAX-RS (@Path , @GET ) | Spring MVC (@RestController , @GetMapping ) |
MicroProfile Config (SmallRye Config) | @Value , @ConfigurationProperties |
MicroProfile Health (SmallRye Health) | Actuator Health |
MicroProfile Metrics (SmallRye Metrics) | Actuator Metrics + Micrometer |
MicroProfile OpenAPI (SmallRye OpenAPI) | Springdoc OpenAPI |
MicroProfile Fault Tolerance (SmallRye FT) | Spring Retry / Resilience4j |
MicroProfile Rest Client (SmallRye Rest Client) | Spring Cloud OpenFeign |
MicroProfile JWT (SmallRye JWT) | Spring Security JWT/OAuth2 |
7. Kesimpulan
-
JAX-RS adalah dasar REST API di Quarkus (pengganti Spring MVC).
-
MicroProfile menyediakan standar microservices (config, health, metrics, dsb).
-
SmallRye adalah implementasi MicroProfile di Quarkus.
-
Developer cukup menambahkan extension Quarkus, tidak perlu repot instalasi manual MicroProfile/SmallRye.
Jadi, bagi pengguna Spring Boot: bayangkan Quarkus sebagai framework yang menggabungkan Spring Boot + Spring Cloud + Actuator, tapi dengan fokus cloud-native dan native image (GraalVM) yang lebih efisien.
Comments
Post a Comment