All Products
Search
Document Center

Microservices Engine:Migrasi layanan dari Spring Cloud Gateway ke gateway cloud-native

Last Updated:Mar 11, 2026

Spring Cloud Gateway pada Kubernetes tidak dapat menemukan layanan kontainer secara native, sehingga menghasilkan kinerja yang lebih rendah dibandingkan gateway NGINX Ingress serta memerlukan pengembangan kustom untuk observabilitas dan keamanan. Dalam skenario migrasi cloud dan cloud hibrida, hal ini sering menghasilkan arsitektur dua lapis—Ingress ditambah Spring Cloud Gateway—yang menambah hop jaringan, konsumsi sumber daya, serta biaya operasi & pemeliharaan (O&M).

Gateway cloud-native Microservices Engine (MSE) menyatukan gateway trafik dan gateway layanan mikro dalam satu lapisan berkinerja tinggi, terintegrasi erat, dan siap pakai, sehingga secara signifikan mengurangi biaya layanan. Panduan ini menjelaskan lima langkah untuk memigrasikan rute, sumber layanan, autentikasi, dan trafik dari Spring Cloud Gateway Anda ke gateway cloud-native MSE.

Pemetaan Spring Cloud Gateway ke gateway cloud-native

Sebelum memulai, tinjau cara konsep inti di Spring Cloud Gateway dipetakan ke gateway cloud-native:

Spring Cloud GatewayCloud-native gatewayCatatan
Registri NacosSumber layananGateway cloud-native menarik daftar layanan dari sumber layanan yang dikonfigurasi (Nacos, ACK, EDAS, atau SAE).
spring.cloud.gateway.routesAturan routingDefinisikan rute di Konsol MSE, bukan dalam file YAML. Setiap rute memetakan predikat path ke layanan backend.
Predikat rute (Path=)Kondisi pencocokan ruteMendukung pencocokan path.
uri: lb://service-aLayanan backend + versiPilih layanan yang diimpor dari sumber layanan, lalu konfigurasikan versi targetnya.
Aturan load balancing RibbonKebijakan load balancingKonfigurasikan melalui pengaturan layanan di Konsol MSE.
Pemutus sirkuit HystrixKebijakan tingkat ruteGateway cloud-native menyediakan kebijakan throttling, timeout, dan lainnya per rute.
AddResponseHeader filterKebijakan pengaturan HeaderKonfigurasikan sebagai kebijakan tingkat rute di Konsol MSE.
Filter autentikasi kustomAutentikasi JWT / OIDC / IDaaS / kustomPlugin autentikasi menggantikan kode filter kustom.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Langkah 1: Identifikasi dan konfigurasikan sumber layanan

Gateway cloud-native memerlukan sumber layanan untuk menemukan layanan backend Anda. Bergantung pada pengaturan Anda, Anda mungkin sudah memiliki sumber yang kompatibel atau perlu mengonfigurasi yang baru.

Kapan melewati langkah ini

Lewati ke Langkah 2 jika salah satu kondisi berikut berlaku:

  • Anda menggunakan Container Service for Kubernetes (ACK) dengan penemuan layanan Kubernetes

  • Anda menggunakan instans MSE Nacos yang telah ditingkatkan ke versi yang mendukung Mesh Configuration Protocol (MCP)

  • Anda tidak menggunakan mekanisme penemuan layanan dan mengandalkan nama domain atau alamat IP tetap

Siapkan sumber layanan berdasarkan jenis registri

Pilih opsi yang sesuai dengan registri Anda saat ini:

Instans MSE Nacos

  1. Beli instans MSE Nacos. Lihat Buat engine Nacos.

  2. Daftarkan layanan Anda ke instans MSE Nacos dengan memperbarui konfigurasi atau kode aplikasi Anda. Lihat Dokumentasi Nacos Java SDK.

  3. (Opsional) Untuk aplikasi Java, gunakan agen Microservices Governance MSE untuk mengotomatiskan migrasi pendaftaran. Lihat Solusi migrasi berbasis MSE Sync.

Registri Enterprise Distributed Application Service (EDAS)

Tambahkan registri EDAS Anda sebagai sumber layanan secara langsung. Lihat Tambahkan sumber layanan.

