Memigrasikan aplikasi WebSphere ke JBoss EAP di Azure App Service
Panduan ini menjelaskan apa yang harus Anda ketahui saat Anda ingin memigrasikan aplikasi WebSphere yang ada untuk dijalankan di Azure App Service menggunakan JBoss EAP.
Pra-migrasi
Untuk memastikan keberhasilan migrasi, sebelum memulai, selesaikan langkah-langkah penilaian dan inventaris yang dijelaskan di bagian berikut.
Kapasitas server inventaris
Dokumentasikan perangkat keras (memori, CPU, disk) dari server produksi saat ini dan jumlah permintaan rata-rata dan puncak, serta pemanfaatan sumber daya. Anda akan memerlukan informasi ini terlepas dari jalur migrasi yang Anda pilih. Tindakan tersebut berguna, misalnya, untuk membantu memandu pemilihan Paket App Service.
Daftar tingkatan Paket App Service yang tersedia menunjukkan memori, inti CPU, penyimpanan, dan informasi harga. Perhatikan bahwa JBoss EAP pada App Service hanya tersedia di tingkat Paket App Service Premium V3 dan Isolated V2.
Inventaris semua rahasia
Periksa semua properti dan file konfigurasi di server produksi atau server untuk setiap rahasia dan kata sandi. Pastikan untuk memeriksa ibm-web-bnd.xml di WAR Anda. File konfigurasi yang berisi kata sandi atau info masuk juga dapat ditemukan di dalam aplikasi Anda. File-file ini mungkin termasuk, untuk aplikasi Spring Boot, file application.properties atau application.yml.
Inventaris semua sertifikat
Dokumentasikan semua sertifikat yang digunakan untuk titik akhir SSL publik. Anda bisa melihat semua sertifikat di server produksi dengan menjalankan perintah berikut ini:
keytool -list -v -keystore <path to keystore>
Memvalidasi bahwa versi Java yang didukung berfungsi dengan benar
JBoss EAP di Azure App Service mendukung Java 8 dan 11. Oleh karena itu, Anda harus memvalidasi bahwa aplikasi Anda dapat berjalan dengan benar menggunakan versi yang didukung tersebut. Validasi ini sangat penting jika server Anda saat ini menggunakan JDK yang didukung (seperti Oracle JDK atau IBM OpenJ9).
Untuk mendapatkan versi Java Anda saat ini, masuk ke server produksi Anda dan jalankan perintah berikut:
java -version
Inventaris sumber daya JNDI
Inventarisasikan semua sumber daya JNDI. Beberapa sumber daya, seperti broker pesan JMS, mungkin memerlukan migrasi atau konfigurasi ulang.
Di dalam aplikasi Anda
Periksa file WEB-INF/ibm-web-bnd.xml dan/atau file WEB-INF/web.xml.
Menentukan apakah database telah digunakan
Jika aplikasi Anda menggunakan database apa pun, Anda perlu mengambil informasi berikut:
- Nama datasource.
- Konfigurasi kumpulan koneksi.
- Lokasi file JAR driver JDBC.
Menentukan apakah dan bagaimana sistem berkas digunakan
Setiap penggunaan sistem file pada server aplikasi akan memerlukan konfigurasi ulang atau, dalam kasus yang jarang terjadi, perubahan arsitektur. Sistem file dapat digunakan dengan modul bersama WebSphere atau dengan kode aplikasi Anda. Anda dapat mengidentifikasi beberapa atau semua skenario berikut.
Konten statis baca-saja
Jika aplikasi Anda saat ini menyajikan konten statis, Anda memerlukan lokasi alternatif untuk itu. Anda mungkin ingin mempertimbangkan untuk memindahkan konten statik ke Azure Blob Storage dan menambahkan Azure CDN untuk unduhan secepat kilat secara global. Untuk informasi selengkapnya, lihat Hosting situs web statis di Penyimpanan Azure dan Mulai Cepat: Mengintegrasikan akun Microsoft Azure Storage dengan Azure CDN. Anda juga dapat langsung menyebarkan konten statis ke aplikasi dalam paket Azure Spring Apps Enterprise. Untuk informasi selengkapnya, lihat Menyebarkan file statis web.
Konten statis yang diterbitkan secara dinamis
Jika aplikasi Anda memungkinkan konten statis yang diunggah/ diproduksi oleh aplikasi Anda tetapi tidak dapat diubah setelah pembuatannya, Anda dapat menggunakan Azure Blob Storage dan Azure CDN seperti yang dijelaskan di atas, dengan Azure Function untuk menangani unggahan dan refresh CDN. Kami telah menyediakan implementasi sampel untuk penggunaan Anda di Pengunggahan dan pramuat CDN konten statis dengan Azure Functions. Anda juga dapat langsung menyebarkan konten statis ke aplikasi dalam paket Azure Spring Apps Enterprise. Untuk informasi selengkapnya, lihat Menyebarkan file statis web.
Konten dinamis atau internal
Untuk file yang sering ditulis dan dibaca oleh aplikasi Anda (seperti file data sementara), atau file statis yang hanya terlihat oleh aplikasi, Anda bisa memasang Azure Storage ke sistem file App Service Anda. Untuk informasi selengkapnya, lihat Menyajikan konten Azure Storage pada App Service di Linux.
Menentukan apakah aplikasi Anda bergantung pada pekerjaan terjadwal atau tidak
Pekerjaan terjadwal, seperti tugas Quartz Scheduler atau pekerjaan cron Unix, TIDAK boleh digunakan dengan Azure App Service. Azure App Service tidak akan mencegah Anda menyebarkan aplikasi yang berisi tugas terjadwal secara internal. Namun, apabila skala aplikasi Anda diperluas, pekerjaan terjadwal yang sama dapat berjalan lebih dari satu kali per periode yang dijadwalkan. Situasi ini dapat menyebabkan konsekuensi yang tidak diinginkan.
Untuk menjalankan tugas terjadwal di Azure, pertimbangkan untuk menggunakan Azure Functions dengan Pemicu Timer. Untuk informasi selengkapnya, lihat Pemicu timer untuk Azure Functions. Anda tidak perlu memigrasikan kode pekerjaan itu sendiri ke dalam suatu fungsi. Fungsi ini cukup memanggil URL di aplikasi Anda untuk memicu pekerjaan.
Catatan
Untuk mencegah penggunaan berbahaya, Anda mungkin perlu memastikan bahwa titik akhir pemanggilan pekerjaan memerlukan info masuk. Dalam hal ini, fungsi pemicu perlu memberikan info masuk.
Menentukan apakah koneksi ke lokal diperlukan
Jika aplikasi Anda perlu mengakses salah satu layanan lokal Anda, Anda harus menyediakan salah satu layanan konektivitas Azure. Untuk informasi selengkapnya, lihat Memilih solusi untuk menyambungkan jaringan lokal ke Azure. Atau, Anda harus memfaktor ulang aplikasi untuk menggunakan API yang tersedia untuk umum yang diekspos sumber daya lokal Anda.
Menentukan apakah Antrean atau Topik Java Message Service (JMS) sedang digunakan
Jika aplikasi Anda menggunakan JMS Queues atau Topik, Anda harus memigrasikannya ke server JMS yang dihosting secara eksternal. Azure Service Bus dan Advanced Message Queuing Protocol (AMQP) dapat menjadi strategi migrasi yang bagus bagi mereka yang menggunakan JMS. Untuk informasi selengkapnya, lihat Menggunakan JMS dengan Azure Service Bus dan AMQP 1.0.
Jika penyimpanan persisten JMS telah dikonfigurasi, Anda harus menangkap konfigurasinya dan menerapkannya setelah migrasi.
Tentukan apakah aplikasi Anda menggunakan API khusus WebSphere
Jika aplikasi Anda menggunakan API khusus WebSphere, Anda harus merefaktor aplikasi agar TIDAK menggunakannya. Peralatan Migrasi Red Hat untuk Aplikasi dapat membantu menghapus dan merefaktor dependensi ini.
Menentukan apakah aplikasi Anda menggunakan Entity Beans atau EJB 2.x-style CMP Beans
Jika aplikasi Anda menggunakan Entity Beans atau EJB 2.x style CMP beans, Anda harus merefaktor aplikasi untuk menghapus dependensi ini.
Tentukan apakah fitur Klien Aplikasi JavaEE digunakan
Jika Anda memiliki aplikasi klien yang terhubung ke aplikasi (server) Anda menggunakan fitur JavaEE Application Client, Anda harus merefaktor aplikasi klien dan aplikasi (server) Anda untuk menggunakan API HTTP.
Tentukan apakah aplikasi Anda berisi kode khusus OS
Jika aplikasi Anda berisi kode apa pun dengan dependensi pada OS host, Anda harus melakukan refaktor untuk menghapus dependensi tersebut. Misalnya, Anda mungkin perlu mengganti penggunaan /
atau \
di jalur sistem file dengan File.Separator
atau Paths.get
.
Tentukan apakah timer EJB sedang digunakan
Jika aplikasi Anda menggunakan timer EJB, Anda harus memvalidasi bahwa kode timer EJB dapat dipicu oleh setiap instans EAP JBoss secara independen. Validasi ini diperlukan karena ketika App Service Anda diskalakan secara horizontal, setiap timer EJB akan dipicu pada instans EAP JBoss-nya sendiri.
Menentukan apakah konektor JCA sedang digunakan
Jika aplikasi Anda menggunakan konektor JCA, Anda harus memvalidasi bahwa konektor JCA dapat digunakan di JBoss EAP. Jika implementasi JCA terkait dengan WebSphere, Anda harus merefaktor aplikasi Anda untuk menghapus dependensi pada konektor JCA. Jika konektor JCA dapat digunakan, Anda harus menambahkan JAR ke classpath server. Anda juga harus meletakkan file konfigurasi yang diperlukan di lokasi yang benar dalam direktori server JBoss EAP agar tersedia.
Menentukan apakah JAAS sedang digunakan
Jika aplikasi Anda menggunakan JAAS, Anda harus mengetahui bagaimana JAAS tersebut dikonfigurasi. Jika konfigurasi tersebut menggunakan database, Anda dapat mengonversikannya menjadi domain JAAS di JBoss EAP. Jika konfigurasi tersebut menggunakan implementasi khusus, Anda harus memvalidasi bahwa konfigurasi tersebut dapat digunakan pada JBoss EAP.
Menentukan apakah aplikasi Anda menggunakan Adaptor Sumber Daya
Jika aplikasi Anda memerlukan Adaptor Sumber Daya (RA), aplikasi tersebut harus kompatibel dengan JBoss EAP. Tentukan apakah RA berfungsi dengan baik pada instans mandiri JBoss EAP dengan menyebarkan RA ke server dan mengonfigurasikannya dengan benar. Jika RA berfungsi dengan baik, Anda harus menambahkan JAR ke classpath server dari instance App Service dan meletakkan file konfigurasi yang diperlukan di lokasi yang benar dalam direktori server JBoss EAP agar tersedia.
Menentukan apakah aplikasi Anda terdiri dari beberapa WAR
Jika aplikasi Anda terdiri dari beberapa WAR, Anda harus memperlakukan masing-masing WAR tersebut sebagai aplikasi terpisah dan melalui panduan ini untuk masing-masing WAR.
Menentukan apakah aplikasi Anda dikemas sebagai EAR
Jika aplikasi Anda dikemas sebagai file EAR, pastikan untuk memeriksa file application.xml dan ibm-application-bnd.xml serta merekam konfigurasinya.
Identifikasi semua proses dan daemon luar yang berjalan di server produksi
Jika Anda memiliki proses yang berjalan di luar server aplikasi, seperti memantau daemon, Anda harus menghilangkannya atau memigrasikannya di tempat lain.
Migration
Perangkat Migrasi Red Hat untuk Aplikasi
The Red Hat Migration Toolkit untuk Aplikasi adalah ekstensi gratis untuk Visual Studio Code. Ekstensi ini menganalisis kode dan konfigurasi aplikasi Anda guna memberikan rekomendasi untuk memigrasikan aplikasi Jakarta EE Anda ke JBoss EAP dari server aplikasi lain, seperti menghapus dependensi pada API kepemilikan. Ekstensi juga akan memberikan rekomendasi jika Anda bermigrasi dari lokal ke cloud. Untuk informasi selengkapnya, lihat Gambaran umum Peralatan Migrasi untuk aplikasi.
Isi panduan ini akan membantu Anda mengatasi komponen lain dari perjalanan migrasi, seperti memilih tipe Paket App Service yang benar, mengeksternalisasi keadaan sesi Anda, dan menggunakan Azure untuk mengelola instans EAP Anda, alih-alih antarmuka Manajemen JBoss.
Menyediakan paket App Service
Dari daftar paket layanan yang , pilih paket yang spesifikasinya memenuhi atau melebihi spesifikasi perangkat keras produksi saat ini.
Catatan
Jika Anda berencana untuk menjalankan penyebaran pementasan/kenari atau menggunakan slot penyebaran, paket App Service harus menyertakan kapasitas tambahan tersebut. Sebaiknya gunakan paket Premium atau yang lebih tinggi untuk aplikasi Java.
Membuat paket App Service tersebut.
Membuat dan menyebarkan aplikasi web
Anda harus membuat Aplikasi Web di Paket App Service untuk setiap file WAR yang disebarkan ke server JBoss EAP Anda.
Catatan
Meskipun dimungkinkan untuk menyebarkan beberapa file WAR ke satu aplikasi web, tindakan ini sangat tidak diinginkan. Menyebarkan beberapa file WAR ke satu aplikasi web mencegah setiap aplikasi menskalakan sesuai dengan tuntutan penggunaannya sendiri. Tindakan ini juga menambah kerumitan pada jalur penyebaran berikutnya. Jika beberapa aplikasi harus tersedia di satu URL, pertimbangkan untuk menggunakan solusi perutean seperti Azure Application Gateway.
Aplikasi Maven
Jika aplikasi Anda dibangun dari file POM Maven, gunakan plugin Webapp untuk Maven untuk membuat Aplikasi Web dan menyebarkan aplikasi Anda. Untuk informasi selengkapnya, lihat bagian Mengonfigurasi plugin Maven di Mulai Cepat: Membuat aplikasi Java di Azure App Service.
Aplikasi Non-Maven
Jika Anda tidak dapat menggunakan plugin Maven, Anda harus memprovisikan Aplikasi Web melalui mekanisme lain, seperti:
Setelah Anda membuat aplikasi web, gunakan salah satu mekanisme penyebaran yang tersedia untuk menerapkan aplikasi Anda. Untuk informasi selengkapnya, lihat Menyebarkan file ke App Service.
Memigrasikan opsi runtime JVM
Jika aplikasi Anda memerlukan opsi runtime tertentu, gunakan mekanisme yang paling tepat untuk menentukannya. Untuk informasi selengkapnya, lihat bagian Atur opsi runtime Java dari Mengonfigurasi aplikasi Java untuk Azure App Service.
Mengisi rahasia
Gunakan Pengaturan Aplikasi guna menyimpan rahasia khusus untuk aplikasi Anda. Jika Anda bermaksud menggunakan rahasia atau rahasia yang sama di antara beberapa aplikasi, atau Anda memerlukan kebijakan akses dan kemampuan audit yang terperinci, gunakan referensi Azure Key Vault sebagai gantinya. Untuk informasi selengkapnya, lihat bagian Menggunakan Referensi KeyVault di Mengonfigurasi aplikasi Java untuk Azure App Service.
Mengonfigurasi domain dan SSL kustom
Jika aplikasi Anda akan terlihat di domain kustom, Anda harus memetakan aplikasi web Anda ke sana. Untuk informasi, lihat Tutorial: Memetakan nama DNS kustom yang sudah ada ke Azure App Service.
Anda kemudian harus mengikat sertifikat TLS/SSL untuk domain tersebut ke Aplikasi Web App Service Anda. Untuk informasi selengkapnya, lihat Mengamankan nama DNS kustom dengan pengikatan data TLS/SSL di Azure App Service.
Memigrasikan sumber data, pustaka, dan sumber daya JNDI
Untuk memigrasikan sumber data, ikuti langkah-langkah di bagian Mengonfigurasi sumber data di Mengonfigurasi aplikasi Java untuk Azure App Service.
Migrasikan dependensi classpath tingkat server tambahan dengan mengikuti petunjuk di bagian JBoss EAP di Mengonfigurasi aplikasi Java untuk Azure App Service.
Migrasikan semua sumber daya JDNI tingkat server bersama tambahan. Untuk informasi selengkapnya, lihat bagian JBoss EAP dari Mengonfigurasi aplikasi Java untuk Azure App Service.
Catatan
Jika Anda mengikuti arsitektur satu WAR per aplikasi yang direkomendasikan, pertimbangkan untuk memigrasikan pustaka classpath tingkat server dan sumber daya JNDI ke dalam aplikasi Anda. Tindakan tersebut akan menyederhanakan tata kelola komponen dan manajemen perubahan secara signifikan. Jika Anda ingin menyebarkan lebih dari satu WAR per aplikasi, Anda harus meninjau salah satu panduan pendamping kami yang disebutkan di awal panduan ini.
Memigrasikan pekerjaan terjadwal
Minimal, Anda harus memindahkan tugas terjadwal ke VM Azure sehingga tugas tersebut tidak lagi menjadi bagian dari aplikasi Anda. Sebagai alternatif, Anda dapat memilih untuk memodernisasi tugas terjadwal tersebut menjadi Java yang digerakkan oleh peristiwa menggunakan layanan Azure seperti Azure Functions, SQL Database, dan Azure Event Hubs.
Mulai ulang dan pengujian awal
Terakhir, Anda harus memulai ulang Aplikasi Web untuk menerapkan semua perubahan konfigurasi. Setelah selesai memulai ulang, verifikasi bahwa aplikasi Anda berjalan dengan benar.
Pasca-migrasi
Sekarang setelah Anda memigrasikan aplikasi Anda ke Azure App Service, Anda harus memverifikasi bahwa aplikasi tersebut berfungsi sesuai harapan. Setelah Anda melakukannya, kami memiliki beberapa rekomendasi untuk Anda yang dapat membuat aplikasi Anda lebih Cloud native.
Rekomendasi
Jika Anda memilih untuk menggunakan direktori /beranda untuk penyimpanan file, pertimbangkan untuk menggantinya dengan Azure Storage. Untuk informasi selengkapnya, lihat Memasang Azure Storage sebagai bagian lokal dalam kontainer kustom di App Service.
Jika Anda memiliki konfigurasi di direktori /beranda yang berisi string koneksi, kunci SSL, dan informasi rahasia lainnya, pertimbangkan untuk menggunakan Azure Key Vault dan injeksi parameter dengan pengaturan aplikasi jika memungkinkan. Untuk informasi selengkapnya, lihat Menggunakan referensi Key Vault untuk App Service dan Azure Functions serta Mengonfigurasi aplikasi App Service.
Pertimbangkan untuk menggunakan slot penyebaran untuk penyebaran yang andal tanpa waktu henti. Untuk informasi selengkapnya, lihat Menyiapkan staging environment dalam Azure App Service.
Merancang dan menerapkan strategi DevOps. Untuk menjaga keandalan sekaligus meningkatkan kecepatan pengembangan Anda, pertimbangkan untuk mengotomatiskan penyebaran dan pengujian dengan Azure Pipelines. Untuk informasi selengkapnya, lihat Membangun & menyebarkan ke aplikasi web Java. Jika Anda menggunakan slot penyebaran, Anda dapat mengotomatiskan penyebaran ke slot dan pertukaran slot berikutnya. Untuk informasi selengkapnya, lihat bagian Menyebarkan ke slot di Menyebarkan Aplikasi Web Azure.
Merancang dan menerapkan strategi kelangsungan bisnis dan pemulihan bencana. Untuk aplikasi yang sangat penting, pertimbangkan arsitektur penyebaran multi-wilayah. Untuk informasi selengkapnya, lihat Aplikasi web multi-wilayah yang sangat tersedia.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk