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