Registri Serverless App Engine (SAE)

Tambahkan registri SAE Anda sebagai sumber layanan secara langsung. Lihat Tambahkan sumber layanan.

Verifikasi sumber layanan

Setelah menambahkan sumber layanan, buka Konsol MSE dan navigasikan ke gateway cloud-native Anda. Pastikan sumber layanan muncul dalam daftar sumber layanan dan berfungsi dengan benar.

Langkah 2: Migrasi konfigurasi routing dan layanan

Terjemahkan konfigurasi YAML Spring Cloud Gateway Anda ke pengaturan gateway cloud-native di Konsol MSE. Contoh berikut menunjukkan konfigurasi tipikal dan cara setiap bagian dipetakan ke konsol.

Contoh konfigurasi Spring Cloud Gateway

Pengikatan registri:

spring:
  application:
    name: gateway-demo
  cloud:
    nacos:
      discovery:
        server-addr: nacos-server:8848
      config:
        enabled: false

Rute dan load balancing:

spring:
  cloud:
    gateway:
      default-filters:
        - AddResponseHeader=X-Response-Default-Foo, Default-Bar

      routes:
        - id: websocket_test
          uri: ws://localhost:9000
          order: 9000
          predicates:
            - Path=/echo
        - id: default_path_to_service-a
          uri: lb://service-a
          order: 10000
          predicates:
            - Path=/sleep
service-a:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule
    ConnectTimeout: 1000
    ReadTimeout: 8000
    MaxAutoRetries: 3
    MaxAutoRetriesNextServer: 2
    MaxTotalConnections: 20000
    MaxConnectionsPerHost: 5000
hystrix:
  command:
    service-a:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 60000
          strategy: SEMAPHORE
          semaphore:
            maxConcurrentRequests: 60000

Migrasi setiap bagian konfigurasi

Lakukan operasi berikut di Konsol MSE:

1. Ganti pengikatan registri dengan sumber layanan

Blok spring.cloud.nacos.discovery digantikan oleh sumber layanan yang Anda konfigurasi di Langkah 1. Tidak diperlukan tindakan tambahan.

2. Impor layanan backend

Impor setiap layanan backend yang dirujuk dalam rute Anda (misalnya, service-a).

  1. Di Konsol MSE, buka gateway cloud-native Anda dan impor layanan dari sumber layanan Anda. Lihat Tambahkan layanan.

  2. Konfigurasikan versi yang sesuai untuk setiap layanan yang diimpor. Lihat Kelola versi layanan.

Pengaturan load balancing Ribbon dan pemutus sirkuit Hystrix (WeightedResponseTimeRule, ConnectTimeout, ReadTimeout, batas retry dan konkurensi) dipetakan ke kebijakan layanan dan rute gateway cloud-native. Konfigurasikan di konsol.

3. Buat aturan routing

Terjemahkan setiap entri rute menjadi aturan routing gateway cloud-native. Lihat Buat aturan routing.

Untuk contoh di atas, buat dua aturan routing:

Rute Spring Cloud GatewayRute gateway cloud-native
websocket_test: path /echo -> ws://localhost:9000Pencocokan path: /echo, backend: layanan WebSocket di localhost:9000
default_path_to_service-a: path /sleep -> lb://service-aPencocokan path: /sleep, backend: service-a (diimpor dari sumber layanan)

4. Konfigurasikan kebijakan tingkat rute

default-filters di Spring Cloud Gateway (seperti AddResponseHeader) dipetakan ke kebijakan tingkat rute pada gateway cloud-native. Konfigurasikan kebijakan berikut sesuai kebutuhan:

Verifikasi konfigurasi routing

Setelah membuat aturan routing, kirim permintaan uji ke titik akhir gateway cloud-native untuk setiap rute yang dimigrasikan. Pastikan permintaan mencapai layanan backend yang benar dan mengembalikan respons yang diharapkan.

# Uji rute WebSocket /echo
curl -v http://<cloud-native-gateway-endpoint>/echo

# Uji rute /sleep
curl -v http://<cloud-native-gateway-endpoint>/sleep

