All Products
Search
Document Center

Serverless App Engine:Migrasi aplikasi Spring Cloud ke SAE secara lancar

Last Updated:Apr 02, 2026

Migrasikan kluster Spring Cloud yang berjalan di Alibaba Cloud ke Serverless App Engine (SAE) tanpa mengganggu lalu lintas aktif. Topik ini mencakup pendekatan dual-registration dan dual-subscription, di mana aplikasi yang telah dan belum dimigrasikan berada dalam mesh layanan yang sama hingga proses peralihan selesai. Aplikasi hanya melakukan restart satu kali selama keseluruhan proses.

Demo yang berfungsi tersedia di sc-migration-examples.zip.

Sebelum memulai

Tinjau daftar periksa berikut sebelum memulai migrasi. Mengidentifikasi hambatan sejak awal mencegah migrasi yang tidak lengkap yang memerlukan rollback.

PeriksaTindakan jika tidak terpenuhi
Semua aplikasi menggunakan penemuan layanan Spring Cloud (Eureka atau Consul)Aplikasi yang melewati penemuan layanan dan memanggil layanan langsung melalui IP atau hostname tidak dapat menggunakan pendekatan ini. Perbarui klien tersebut sebelum migrasi.
Port instans ECS tersedia (tidak digunakan oleh proses lain)Jika port sedang digunakan, gunakan solusi pemisahan traffic sebagai gantinya.
Aplikasi bersifat tanpa statusAplikasi berstatus memerlukan perencanaan tambahan untuk migrasi status.
Layanan Alibaba Cloud (ApsaraDB RDS, Message Queue) digunakan untuk penyimpanan dan messagingPenyimpanan dan messaging di luar Alibaba Cloud memerlukan koordinasi terpisah. Bergabunglah dengan grup DingTalk 32874633 untuk dukungan.

Ikhtisar migrasi

Migration process

Migrasi terdiri dari tiga fase:

FaseLangkahWajib
MigrasiLangkah 1: Migrasi aplikasiWajib
Pasca-migrasiLangkah 2: Migrasi SLB atau perbarui DNSOpsional
Pasca-migrasiLangkah 3: Migrasi penyimpanan dan antrian pesanOpsional

Pilih solusi migrasi

Dua solusi mendukung migrasi tanpa downtime:

SolusiCara kerjaKapan digunakan
Dual-registration dan dual-subscription (topik ini)Daftarkan aplikasi ke registri asli dan Nacos secara bersamaan. Aplikasi yang telah dan belum dimigrasikan saling menemukan satu sama lain selama proses berlangsung.Gunakan ketika port ECS tersedia. Hanya memerlukan satu kali restart aplikasi.
Pemisahan lalu lintasAlihkan registri ke Nacos melalui Spring Cloud Alibaba, terapkan set aplikasi baru di SAE, lalu alihkan traffic menggunakan Server Load Balancer (SLB) dan nama domain.Gunakan ketika port ECS sedang digunakan dan instans tidak dapat digunakan kembali.

Untuk solusi pemisahan traffic, lihat Modifikasi registrasi dan penemuan layanan aplikasi ke Nacos.

Cara kerja dual-registration dan dual-subscription

Diagram berikut menunjukkan status sistem pada setiap tahap migrasi.

Status awal

Initial status

Tahap 1

Stage 1

Tahap 2

Stage 2

Tahap 3

Stage 3

Tahap 4

Stage 4

Properti utama:

  • Aplikasi yang telah dan belum dimigrasikan saling menemukan dan memanggil satu sama lain, memastikan kelangsungan bisnis.

  • Satu-satunya perubahan kode yang diperlukan adalah dua dependensi baru dan satu anotasi pada kelas utama.

  • Pantau panggilan layanan konsumen dan lacak progres migrasi secara real-time melalui SAE.

  • Kontrol kebijakan registrasi dan subscription secara dinamis melalui manajemen konfigurasi SAE — tidak perlu restart berulang. Aplikasi hanya restart satu kali.

Langkah 1: Migrasi aplikasi pertama

1. Pilih aplikasi

Mulailah dengan penyedia layanan dasar — layanan yang tidak memiliki dependensi hulu. Jika jejak panggilan kompleks atau sulit dipetakan, pilih aplikasi apa pun untuk memulai.

2. Tambahkan dependensi dan perbarui konfigurasi

a. Tambahkan dependensi penemuan Nacos

Tambahkan spring-cloud-starter-alibaba-nacos-discovery ke pom.xml:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>{Version}</version>
</dependency>

b. Konfigurasikan alamat server Nacos

Tambahkan berikut ini ke application.properties:

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

c. Tambahkan dependensi migrasi multi-registri

Secara default, Spring Cloud hanya mengizinkan satu registri. Menambahkan registri kedua menyebabkan error. Dependensi edas-sc-migration-starter menghapus batasan ini dan memungkinkan registrasi simultan ke beberapa registri.

Tambahkan ke pom.xml:

<dependency>
    <groupId>com.alibaba.edas</groupId>
    <artifactId>edas-sc-migration-starter</artifactId>
    <version>1.0.2</version>
</dependency>

