Bagikan melalui


Memigrasikan aplikasi Java ke Azure Container Apps dengan menggunakan modernisasi aplikasi GitHub Copilot

Dalam artikel ini, Anda mempelajari cara menggunakan modernisasi aplikasi GitHub Copilot untuk menilai, memulihkan, membuat kontainer, dan menyebarkan aplikasi Java ke Azure Container Apps. Modernisasi aplikasi GitHub Copilot adalah asisten bertenaga AI yang menggabungkan GitHub Copilot dengan alat sumber terbuka seperti OpenRewrite mengotomatiskan langkah-langkah peningkatan dan migrasi yang kompleks.

Alat ini mendukung proyek Maven dan Gradle, menargetkan peningkatan antara Java versi 8, 11, 17, dan 21, dan berfokus pada modernisasi aplikasi Spring Boot. Ini menyediakan tugas yang telah ditentukan sebelumnya untuk skenario migrasi umum dan menggabungkan praktik terbaik untuk menjalankan aplikasi di Azure Container Apps.

Prasyarat

Nota

Jika Anda menggunakan Gradle, hanya pembungkus Gradle versi 5 atau yang lebih baru yang didukung. Kotlin Domain Specific Language (DSL) tidak didukung. Fungsi My Tasks ini belum didukung untuk IntelliJ IDEA.

Meningkatkan versi JDK dan kerangka kerja

Sebelum Anda bermigrasi ke Azure Container Apps, pastikan aplikasi Java Anda berjalan pada versi JDK yang didukung dan up-to-date. Meningkatkan JDK dan kerangka kerja Anda terlebih dahulu memastikan bahwa langkah-langkah migrasi berikutnya menargetkan basis kode modern.

Ada dua cara untuk meningkatkan versi JDK Anda. Kedua cara menggunakan panel modernisasi aplikasi GitHub Copilot, yang dapat Anda akses dari bar samping di Visual Studio Code.

  1. Pilih Upgrade Runtime & Frameworks di bagian QUICKSTART.
  2. Atau, jalankan tugas Java Runtime yang Ditingkatkan di bagian TUGAS - Tingkatkan Tugas .

Cuplikan layar Visual Studio Code yang memperlihatkan panel modernisasi aplikasi GitHub Copilot dengan opsi Peningkatan disorot.

Untuk meningkatkan kerangka kerja Spring atau dependensi non-Microsoft, jalankan tugas Tingkatkan Kerangka Kerja Java di bagian TUGAS - Tingkatkan Tugas .

Cuplikan layar Visual Studio Code yang menampilkan panel modernisasi aplikasi GitHub Copilot dengan tugas Pembaruan Kerangka Java yang disorot.

Menilai kesiapan cloud untuk Azure Container Apps

Penilaian mengidentifikasi tantangan kesiapan cloud di basis kode Anda dan menilai dampaknya. Ini memberikan rekomendasi khusus untuk Azure Container Apps.

Mengonfigurasi penilaian

Sebelum menjalankan penilaian, konfigurasikan dengan memilih Konfigurasi penilaian di panel Penilaian modernisasi aplikasi GitHub Copilot.

Cuplikan layar Visual Studio Code yang memperlihatkan panel Penilaian modernisasi aplikasi GitHub Copilot dengan tombol Konfigurasi Penilaian disorot.

Untuk Azure Container Apps, gunakan konfigurasi berikut:

appcat:
- target:
    - azure-container-apps
  os:
    - linux
  mode: source-only

Jalankan penilaian

Gunakan langkah-langkah berikut untuk menjalankan penilaian:

  1. Di bar samping, pilih panel modernisasi aplikasi GitHub Copilot lalu pilih Migrasi ke Azure atau Jalankan Penilaian di bagian PENILAIAN .

    Cuplikan layar Visual Studio Code yang memperlihatkan panel modernisasi aplikasi GitHub Copilot dengan tombol Migrasi ke Azure dan Jalankan Penilaian disorot.

  2. Jendela obrolan GitHub Copilot dengan mode agen terbuka untuk memanggil penilai modernisasi. Pilih Lanjutkan untuk mengonfirmasi.

  3. Penilai modernisasi memverifikasi lingkungan lokal Anda terlebih dahulu. Jika AppCAT dan dependensinya tidak diinstal, agen membantu Anda menginstalnya. Setelah penginstalan, agen memanggil AppCAT untuk menilai proyek Anda. Langkah ini dapat memakan waktu beberapa menit untuk diselesaikan.

  4. Setelah penilaian selesai, penilai modernisasi menghasilkan tampilan kategoris masalah kesiapan cloud dalam Laporan Penilaian.

    Cuplikan layar panel Visual Studio Code yang memperlihatkan laporan penilaian.

Menginterpretasikan laporan penilaian

Laporan penilaian memberikan hasil analisis yang komprehensif. Laporan ini terdiri dari beberapa bagian utama:

  • Informasi Aplikasi: Informasi dasar termasuk versi Java, kerangka kerja, alat build, struktur proyek, dan layanan Azure target.
  • Ringkasan Masalah: Gambaran umum masalah migrasi yang dikategorikan berdasarkan domain dengan persentase kekritisan.
  • Analisis Terperinci diatur ke dalam empat tab:
    • Masalah: Daftar kesiapan cloud yang dikategorikan dan masalah peningkatan Java yang perlu Anda atasi.
    • Dependensi: Semua dependensi paket Java ditemukan dalam aplikasi.
    • Teknologi: Teknologi yang dikelompokkan menurut fungsi yang ditemukan dalam aplikasi yang dianalisis.
    • Wawasan: Detail-detail dan informasi file untuk membantu Anda memahami teknologi yang terdeteksi.

Cuplikan layar Visual Studio Code yang memperlihatkan dasbor laporan penilaian modernisasi aplikasi GitHub Copilot.

Laporan mengategorikan masalah berdasarkan tingkat kekritisan berikut:

Kritis Deskripsi
Wajib Masalah yang harus Anda perbaiki untuk migrasi ke Azure Container Apps.
Potensi Masalah yang mungkin memengaruhi migrasi dan perlu ditinjau.
Fakultatif Masalah berdampak rendah. Memperbaikinya disarankan tetapi opsional.

Cuplikan layar Visual Studio Code yang menampilkan daftar masalah laporan penilaian modernisasi aplikasi GitHub Copilot.

Anda dapat memperluas setiap masalah yang dilaporkan untuk melihat daftar file yang terkena dampak dan deskripsi terperinci termasuk masalah, solusi yang diketahui, dan dokumentasi pendukung.

Cuplikan layar Visual Studio Code yang memperlihatkan detail masalah laporan penilaian modernisasi aplikasi GitHub Copilot.

Mengelola laporan penilaian

Ekstensi ini mendukung impor, ekspor, dan penghapusan laporan penilaian sehingga Anda dapat berbagi temuan dengan tim Anda atau mengatur ruang kerja Anda.

  • Impor: Pilih Impor di bagian penilaian untuk mengimpor laporan dari hasil AppCAT CLI, laporan yang diekspor, atau file konteks aplikasi.
  • Ekspor: Klik kanan Laporan Penilaian dan pilih Ekspor untuk berbagi laporan dengan orang lain.
  • Hapus: Klik kanan Laporan Penilaian dan pilih Hapus untuk menghapus laporan.

Memulihkan masalah migrasi

Setelah Anda menyelesaikan penilaian, perbaiki masalah yang diidentifikasi dengan menggunakan tugas yang telah ditentukan atau kustom. Modernisasi aplikasi GitHub Copilot menyediakan dua pendekatan: tugas yang telah ditentukan sebelumnya yang menangani pola migrasi umum, dan tugas kustom yang Anda tentukan untuk kebutuhan spesifik organisasi Anda.

Pilih agen AppModernization

Agen AppModernization memberikan pengalaman terbaik untuk tugas migrasi dan modernisasi aplikasi Java. Untuk memilihnya:

  1. Buka jendela obrolan Copilot dengan memilih ikon obrolan di Bilah Aktivitas.
  2. Di jendela obrolan, temukan menu dropdown pemilih agen di bagian atas kotak input obrolan dan pilih AppModernization dari daftar.

Cuplikan layar Visual Studio Code yang memperlihatkan menu dropdown pemilih agen di jendela obrolan.

Nota