Langkah 3: Siapkan autentikasi

Jika Spring Cloud Gateway Anda menggunakan filter autentikasi kustom, gantilah dengan metode autentikasi gateway cloud-native. Pilih metode yang sesuai dengan penyedia identitas Anda:

Verifikasi autentikasi

Setelah mengonfigurasi autentikasi, kirim permintaan tanpa kredensial yang valid dan pastikan gateway mengembalikan respons 401 Unauthorized. Kemudian kirim permintaan dengan kredensial yang valid dan pastikan permintaan tersebut mencapai layanan backend.

# Harapkan respons 401 Unauthorized
curl -v http://<cloud-native-gateway-endpoint>/sleep

# Harapkan respons 200 OK dengan token yang valid
curl -v -H "Authorization: Bearer <valid-token>" http://<cloud-native-gateway-endpoint>/sleep

Langkah 4: Siapkan observabilitas

Gateway cloud-native menyediakan pemantauan, peringatan, pengiriman log, dan tracing—menggantikan integrasi kustom yang biasanya diperlukan dengan Spring Cloud Gateway. Aktifkan kemampuan yang sesuai dengan kebutuhan Anda:

Verifikasi observabilitas

Setelah mengaktifkan pemantauan dan pengiriman log, hasilkan trafik uji. Pastikan metrik muncul di dasbor gateway dan log mencapai tujuan yang ditentukan.

Langkah 5: Migrasi trafik

Dengan aturan routing, autentikasi, dan observabilitas yang telah siap, migrasikan trafik produksi dari Spring Cloud Gateway ke gateway cloud-native. Empat strategi migrasi tersedia, masing-masing dengan keseimbangan biaya dan risiko yang berbeda:

StrategiBiayaRisikoDeskripsi
Migrasi iteratifTinggiRendahUbah URL akses beberapa layanan sekaligus di sisi pemanggil atau klien. Validasi setiap batch sebelum melanjutkan.
Migrasi bertahap di sisi proxySedangSedangKelompokkan layanan berdasarkan jenis (inti vs. non-inti) di proxy asli. Migrasikan layanan non-inti terlebih dahulu, lalu layanan inti.
Migrasi penuh berbasis DNSRendahTinggiArahkan nama domain asli langsung ke URL akses gateway cloud-native. Seluruh trafik beralih sekaligus.
Migrasi prosedural (direkomendasikan)Relatif rendahRelatif rendahKombinasi terstruktur dari strategi di atas. Lihat prosedur yang direkomendasikan di bawah.

Prosedur yang direkomendasikan

  1. Buat backup konfigurasi Anda. Pastikan Anda memiliki salinan semua file konfigurasi Spring Cloud Gateway (application.yml, bootstrap.yml, dan konfigurasi eksternal apa pun). Backup ini menjadi garis dasar rollback Anda.

  2. Uji dengan batch kecil. Migrasikan beberapa layanan non-kritis ke gateway cloud-native dan validasi routing, autentikasi, serta perilaku responsnya.

  3. Migrasikan layanan inti secara berurutan. Setelah batch uji lolos validasi, migrasikan layanan inti satu per satu. Pantau laju error dan latensi di dasbor gateway setelah setiap layanan dimigrasikan.

  4. Jalankan uji stres. Sebelum mengalihkan seluruh trafik, jalankan uji stres terhadap gateway cloud-native untuk memastikan gateway mampu menangani throughput yang diharapkan.

  5. Lakukan migrasi penuh berbasis DNS. Asosiasikan nama domain asli Anda dengan URL akses gateway cloud-native untuk mengalihkan seluruh trafik yang tersisa.

  6. Pertahankan gateway asli tetap berjalan. Pertahankan penerapan Spring Cloud Gateway selama periode rollback. Jika terjadi masalah, kembalikan rekaman DNS agar mengarah kembali ke gateway asli.

Rollback

Jika Anda mengalami masalah setelah mengalihkan trafik, kembalikan rekaman DNS agar mengarah kembali ke Spring Cloud Gateway. Karena konfigurasi asli dan pendaftaran layanan tetap utuh selama migrasi, rollback hanya memerlukan perubahan DNS.

Lihat juga