3. Perbarui konfigurasi RibbonClients

Untuk berlangganan layanan dari beberapa registri, atur @RibbonClients agar menggunakan MigrationRibbonConfiguration pada kelas utama.

Sebelumnya:

@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

Setelah:

@SpringBootApplication
@RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class)
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}
Setelah menerapkan perubahan ini — baik di lingkungan on-premises maupun di SAE — Anda dapat mengontrol registri mana yang digunakan aplikasi untuk registrasi atau subscription melalui Spring Cloud Config atau Nacos Config, tanpa perlu merestart aplikasi. Untuk detailnya, lihat Sesuaikan kebijakan registrasi dan subscription layanan secara dinamis dan Kelola konfigurasi aplikasi.

4. Terapkan aplikasi di SAE

Terapkan aplikasi sesuai kebutuhan Anda. Untuk detailnya, lihat Terapkan aplikasi.

5. Verifikasi migrasi

Gunakan salah satu metode berikut:

Opsi 1: Periksa perilaku bisnis

Pastikan bisnis Anda berjalan seperti yang diharapkan setelah deployment.

Opsi 2: Periksa pemantauan subscription layanan

Jika Spring Boot Actuator diaktifkan, akses titik akhir berikut untuk melihat RibbonServerList untuk setiap layanan yang berlangganan. Bidang serverGroup dalam metaInfo menunjukkan registri mana yang dimiliki oleh suatu node.

Versi Spring BootTitik akhir
1.xhttp://ip:port/dubboRegistry
2.xhttp://ip:port/actuator/dubboRegistry
Enable Spring Boot Actuator monitoring

Langkah 2: Migrasi aplikasi lainnya

Migrasikan semua aplikasi yang tersisa ke SAE secara berurutan, mengikuti langkah-langkah yang sama seperti Langkah 1.

Pasca-migrasi: Pembersihan dan finalisasi

Hapus dependensi migrasi

Setelah semua aplikasi berada di SAE, hapus konfigurasi registri asli dan dependensi edas-sc-migration-starter.

Penting

edas-sc-migration-starter adalah dependensi yang hanya digunakan untuk migrasi. Membiarkannya tidak memengaruhi stabilitas layanan, tetapi membatasi efektivitas load balancing Ribbon. Hapus dependensi ini setelah migrasi dan restart aplikasi secara bertahap selama jam sepi.

Migrasi SLB atau perbarui pengaturan DNS

Setelah migrasi aplikasi Anda, tangani konfigurasi instans SLB dan nama domain:

Instance SLB

SkenarioTindakan
SLB sudah ada sebelum migrasiGunakan kembali. Untuk detail binding, lihat Bind instans CLB ke aplikasi, dan hasilkan IP publik atau privat untuknya.
Tidak ada SLB sebelum migrasiBuat instans SLB dan bind ke aplikasi ingress (misalnya API gateway).
Port ECS sedang digunakanGunakan solusi pemisahan traffic. Tambahkan instans ECS baru, lalu gunakan kembali SLB yang ada atau buat yang baru.

Nama domain

SkenarioTindakan
SLB digunakan kembaliTidak perlu perubahan nama domain.
SLB baru dibuatTambahkan SLB baru ke pengaturan nama domain dan hapus entri lama. Lihat Perbarui server DNS.

Migrasi penyimpanan dan antrian pesan

Jika aplikasi Anda menggunakan layanan Alibaba Cloud seperti ApsaraDB RDS dan Message Queue, Anda tidak perlu memigrasikan penyimpanan atau antrian pesan. Jika aplikasi Anda tidak diterapkan di Alibaba Cloud, bergabunglah dengan grup DingTalk 32874633 untuk dukungan teknis.

Sesuaikan kebijakan registrasi dan subscription layanan secara dinamis

Gunakan fitur manajemen konfigurasi SAE untuk menyesuaikan kebijakan registrasi dan subscription kapan saja selama migrasi — tanpa perlu merestart aplikasi.

Menyesuaikan kebijakan langganan

Secara default, SAE berlangganan dan menggabungkan data layanan dari semua registri terkait.

Untuk berlangganan hanya ke registri tertentu, atur properti spring.cloud.edas.migration.subscribes:

# Berlangganan layanan dari Eureka dan Nacos
spring.cloud.edas.migration.subscribes=nacos,eureka

# Berlangganan layanan hanya dari Nacos
spring.cloud.edas.migration.subscribes=nacos

Sesuaikan kebijakan registrasi

Secara default, SAE mendaftar ke semua registri terkait.

Untuk mengecualikan registri tertentu, atur properti spring.cloud.edas.migration.registry.excludes:

# Daftar ke semua registri (default — biarkan kosong)
spring.cloud.edas.migration.registry.excludes=

# Nonaktifkan registrasi hanya ke Eureka
spring.cloud.edas.migration.registry.excludes=eureka

# Nonaktifkan registrasi ke Nacos dan Eureka
spring.cloud.edas.migration.registry.excludes=nacos,eureka

Gunakan fitur manajemen konfigurasi SAE untuk memperbarui properti ini saat runtime tanpa merestart aplikasi Anda.