Di Visual Studio Code, modernisasi aplikasi menggunakan AppModernization agen kustom dengan model yang direkomendasikan yang dipilih secara default untuk hasil terbaik. Anda dapat mengubah model dengan memilih Konfigurasikan Agen Kustom dari menu Agen.

Dengan agen AppModernization dipilih, gunakan perintah bahasa alami sederhana untuk melakukan tugas migrasi:

  • Migrasi database:migrate to Managed Identity for Azure SQL Database
  • Migrasi penyimpanan: migrate from AWS S3 to Azure Storage Blob
  • Migrasi pesan: migrate from RabbitMQ to Azure Service Bus
  • Manajemen rahasia: migrate secrets to Azure Key Vault
  • Migrasi autentikasi: migrate to Microsoft Entra ID authentication

Menjalankan tugas migrasi yang telah ditentukan sebelumnya

Fitur modernisasi aplikasi GitHub Copilot mendukung tugas yang telah ditentukan sebelumnya berikut untuk migrasi Azure Container Apps:

Tugas Deskripsi
Spring RabbitMQ ke Azure Service Bus Mengonversi Spring AMQP/JMS dengan RabbitMQ ke Azure Service Bus, mempertahankan pola olahpesan, dan mengaktifkan autentikasi yang aman.
Identitas Terkelola untuk migrasi Database Menyiapkan basis kode Anda untuk autentikasi Identitas Terkelola ke Azure SQL Server, Azure Database for MySQL, Azure Database for PostgreSQL, Azure Cosmos DB for Cassandra API, dan Azure Cosmos DB for MongoDB.
Identitas Terkelola untuk Migrasi Kredensial Mengubah aplikasi Java Anda untuk menggunakan autentikasi Azure Managed Identity untuk layanan olahpesan seperti Azure Event Hubs dan Azure Service Bus, menghilangkan string koneksi.
AWS S3 ke Azure Storage Blob Mengonversi kode yang berinteraksi dengan AWS S3 menjadi kode yang beroperasi dengan Azure Storage Blob, mempertahankan semantik yang sama.
Pengelogan ke file lokal Mengonversi pengelogan berbasis file ke pengelogan berbasis konsol, membuatnya siap untuk integrasi dengan Azure Monitor.
I/O file lokal ke mount share file di Azure Storage Mengonversi pembacaan dan penulisan file lokal ke akses jalur pemasangan terpadu, memungkinkan pemasangan berbagi File Azure Storage di Azure Container Apps. Untuk informasi selengkapnya, lihat Gunakan pemasangan penyimpanan di Azure Container Apps.
Java Mail ke Azure Communication Service Mengonversi aplikasi yang mengirim email melalui SMTP untuk menggunakan Azure Communication Services, yang sepenuhnya kompatibel dengan hosting Azure Container Apps.
Manajemen Rahasia dan Sertifikat ke Azure Key Vault Memigrasikan rahasia yang dikodekan secara permanen dan sertifikat TLS/mTLS lokal ke Azure Key Vault. Untuk informasi selengkapnya, lihat Mengelola rahasia di Azure Container Apps.
Autentikasi pengguna ke ID Microsoft Entra Transisi mekanisme autentikasi pengguna lokal (seperti berbasis LDAP) ke ID Microsoft Entra untuk autentikasi. Untuk informasi selengkapnya, lihat Autentikasi dan otorisasi di Azure Container Apps.
Dialek SQL: Oracle ke PostgreSQL Mengonversi kueri, jenis data, dan fungsi SQL khusus Oracle ke setara PostgreSQL untuk digunakan dengan Azure Database for PostgreSQL.
AWS Secret Manager ke Azure Key Vault Mengubah semua aspek manajemen rahasia dari AWS Secret Manager ke Azure Key Vault.
ActiveMQ ke Azure Service Bus Mengonversi produsen pesan ActiveMQ, konsumen, pabrik koneksi, dan interaksi antrean/topik ke setara Azure Service Bus.
AWS SQS ke Azure Service Bus Menerjemahkan konstruksi kode khusus SQS ke padanan Azure Service Bus, sambil mempertahankan semantik pengiriman pesan.

Menerapkan tugas yang telah ditentukan sebelumnya dari penilaian

  1. Di Laporan Penilaian, pilih solusi yang diinginkan di bawah masalah yang terdeteksi dan pilih Jalankan Tugas.
  2. Jendela obrolan Copilot terbuka dengan Mode Agen. Agen menghasilkan plan.md dan progress.md, dan Anda dapat meninjau rencana sebelum melanjutkan.
  3. Masukkan continue secara manual untuk mengonfirmasi dan memulai proses migrasi.
  4. Sebelum Anda membuat perubahan kode, agen memeriksa status sistem kontrol versi dan memeriksa cabang baru.
  5. Berulang kali pilih atau input Lanjutkan untuk mengonfirmasi penggunaan alat dan tunggu hingga perubahan kode selesai.

Cuplikan layar panel Masalah Visual Studio Code yang memperlihatkan opsi Migrasi ke Azure SQL Database dengan tombol Jalankan Tugas disorot.

Meninjau hasil validasi

Setelah Anda menyelesaikan perubahan kode, agen menjalankan perulangan validasi otomatis yang menyertakan pemeriksaan berikut:

  1. Validasi-CVE: Mendeteksi Kerentanan Umum dan Paparan dalam dependensi saat ini dan memperbaikinya.
  2. Build-Project: Mencoba mengatasi kesalahan build apa pun.
  3. Validasi Konsistensi: Menganalisis kode untuk konsistensi fungsi.
  4. Run-Test: Menjalankan pengujian unit dan secara otomatis menghasilkan rencana untuk memperbaiki kegagalan.
  5. Validasi Kelengkapan: Menangkap item migrasi yang terlewatkan dalam migrasi kode awal dan memperbaikinya.

Setelah semua pemeriksaan selesai, masukkan continue untuk menghasilkan ringkasan migrasi. Tinjau perubahan kode dan konfirmasi dengan memilih Simpan.

Membuat tugas kustom

Selain tugas yang telah ditentukan sebelumnya, Anda dapat membuat tugas kustom berdasarkan pola migrasi khusus organisasi Anda. Tugas kustom menggunakan referensi dari commit Git, tautan eksternal, atau file teks untuk mengarahkan agen migrasi.

Buat tugas kustom dari commit Git

  1. Di bar samping Aktivitas, buka panel ekstensi modernisasi aplikasi GitHub Copilot, arahkan mouse ke bagian TUGAS , lalu pilih Buat Tugas Kustom.

    Cuplikan layar Visual Studio Code yang memperlihatkan panel Tugas modernisasi aplikasi GitHub Copilot dengan tombol Buat Tugas Kustom disorot.

  2. Dalam file yang dibuka task.md , masukkan nama tugas dan perintah tugas.

    Cuplikan layar Visual Studio Code yang memperlihatkan tugas migrasi rabbitmq dengan bidang Nama Tugas dan Permintaan Tugas yang disorot.

  3. Pilih Tambahkan Referensi lalu pilih Penerapan Git dalam kotak dialog pop-up.

    Cuplikan layar Visual Studio Code yang memperlihatkan daftar drop-down Pilih Tipe Sumber dengan opsi commit Git disorot.

  4. Cari dan pilih komit yang relevan, lalu pilih OK.

    Cuplikan layar kotak dialog Visual Studio Code dengan judul Pilih komit sebagai sumber.

  5. Pilih Simpan. Tugas kustom Anda sekarang muncul di bagian TUGAS - Tugas Saya .

    Cuplikan layar Visual Studio Code yang memperlihatkan file task.md dengan tombol Simpan disorot.

  1. task.md Buka file dan masukkan nama tugas dan perintah. Contohnya:

    • Nama Tugas: Expose health endpoint via Spring Boot Actuator
    • Perintah Tugas: You are a Spring Boot developer assistant, follow the Spring Boot Actuator documentation to add basic health endpoints for Azure Container Apps deployment.

    Cuplikan layar Visual Studio Code yang memperlihatkan tugas titik akhir kesehatan yang diekspos dengan bidang Nama Tugas dan Permintaan Tugas disorot.

  2. Pilih Tambahkan Referensi, pilih Tautan eksternal, lalu tempelkan referensi URL. Pilih Tambahkan Referensi lagi, pilih File Teks, lalu tambahkan file dengan instruksi tambahan.

  3. Pilih Simpan untuk membuat tugas.

    Cuplikan layar Visual Studio Code yang menampilkan file task.md dengan referensi yang ditambahkan.

Berbagi tugas kustom

Anda dapat berbagi tugas kustom dengan anggota tim lain dengan berbagi folder tugas.

Untuk berbagi tugas kustom, salin folder di bawah .github/appmod/custom-tasks dan bagikan dengan penerima yang dimaksudkan. Penerima menempelkan folder tugas ke .github/appmod/custom-tasks direktori dan memilih Refresh Tugas di panel ekstensi.

Menjalankan tugas kustom

Pilih Jalankan di bagian bawah file tugas, atau temukan tugas Anda di bagian TUGAS - Tugas Saya dan pilih Jalankan Tugas. Jendela obrolan Copilot terbuka dalam Mode Agen dan secara otomatis menjalankan alur kerja migrasi.

Cuplikan layar Visual Studio Code yang memperlihatkan bagian Tugas dengan Tugas Jalankan dan tombol Jalankan disorot.

Jika aplikasi Anda menggunakan database Oracle, lanjutkan ke bagian berikutnya. Jika tidak, lewati ke Containerize aplikasi Anda.

Migrasi dari Oracle ke PostgreSQL

Nota

Bagian ini hanya berlaku jika aplikasi Anda menggunakan database Oracle. Jika aplikasi Anda tidak menggunakan Oracle, lewati ke Kontainerkan aplikasi Anda.

Modernisasi aplikasi GitHub Copilot menyediakan tugas migrasi khusus untuk skenario Oracle ke Azure Database for PostgreSQL yang mencakup:

  • Alat migrasi database yang didukung AI: Untuk informasi selengkapnya, lihat Apa itu ekstensi PostgreSQL untuk pratinjau Visual Studio Code?.
  • Konversi Smart SQL dalam kode aplikasi: Fungsionalitas konversi SQL bawaan dalam modernisasi aplikasi GitHub Copilot, terintegrasi dengan mulus sebagai bagian dari alur kerja tugas terpadu.

Menggunakan tugas migrasi Oracle ke PostgreSQL

  1. Jalankan penilaian aplikasi seperti yang dijelaskan dalam Menilai kesiapan cloud untuk Azure Container Apps.

  2. Setelah penilaian selesai, tinjau laporan. Jika aplikasi Anda menggunakan Oracle, laporan mengungkapkan masalah terkait Oracle Migrasi Database (Oracle) dengan solusi default Bermigrasi dari Oracle DB ke PostgreSQL.

    Cuplikan layar Visual Studio Code yang menampilkan laporan penilaian modernisasi aplikasi GitHub Copilot untuk Oracle.

  3. Secara opsional, periksa apakah coding_notes.md ada di .github/postgre-migrations/*/results/application_guidance/ folder. Jika ada, modernisasi aplikasi mereferensikan catatan ini untuk konversi SQL berkualitas lebih tinggi. Jika tidak, hubungi tim database Anda untuk menghasilkannya dengan menggunakan ekstensi Visual Studio Code PostgreSQL.

  4. Pilih Jalankan Tugas untuk menjalankan migrasi.

    Cuplikan layar Visual Studio Code yang memperlihatkan eksekusi tugas modernisasi aplikasi GitHub Copilot untuk Oracle ke PostgreSQL.

Membuat kontainer aplikasi Anda

Setelah Anda menyelesaikan migrasi kode, kontainerisasi aplikasi Java Anda untuk menyiapkannya untuk penyebaran ke Azure Container Apps.

  1. Pastikan Anda telah menginstal dan menjalankan Docker.

  2. Di Visual Studio Code, buka proyek yang dimigrasikan.

  3. Di bar samping Aktivitas, buka panel ekstensi modernisasi aplikasi GitHub Copilot.

  4. Di bagian Tugas, buka Java, lalu buka Tugas Kontainerisasi dan pilih Aplikasi Kontainer.

    Cuplikan layar Visual Studio Code yang memperlihatkan tugas Aplikasi Kontainer dengan tombol Jalankan Tugas disorot.

  5. Konfirmasi setiap tindakan alat dengan memilih Lanjutkan saat diminta.

  6. Copilot melalui langkah-langkah berikut:

    • Memeriksa apakah Docker diinstal dan berjalan.
    • Memeriksa apakah kode aplikasi siap dijalankan dalam kontainer.
    • Membuat Dockerfile untuk setiap proyek.
    • Membangun gambar Docker untuk setiap proyek.
    • Membuat ringkasan hasil kontainerisasi.

Nota

Untuk hasil terbaik, gunakan model terbaru yang direkomendasikan yang ditunjukkan dalam pengaturan agen ekstensi. Copilot mungkin memerlukan beberapa iterasi untuk memperbaiki kesalahan kontainerisasi.

Untuk informasi selengkapnya tentang alat kontainerisasi, lihat repositori containerization-assist di GitHub.

Menyebarkan ke Azure Container Apps

Setelah Anda membuat kontainer aplikasi, sebarkan ke Azure Container Apps.

  1. Di Visual Studio Code, buka proyek yang dimigrasikan.

  2. Di bar samping Aktivitas, buka panel ekstensi modernisasi aplikasi GitHub Copilot.

  3. Di bagian Tugas , buka Java, lalu buka Tugas Penyebaran dan pilih salah satu opsi penyebaran berikut:

    • Sebarkan ke Infrastruktur Azure yang Ada: Copilot meminta grup sumber daya yang ada dan menyebarkan ke sumber daya yang sesuai.
    • Provisikan Infrastruktur dan Sebarkan ke Azure: Copilot membuat sumber daya Azure baru dan menyebarkan proyek Anda.

    Cuplikan layar Visual Studio Code yang memperlihatkan tugas Provisi Infrastruktur dan Sebarkan ke Azure dengan tombol Jalankan Tugas disorot.

  4. Konfirmasi setiap tindakan alat dengan memilih Lanjutkan saat diminta, dan berikan informasi yang diperlukan, seperti langganan dan grup sumber daya.

  5. Copilot mengikuti langkah-langkah berikut:

    • Menghasilkan file markdown rencana penyebaran dengan tujuan penyebaran, informasi proyek, arsitektur sumber daya Azure, sumber daya Azure, dan langkah-langkah eksekusi.
    • Mengikuti langkah eksekusi yang terdapat dalam rencana.
    • Memperbaiki semua kesalahan penyebaran.
    • Menghasilkan file ringkasan yang menjelaskan hasil penyebaran.

Nota

Untuk hasil terbaik, gunakan model terbaru yang direkomendasikan yang ditunjukkan dalam pengaturan agen ekstensi. Mungkin Copilot memerlukan beberapa iterasi untuk memperbaiki kesalahan dalam penyebaran.

Praktik terbaik pascamigrasi

Setelah Anda memigrasikan aplikasi Java ke Azure Container Apps, pertimbangkan praktik terbaik berikut:

  • Mengonfigurasi pemeriksaan kesehatan: Siapkan pemeriksaan kesehatan untuk memungkinkan Azure Container Apps memantau kesehatan aplikasi Anda.
  • Menyiapkan pengelogan: Mengonfigurasi pengelogan berbasis konsol untuk diintegrasikan dengan Azure Monitor untuk agregasi dan analisis log terpusat.
  • Mengonfigurasi aturan penskalakan: Siapkan aturan penskalakan berdasarkan lalu lintas HTTP, CPU, memori, atau metrik kustom untuk menangani berbagai beban kerja.
  • Mengelola rahasia: Gunakan manajemen rahasia Azure Container Apps atau Azure Key Vault untuk menyimpan dan mengakses nilai konfigurasi sensitif dengan aman.
  • Menyiapkan alur CI/CD: Mengotomatiskan alur penyebaran Anda menggunakan GitHub Actions atau Azure Pipelines untuk integrasi dan pengiriman berkelanjutan.
  • Aktifkan penyebaran biru-hijau: Gunakan revisi dan pemisahan lalu lintas untuk menerapkan penyebaran waktu henti nol.
  • Mengonfigurasi domain kustom: Siapkan domain dan sertifikat kustom untuk lalu lintas produksi.
  • Pantau dengan metrik dan pemberitahuan: Gunakan metrik dan pemberitahuan untuk memantau kesehatan dan performa aplikasi secara proaktif.
  • Mengaktifkan redundansi zona: Mengonfigurasi redundansi zona untuk ketersediaan tinggi di seluruh zona ketersediaan.